Browse Source

상품 룩북 쿼리

eskim 5 years ago
parent
commit
559dff5c22

+ 23 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -12,6 +12,8 @@ import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsViewHst;
+import com.style24.persistence.domain.Lookbook;
+import com.style24.persistence.domain.LookbookGoods;
 import com.style24.persistence.domain.VideoDisploc;
 
 /**
@@ -170,4 +172,25 @@ public interface TsfGoodsDao {
 	 * @date 2021. 2. 17
 	 */
 	Goods getGoodsResSell(Goods goods);
+	
+	/**
+	 * 룩북 베너 목록
+	 *
+	 * @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);
+
 }

+ 19 - 0
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -19,6 +19,7 @@ import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsViewHst;
+import com.style24.persistence.domain.Lookbook;
 import com.style24.persistence.domain.VideoDisploc;
 
 import lombok.extern.slf4j.Slf4j;
@@ -363,5 +364,23 @@ public class TsfGoodsService {
 		return resultGoods;
 	}
 
+	/**
+	 * 룩북
+	 *
+	 * @param lookbook
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 18
+	 */
+	public Collection<Lookbook> getLookbookList(Lookbook lookbook) {
+		Collection<Lookbook> lookbookBannerList = goodsDao.getLookbookBannerList(lookbook);
+		
+		for (Lookbook tempLookbook : lookbookBannerList) {
+			tempLookbook.setLookbookGoodsList(goodsDao.getLookbookBannerGoodsList(tempLookbook));
+		}
+		
+		return lookbookBannerList;
+	}
+
 
 }

+ 12 - 0
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -17,6 +17,7 @@ import com.style24.front.support.env.TsfConstants;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Lookbook;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -143,6 +144,17 @@ public class TsfGoodsController extends TsfBaseController {
 		cardPromotion.setRegNo(1); // 혜택유형별로 1건씩
 		mav.addObject("cardInfoList", goodsService.getCardPromotionList(cardPromotion));
 
+		// 쇼핑 혜택
+		// 할인혜택
+
+		// 다다익선
+
+		// 사은품
+
+		// 룩북
+		Lookbook lookbook = new Lookbook();
+		lookbook.setGoodsCd(paramsGoods.getGoodsCd());
+		mav.addObject("cardInfoList", goodsService.getLookbookList(lookbook));
 		// 오늘본 상품 쿠키 담기
 		// SSL Server
 		boolean isSslServer = Boolean.parseBoolean(hasSsl);

+ 1 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -20,6 +20,7 @@ public class Goods extends TscBaseDomain {
 	private String brandCd;		//브랜드코드
 	private String itemkindCd;		//품목코드
 	private String goodsNm;		//상품명
+	private String goodsFullNm;		// 상품FULL명
 	private String goodsTnm;		//상품타이틀명
 	private String goodsSnm;		//상품검색명
 	private String goodsSnm1;		//상품검색명1(사용자등록용)

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

@@ -0,0 +1,35 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 룩북 Domain
+ *
+ * @author eskim
+ * @since 2021. 02. 18
+ */
+@SuppressWarnings("serial")
+@Data
+public class Lookbook extends TscBaseDomain {
+
+	private Integer lookbookSq;		// 룩북일련번호
+	private String brandCd;			// 브랜드코드(브랜드)
+	private String title;			// 제목
+	private String dispStdt;		// 노출시작일시
+	private String dispEddt;		// 노출종료일시
+	private String dispYn;			// 표시여부
+	private int dispOrd;			// 표시순서
+
+	private Integer lookbookbSq;	// 룩북배너일련번호
+	private String orgFileNm;		// 원본파일명
+	private String sysFileNm;		// 시스템파일명
+
+	Collection<LookbookGoods> lookbookGoodsList;	//베너별 상품목록
+	
+	private String goodsCd; 		// 상품상세검색용
+
+}

+ 22 - 0
src/main/java/com/style24/persistence/domain/LookbookGoods.java

@@ -0,0 +1,22 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 룩북 베너별 상품 Domain
+ *
+ * @author eskim
+ * @since 2021. 02. 18
+ */
+@SuppressWarnings("serial")
+@Data
+public class LookbookGoods extends TscBaseDomain {
+
+	private Integer lookbookbSq;	// 룩북배너일련번호
+	private String goodsCd;			// 상품코드
+	private String delYn;			// 삭제여부
+	private int dispOrd;			// 표시순서
+
+}

+ 88 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -82,8 +82,11 @@
 		SELECT G.GOODS_CD
 		     , G.GOODS_NM
 		     , G.GOODS_TNM
-		     , G.GOODS_NM
-		     , CONCAT(G.GOODS_TNM,' ',G.GOODS_NM) AS GOODS_TNM_FULL
+		     , CONCAT(IF(IFNULL(G.GOODS_GB,'') IN ('G073_11','G073_15', ''), '',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.BRAND_CD
 		     , (CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END) AS BRAND_NM
 		     , B.BRAND_GRP_NM
@@ -526,4 +529,87 @@
 		LIMIT 1
 	</select>
 	
+	<!-- 룩북 베너 목록 조회 -->
+	<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 A.*
+		     , 100 - ROUND((BP.CURR_PRICE / G.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', ''), '',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(#{siteCd},#{frontGb},GOODS_CD, CURR_PRICE,#{custGb},#{floorUnit},#{custGrade}) 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
+		      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(CASE WHEN  RNUM = 1 THEN  VIDEO_VAL END) AS  VIDEO_VAL_M
+		                            , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_VAL END) AS  VIDEO_VAL_S
+		                       FROM (
+		                              SELECT 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 1=1
+		                              AND A.DISPLOC_VAL = G.GOODS_CD
+		                              AND A.DISPLOC_GB ='G'
+		                              AND A.DISP_YN = 'Y'
+		                              ) A
+		                       )
+		      WHERE NOW() BETWEEN A.DISP_STDT AND A.DISP_EDDT
+		      AND A.DISP_YN  = 'Y'
+		      AND A.LOOKBOOK_SQ = #{lookbookSq}
+		) A
+	</select>
+	
 </mapper>