Kaynağa Gözat

front 상품상세 룩북 쿼리 core 로

eskim 5 yıl önce
ebeveyn
işleme
8fcb84aaaf

+ 25 - 1
src/main/java/com/style24/core/biz/dao/TscLookbookDao.java

@@ -1,8 +1,12 @@
 package com.style24.core.biz.dao;
 
+import java.util.Collection;
+
+import org.springframework.stereotype.Repository;
+
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Lookbook;
-import org.springframework.stereotype.Repository;
+import com.style24.persistence.domain.LookbookGoods;
 
 /**
  * 룩북 Dao
@@ -20,4 +24,24 @@ public interface TscLookbookDao {
      * @since 2021. 3. 5
      */
     void saveLookbook(Lookbook lookbook);
+    
+    /**
+	 * 룩북 베너 목록
+	 *
+	 * @param lookbook
+	 * @return
+	 * @author eskim
+	 * @date 2021. 2. 18
+	 */
+	Collection<Lookbook> getLookbookBannerList(Lookbook lookbook);
+	
+	/**
+	 * 룩북 베너별 상품 목록
+	 *
+	 * @param lookbook
+	 * @return
+	 * @author eskim
+	 * @date 2021. 2. 18
+	 */
+	Collection<LookbookGoods> getLookbookBannerGoodsList(Lookbook lookbook);
 }

+ 28 - 7
src/main/java/com/style24/core/biz/service/TscLookbookService.java

@@ -1,18 +1,21 @@
 package com.style24.core.biz.service;
 
-import com.gagaframework.web.util.GagaDateUtil;
-import com.gagaframework.web.util.GagaFileUtil;
-import com.style24.core.biz.dao.TscLookbookDao;
-import com.style24.persistence.domain.Lookbook;
-import lombok.extern.slf4j.Slf4j;
+import java.io.File;
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
-import java.io.File;
-import java.io.IOException;
+import com.style24.core.biz.dao.TscLookbookDao;
+import com.style24.persistence.domain.Lookbook;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.util.GagaDateUtil;
+import com.gagaframework.web.util.GagaFileUtil;
 
 /**
  * 룩북 Service
@@ -59,4 +62,22 @@ public class TscLookbookService {
 
         lookbookDao.saveLookbook(lookbook);
     }
+    
+    /**
+	 * 룩북
+	 *
+	 * @param lookbook
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 18
+	 */
+	public Collection<Lookbook> getLookbookList(Lookbook lookbook) {
+		Collection<Lookbook> lookbookBannerList = lookbookDao.getLookbookBannerList(lookbook);
+		
+		for (Lookbook tempLookbook : lookbookBannerList) {
+			tempLookbook.setLookbookGoodsList(lookbookDao.getLookbookBannerGoodsList(tempLookbook));
+		}
+		
+		return lookbookBannerList;
+	}
 }

+ 13 - 0
src/main/java/com/style24/persistence/domain/Lookbook.java

@@ -1,6 +1,9 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+
 import com.style24.persistence.TscBaseDomain;
