Bläddra i källkod

상품검색 - 색상칩 추가

eskim 4 år sedan
förälder
incheckning
46090dea4f

+ 34 - 2
src/main/java/com/style24/batch/biz/dao/TsbGoodsSearchDao.java

@@ -82,6 +82,14 @@ public interface TsbGoodsSearchDao {
 	 * @since 2021. 06. 09
 	 */
 	void updateGoodsSearchTempBySelfOpt();
+	
+	/**
+	 * 상품검색-자사 옵션별생삭정보 생성
+	 *
+	 * @author eskim
+	 * @since 2021. 06. 17
+	 */
+	void updateGoodsSearchTempBySelfColor();
 
 	/**
 	 * 상품검색 - 입점 옵션정보 생성
@@ -122,14 +130,22 @@ public interface TsbGoodsSearchDao {
 	 * @since 2021. 06. 13
 	 */
 	void deleteGoodsSearchSectionTemp();
-
+	
+	/**
+	 * 상품검색 부분색인용 상품정보 생성 - 상품추가건
+	 *
+	 * @author eskim
+	 * @since 2021. 06. 17
+	 */
+	void createGoodsSearchSectionTempByGoods();
+	
 	/**
 	 * 상품검색 부분색인용 상품정보 생성 - 판매가 변경건
 	 *
 	 * @author eskim
 	 * @since 2021. 06. 13
 	 */
-	void createGoodsSearchSectionTempByPrice();
+	void saveGoodsSearchSectionTempByPrice();
 
 	/**
 	 * 상품검색 부분색인용 상품정보 생성 - 즉시할인쿠폰 변경건 
@@ -203,6 +219,22 @@ public interface TsbGoodsSearchDao {
 	 * @since 2021. 06. 15
 	 */
 	void createGoodsSearchSection();
+	
+	/**
+	 * 부분색인 상품정보 전체색인 에 적용 - PROC_GB: C
+	 *
+	 * @author eskim
+	 * @since 2021. 06. 18
+	 */
+	void updateGoodsSearchAll();
+	
+	/**
+	 * 부분색인 상품정보 전체색인 에 적용 - PROC_GB: D
+	 *
+	 * @author eskim
+	 * @since 2021. 06. 18
+	 */
+	void updateGoodsSearchAllDel();
 
 	
 }

+ 17 - 1
src/main/java/com/style24/batch/biz/service/TsbGoodsSearchService.java