+
 import lombok.Data;
 
 /**
@@ -26,4 +29,14 @@ public class Lookbook extends TscBaseDomain {
     private Integer dispOrd;        //표시순서
     private String  mainDispYn;     //메인노출여부
 
+
+    private Integer lookbookbSq;	// 룩북배너일련번호
+	private String orgFileNm;		// 원본파일명
+	private String sysFileNm;		// 시스템파일명
+
+	Collection<LookbookGoods> lookbookGoodsList;	//베너별 상품목록
+	
+	private String goodsCd; 		// 상품상세검색용
+	private String frontGb; 		// 상품상세검색용
+	private String custGb; 			// 상품상세검색용
 }

+ 89 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscLookbook.xml

@@ -37,4 +37,93 @@
 			,NOW()
 		)
 	</insert>
+	
+		<!-- 룩북 베너 목록 조회 -->
+	<select id="getLookbookBannerList" parameterType="Lookbook" resultType="Lookbook">
+		/* TsfGoods.getLookbookBannerList */
+		SELECT A.LOOKBOOK_SQ
+		     , A.BRAND_CD
+		     , A.TITLE
+		     , B.LOOKBOOKB_SQ
+		     , B.SYS_FILE_NM
+		FROM TB_LOOKBOOK A
+		INNER JOIN TB_LOOKBOOK_BANNER B ON A.LOOKBOOK_SQ = B.LOOKBOOK_SQ 
+			                            AND B.DISP_YN = 'Y'
+			                            AND B.LOOKBOOKB_SQ IN (SELECT LOOKBOOKB_SQ FROM TB_LOOKBOOK_GOODS WHERE  GOODS_CD = #{goodsCd} AND DEL_YN  ='N')
+		WHERE NOW() BETWEEN A.DISP_STDT AND A.DISP_EDDT
+		AND A.DISP_YN  = 'Y'
+		ORDER BY A.DISP_ORD, B.DISP_ORD
+	</select>
+	
+	<!-- 룩북 베너 상품 목록 조회 -->
+	<select id="getLookbookBannerGoodsList" parameterType="Lookbook" resultType="Lookbook">
+		/* TsfGoods.getLookbookBannerGoodsList */
+		SELECT Z.*
+		     , 100 - ROUND((CURR_PRICE / LIST_PRICE) * 100 ,0) AS DC_RATE
+		FROM (
+		      SELECT A.LOOKBOOK_SQ
+		           , B.LOOKBOOKB_SQ 
+		           , C.GOODS_CD 
+		           , RANK() OVER(PARTITION BY A.LOOKBOOK_SQ, B.LOOKBOOKB_SQ  ORDER BY C.DISP_ORD ) RNUM 
+		           , C.DISP_ORD 
+		           , G.GOODS_NM
+		           , CONCAT(IF(IFNULL(G.GOODS_GB,'') IN ('G073_11','G073_15', ''), '',IFNULL(CONCAT('[',FN_GET_CODE_NM('G073',G.GOODS_GB),']'),'') )
+		                   ,IF(G.FOREIGN_BUY_YN='N','[해외구매대행]','' )
+		                   ,IF(G.PARALLEL_IMPORT_YN = 'Y','[병행수입]','')
+		                   ,IF(G.ORDER_MADE_YN='Y','[주문제작]','')
+		                   ,G.GOODS_NM ) AS GOODS_FULL_NM
+		          , G.GOODS_STAT
+		          , G.MIN_ORD_QTY 
+		          , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_ENM ELSE D.BRAND_KNM END) AS BRAND_NM
+		          , G.LIST_PRICE
+		          , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD, G.CURR_PRICE,#{custGb}) AS CURR_PRICE
+		          , G.MAIN_COLOR_CD
+		          , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'00') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
+		          , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'00') AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
+		          , S.STOCK_QTY
+		          , S.SOLDOUT_YN
+		          , V.VIDEO_GB_M
+		          , V.VIDEO_VAL_M
+		          , V.VIDEO_GB_S
+		          , V.VIDEO_VAL_S
+		      FROM TB_LOOKBOOK A
+		      INNER JOIN TB_LOOKBOOK_BANNER B ON A.LOOKBOOK_SQ = B.LOOKBOOK_SQ 
+		                                      AND B.DISP_YN = 'Y'
+		                                      AND B.LOOKBOOKB_SQ = #{lookbookbSq}
+		      INNER JOIN TB_LOOKBOOK_GOODS C ON B.LOOKBOOKB_SQ  = C.LOOKBOOKB_SQ 
+		      INNER JOIN TB_GOODS G ON C.GOODS_CD = G.GOODS_CD
+		                            AND G.GOODS_STAT = 'G008_90'
+		      INNER JOIN TB_BRAND D ON G.BRAND_CD = D.BRAND_CD
+		                    AND D.USE_YN = 'Y'
+		      LEFT OUTER JOIN (SELECT GOODS_CD
+		                            , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                                       ELSE CURR_STOCK_QTY
+		                                       END) AS STOCK_QTY
+		                            , MIN(SOLDOUT_YN) AS SOLDOUT_YN
+		                       FROM VW_STOCK
+		                       WHERE DISP_YN = 'Y'
+		                       GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
+		      LEFT OUTER JOIN (SELECT MAX(GOODS_CD) AS GOODS_CD 
+		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_GB END) AS  VIDEO_GB_M
+		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_VAL END) AS  VIDEO_VAL_M
+		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_GB END) AS  VIDEO_GB_S
+		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_VAL END) AS  VIDEO_VAL_S
+		                       FROM (
+		                             SELECT A.DISPLOC_VAL AS GOODS_CD
+		                                  , B.VIDEO_GB 
+		                                  , B.VIDEO_VAL 
+		                                  , A.REG_DT 
+		                                  , RANK() OVER(PARTITION BY A.DISPLOC_VAL ORDER BY A.REG_DT ) RNUM 
+		                             FROM TB_VIDEO_DISPLOC  A
+		                             INNER JOIN  TB_VIDEO B ON A.VIDEO_SQ = B.VIDEO_SQ 
+		                                                    AND B.DISP_YN ='Y'
+		                             WHERE A.DISPLOC_GB ='G'
+		                             AND A.DISP_YN = 'Y'
+		                            ) V
+		                       ) V ON G.GOODS_CD = V.GOODS_CD
+		      WHERE NOW() BETWEEN A.DISP_STDT AND A.DISP_EDDT
+		      AND A.DISP_YN  = 'Y'
+		      AND A.LOOKBOOK_SQ = #{lookbookSq}
+		) Z
+	</select>
 </mapper>