@@ -65,6 +65,9 @@ public class TsbGoodsSearchService {
 
 		// 자사 옵션정보 생성
 		goodsSearchDao.updateGoodsSearchTempBySelfOpt();
+		
+		// 자사 옵션별 색상칩 생성
+		goodsSearchDao.updateGoodsSearchTempBySelfColor();
 
 		// 자사 입점정보 생성
 		goodsSearchDao.updateGoodsSearchTempBySelfNoOpt();
@@ -92,8 +95,11 @@ public class TsbGoodsSearchService {
 		// TB_GOODS_SEARCH_SECTION_TEMP 삭제
 		goodsSearchDao.deleteGoodsSearchSectionTemp();
 		
+		//신규상품
+		goodsSearchDao.createGoodsSearchSectionTempByGoods();
+		
 		//가격변경건 - 판매가, 즉시적용쿠폰
-		goodsSearchDao.createGoodsSearchSectionTempByPrice();
+		goodsSearchDao.saveGoodsSearchSectionTempByPrice();
 		goodsSearchDao.saveGoodsSearchSectionTempByCoupon();
 
 		//재고변경건
@@ -152,6 +158,9 @@ public class TsbGoodsSearchService {
 
 		// 자사 옵션정보 생성
 		goodsSearchDao.updateGoodsSearchTempBySelfOpt();
+		
+		// 자사 옵션별 색상칩 생성
+		goodsSearchDao.updateGoodsSearchTempBySelfColor();
 
 		// 입점정보 생성
 		goodsSearchDao.updateGoodsSearchTempBySelfNoOpt();
@@ -165,6 +174,13 @@ public class TsbGoodsSearchService {
 		// TB_GOODS_SEARCHS_SECTION 생성
 		goodsSearchDao.createGoodsSearchSection();
 		
+		// 부분색인 상품정보 전체색인 에 적용 - PROC_GB: C
+		goodsSearchDao.updateGoodsSearchAll();
+		
+		// 부분색인 상품정보 전체색인 에 적용 - PROC_GB: D
+		goodsSearchDao.updateGoodsSearchAllDel();
+		
+		
 	}
 
 }

+ 227 - 6
src/main/java/com/style24/persistence/mybatis/shop/TsbGoodsSearch.xml

@@ -251,6 +251,7 @@
 		/* TsbGoods.updateGoodsSearchTempBySelfOpt */
 		UPDATE TB_GOODS_SEARCH_TEMP A, (SELECT G.GOODS_CD
 		                                     , VS.OPT_CD1
+		                                     , C.COLOR_FILE
 		                                     , CC.CD AS COLOR_CD
 		                                     , CC.CD_DESC AS COLOR_CHIP /*RGB값*/
 		                                     , GROUP_CONCAT(DISTINCT CONCAT(VS.OPT_CD2 ,':' ,CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 'Y'
@@ -271,10 +272,23 @@
 		SET A.COLOR_CHIP = B.COLOR_CHIP
 		  , A.COLOR_CD = B.COLOR_CD
 		  , A.SIZES = B.SIZES
+		  , A.OPT_CD1_CHIP = COLOR_FILE
 		WHERE A.GOODS_CD = B.GOODS_CD
 		AND A.OPT_CD1 = B.OPT_CD1
 	</update>
 	
+	<!-- 상품검색 temp 자사 옵션별생삭정보 생성 -->
+	<update id="updateGoodsSearchTempBySelfColor"  parameterType="String" timeout="600">
+		/* TsbGoods.updateGoodsSearchTempBySelfColor */
+		UPDATE TB_GOODS_SEARCH_TEMP A, (SELECT GOODS_CD, GROUP_CONCAT(CONCAT(OPT_CD1,':', OPT_CD1_CHIP)) AS COLOR_CHIPS
+		                                FROM TB_GOODS_SEARCH_TEMP 
+		                                WHERE SELF_GOODS_YN = 'Y'
+		                                AND PROC_GB = 'C'
+		                                GROUP BY  GOODS_CD) B
+		SET A.COLOR_CHIPS = B.COLOR_CHIPS
+		WHERE A.GOODS_CD = B.GOODS_CD
+	</update>
+	
 	<!-- 상품검색 temp 입점 옵션정보 생성 -->
 	<update id="updateGoodsSearchTempBySelfNoOpt"  parameterType="String" timeout="600">
 		/* TsbGoods.updateGoodsSearchTempBySelfNoOpt */
@@ -359,6 +373,8 @@
 		  , SELL_STDT
 		  , SELL_EDDT
 		  , STOCK_QTY
+		  , OPT_CD1_CHIP
+		  , COLOR_CHIPS
 		  , PROC_GB
 		)
 		SELECT GOODS_CD
@@ -413,6 +429,8 @@
 		     , DATE_FORMAT(SELL_STDT, '%Y-%m-%d %H:%i:%S') AS SELL_STDT
 		     , DATE_FORMAT(SELL_EDDT, '%Y-%m-%d %H:%i:%S') AS SELL_EDDT
 		     , STOCK_QTY
+		     , OPT_CD1_CHIP
+		     , COLOR_CHIPS
 		     , PROC_GB
 		FROM TB_GOODS_SEARCH_TEMP
 	</insert>
@@ -423,9 +441,50 @@
 		DELETE FROM  TB_GOODS_SEARCH_SECTION_TEMP
 	</delete>
 	
+	<!-- 상품검색 부분색인용 상품정보 생성 - 상품추가건 -->
+	<insert id="createGoodsSearchSectionTempByGoods"  timeout="300">
+		/* TsbGoods.createGoodsSearchSectionTempByGoods */
+		INSERT INTO TB_GOODS_SEARCH_SECTION_TEMP (
+		     GOODS_CD
+		   , OPT_CD1
+		   , PROC_GB
+		)
+		SELECT GOODS_CD 
+		      ,OPT_CD1
+		      ,'C' AS PROC_GB
+		FROM (
+		    SELECT G.GOODS_CD
+		         , IFNULL(O.OPT_CD1, 'XX') AS OPT_CD1
+		    FROM   TB_GOODS G
+		    INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		                          AND B.USE_YN = 'Y'
+		    INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		                                  AND BG.USE_YN = 'Y'
+		    INNER JOIN TB_GOODS_SUMMARY GS ON G.GOODS_CD = GS.GOODS_CD
+		    INNER JOIN TB_ITEMKIND I ON  G.ITEMKIND_CD = I.ITEMKIND_CD
+		    INNER JOIN TB_GOODS_STOCK GST ON G.GOODS_CD = GST.GOODS_CD
+		                                  AND GST.STOCK_QTY > 0 
+		    LEFT OUTER JOIN  TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
+		                                 AND G.SELF_GOODS_YN = 'Y'
+		    WHERE G.SELF_MALL_YN = 'Y'                 -- 자사몰 노출
+		    AND G.GOODS_STAT = 'G008_90'               -- 상품상태 승인완료
+		    AND NOW() BETWEEN SELL_STDT AND SELL_EDDT  -- 현재 판매가능기간 
+		    AND G.PRICE_UPD_DT >= DATE_ADD(NOW(), INTERVAL -65 MINUTE)  -- 가격변경일 65분 이내
+		) Z
+		WHERE NOT EXISTS( SELECT 1
+		                    FROM TB_GOODS_SEARCH ST
+		                    WHERE ST.GOODS_CD = Z.GOODS_CD
+		                    AND ST.OPT_CD1 = Z.OPT_CD1
+		                    AND ST.PROC_GB = 'C' 
+		                  ) 
+		ON DUPLICATE KEY UPDATE
+		      PROC_GB = 'C'
+		    , DATA_UPD_DT = NOW()
+	</insert>
+	
 	<!-- 상품검색 부분색인용 상품정보 생성 - 판매가 변경건 -->
-	<insert id="createGoodsSearchSectionTempByPrice"  timeout="300">
-		/* TsbGoods.createGoodsSearchSectionTempByPrice */
+	<insert id="saveGoodsSearchSectionTempByPrice"  timeout="300">
+		/* TsbGoods.saveGoodsSearchSectionTempByPrice */
 		INSERT INTO TB_GOODS_SEARCH_SECTION_TEMP (
 		     GOODS_CD
 		   , OPT_CD1
@@ -450,7 +509,13 @@
 		                    WHERE ST.GOODS_CD = Z.GOODS_CD
 		                    AND ST.OPT_CD1 = Z.OPT_CD1
 		                    AND ST.PROC_GB = 'D'
-		                  ) 
+		                  )
+		AND EXISTS( SELECT 1
+		            FROM TB_GOODS_SEARCH ST
+		            WHERE ST.GOODS_CD = Z.GOODS_CD
+		            AND ST.OPT_CD1 = Z.OPT_CD1
+		            AND ST.PROC_GB = 'C' 
+		          ) 
 		ON DUPLICATE KEY UPDATE
 		      PROC_GB = 'C'
 		    , DATA_UPD_DT = NOW()
@@ -488,6 +553,12 @@
 		                AND ST.OPT_CD1 = Z.OPT_CD1
 		                AND ST.PROC_GB = 'D'
 		              ) 
+		AND EXISTS( SELECT 1
+		            FROM TB_GOODS_SEARCH ST
+		            WHERE ST.GOODS_CD = Z.GOODS_CD
+		            AND ST.OPT_CD1 = Z.OPT_CD1
+		            AND ST.PROC_GB = 'C' 
+		          ) 
 		ON DUPLICATE KEY UPDATE
 		      PROC_GB = 'C'
 		    , DATA_UPD_DT = NOW()
@@ -522,7 +593,13 @@
 		                WHERE ST.GOODS_CD = Z.GOODS_CD
 		                AND ST.OPT_CD1 = Z.OPT_CD1
 		                AND ST.PROC_GB = 'D'
-		              ) 
+		              )
+		AND EXISTS( SELECT 1
+		            FROM TB_GOODS_SEARCH ST
+		            WHERE ST.GOODS_CD = Z.GOODS_CD
+		            AND ST.OPT_CD1 = Z.OPT_CD1
+		            AND ST.PROC_GB = 'C' 
+		          ) 
 		ON DUPLICATE KEY UPDATE
 		      PROC_GB = 'C'
 		    , DATA_UPD_DT = NOW()
@@ -556,7 +633,13 @@
 		                WHERE ST.GOODS_CD = Z.GOODS_CD
 		                AND ST.OPT_CD1 = Z.OPT_CD1
 		                AND ST.PROC_GB = 'D'
-		              ) 
+		              )
+		AND EXISTS( SELECT 1
+		            FROM TB_GOODS_SEARCH ST
+		            WHERE ST.GOODS_CD = Z.GOODS_CD
+		            AND ST.OPT_CD1 = Z.OPT_CD1
+		            AND ST.PROC_GB = 'C' 
+		          )  
 		ON DUPLICATE KEY UPDATE
 		      PROC_GB = 'C'
 		    , DATA_UPD_DT = NOW()
@@ -601,7 +684,7 @@
 		                WHERE ST.GOODS_CD = Z.GOODS_CD
 		                AND ST.OPT_CD1 = Z.OPT_CD1
 		                AND ST.PROC_GB = 'D'
-		              ) 
+		              )
 		ON DUPLICATE KEY UPDATE
 		      PROC_GB = (CASE WHEN NULLIF(SIZES,'') IS NULL THEN 'D' ELSE 'C' END)
 		    , DATA_UPD_DT = NOW()
@@ -875,6 +958,8 @@
 		  , SELL_STDT
 		  , SELL_EDDT
 		  , STOCK_QTY
+		  , OPT_CD1_CHIP
+		  , COLOR_CHIPS
 		  , PROC_GB
 		)
 		SELECT GOODS_CD
@@ -929,8 +1014,144 @@
 		     , DATE_FORMAT(SELL_STDT, '%Y-%m-%d %H:%i:%S') AS SELL_STDT
 		     , DATE_FORMAT(SELL_EDDT, '%Y-%m-%d %H:%i:%S') AS SELL_EDDT
 		     , STOCK_QTY
+		     , OPT_CD1_CHIP
+		     , COLOR_CHIPS
 		     , PROC_GB
 		FROM TB_GOODS_SEARCH_TEMP
 	</insert>
 	
+	<!-- 부분색인 상품정보 전체색인 에 적용 - PROC_GB: C -->
+	<update id="updateGoodsSearchAll" timeout="600">
+		/* TsbGoodsSearch.updateGoodsSearchAll */
+		UPDATE TB_GOODS_SEARCH A, 
+		   (SELECT  GOODS_CD
+		          , OPT_CD1
+		          , GOODS_NM
+		          , GOODS_TNM
+		          , GOODS_GB
+		          , FOREIGN_BUY_YN
+		          , PARALLEL_IMPORT_YN
+		          , ORDER_MADE_YN
+		          , BRAND_CD
+		          , ITEMKIND_CD
+		          , FORMAL_GB
+		          , LIST_PRICE
+		          , CURR_PRICE
+		          , SELF_GOODS_YN
+		          , GOODS_STAT
+		          , SEX_GB
+		          , MAIN_COLOR_CD
+		          , SUPPLY_COMP_CD
+		          , SELF_MALL_YN
+		          , AGE_GRP_CD
+		          , SEASON_CD
+		          , GOODS_TYPE
+		          , REG_DT
+		          , BRAND_GROUP_KNM
+		          , BRAND_GROUP_ENM
+		          , BRAND_GROUP_NM
+		          , BRAND_GROUP_NO
+		          , DEFAULT_CATE_YN
+		          , BRAND_CATE_NO
+		          , ORDER_CNT
+		          , REVIEW_CNT
+		          , SIZE_GB
+		          , SIZE_GB_NM
+		          , SIZES
+		          , COLOR_CD
+		          , COLOR_CHIP
+		          , BENEFIT_GB
+		          , PC_CURR_PRICE
+		          , MO_CURR_PRICE
+		          , APP_CURR_PRICE
+		          , AD_KEYWORD
+		          , VIDEO_GB_M
+		          , VIDEO_VAL_M
+		          , VIDEO_GB_S
+		          , VIDEO_VAL_S
+		          , BYITEM_CATE_NO
+		          , BYBRAND_CATE_NO
+		          , SYS_IMG_NM
+		          , SYS_IMG_NM2
+		          , SELL_STDT
+		          , SELL_EDDT
+		          , STOCK_QTY
+		          , OPT_CD1_CHIP
+		          , COLOR_CHIPS
+		          , PROC_GB
+		    FROM TB_GOODS_SEARCH_SECTION 
+		    WHERE PROC_GB = 'C'
+		    ) B
+		SET A.GOODS_NM = B.GOODS_NM
+		  , A.GOODS_TNM = B.GOODS_TNM
+		  , A.GOODS_GB = B.GOODS_GB
+		  , A.FOREIGN_BUY_YN = B.FOREIGN_BUY_YN
+		  , A.PARALLEL_IMPORT_YN = B.PARALLEL_IMPORT_YN
+		  , A.ORDER_MADE_YN = B.ORDER_MADE_YN
+		  , A.BRAND_CD = B.BRAND_CD
+		  , A.ITEMKIND_CD = B.ITEMKIND_CD
+		  , A.FORMAL_GB = B.FORMAL_GB
+		  , A.LIST_PRICE = B.LIST_PRICE
+		  , A.CURR_PRICE = B.CURR_PRICE
+		  , A.SELF_GOODS_YN = B.SELF_GOODS_YN
+		  , A.GOODS_STAT = B.GOODS_STAT
+		  , A.SEX_GB = B.SEX_GB
+		  , A.MAIN_COLOR_CD = B.MAIN_COLOR_CD
+		  , A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		  , A.SELF_MALL_YN = B.SELF_MALL_YN
+		  , A.AGE_GRP_CD = B.AGE_GRP_CD
+		  , A.SEASON_CD = B.SEASON_CD
+		  , A.GOODS_TYPE = B.GOODS_TYPE
+		  , A.REG_DT = B.REG_DT
+		  , A.BRAND_GROUP_KNM = B.BRAND_GROUP_KNM
+		  , A.BRAND_GROUP_ENM = B.BRAND_GROUP_ENM
+		  , A.BRAND_GROUP_NM = B.BRAND_GROUP_NM
+		  , A.BRAND_GROUP_NO = B.BRAND_GROUP_NO
+		  , A.DEFAULT_CATE_YN = B.DEFAULT_CATE_YN
+		  , A.BRAND_CATE_NO = B.BRAND_CATE_NO
+		  , A.ORDER_CNT = B.ORDER_CNT
+		  , A.REVIEW_CNT = B.REVIEW_CNT
+		  , A.SIZE_GB = B.SIZE_GB
+		  , A.SIZE_GB_NM = B.SIZE_GB_NM
+		  , A.SIZES = B.SIZES
+		  , A.COLOR_CD = B.COLOR_CD
+		  , A.COLOR_CHIP = B.COLOR_CHIP
+		  , A.BENEFIT_GB = B.BENEFIT_GB
+		  , A.PC_CURR_PRICE = B.PC_CURR_PRICE
+		  , A.MO_CURR_PRICE = B.MO_CURR_PRICE
+		  , A.APP_CURR_PRICE = B.APP_CURR_PRICE
+		  , A.AD_KEYWORD = B.AD_KEYWORD
+		  , A.VIDEO_GB_M = B.VIDEO_GB_M
+		  , A.VIDEO_VAL_M = B.VIDEO_VAL_M
+		  , A.VIDEO_GB_S = B.VIDEO_GB_S
+		  , A.VIDEO_VAL_S = B.VIDEO_VAL_S
+		  , A.BYITEM_CATE_NO = B.BYITEM_CATE_NO
+		  , A.BYBRAND_CATE_NO = B.BYBRAND_CATE_NO
+		  , A.SYS_IMG_NM = B.SYS_IMG_NM
+		  , A.SYS_IMG_NM2 = B.SYS_IMG_NM2
+		  , A.SELL_STDT = DATE_FORMAT(B.SELL_STDT, '%Y-%m-%d %H:%i:%S')
+		  , A.SELL_EDDT = DATE_FORMAT(B.SELL_EDDT, '%Y-%m-%d %H:%i:%S')
+		  , A.STOCK_QTY = B.STOCK_QTY
+		  , A.OPT_CD1_CHIP = B.OPT_CD1_CHIP
+		  , A.COLOR_CHIPS = B.COLOR_CHIPS
+		  , A.PROC_GB = B.PROC_GB
+		  , A.DATA_UPD_DT = NOW()
+		WHERE A.GOODS_CD = B.GOODS_CD
+		AND A.OPT_CD1 = B.OPT_CD1
+	</update>
+	
+	<!-- 부분색인 상품정보 전체색인 에 적용 - PROC_GB: D -->
+	<update id="updateGoodsSearchAllDel" timeout="600">
+		/* TsbGoodsSearch.updateGoodsSearchAllDel */
+		UPDATE TB_GOODS_SEARCH A, (SELECT GOODS_CD
+		                                , OPT_CD1
+		                                , PROC_GB
+		                           FROM TB_GOODS_SEARCH_SECTION 
+		                           WHERE PROC_GB = 'D'
+		                          ) B
+		SET  A.PROC_GB = B.PROC_GB
+		WHERE A.GOODS_CD = B.GOODS_CD
+		AND A.OPT_CD1 = B.OPT_CD1
+	</update>
+	
 </mapper>