Pārlūkot izejas kodu

다음ep 쿼리수정

jsh77b 4 gadi atpakaļ
vecāks
revīzija
5e45c1c80b

+ 158 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbGoodsEp.xml

@@ -1025,6 +1025,164 @@
 	
 	<!-- EP다음 현재 데이터 생성 -->
 	<insert id="createCurrentEpDaum" parameterType="GoodsEp" timeout="360">
+		/* TsbGoodsEp.createCurrentEpDaum */
+		WITH GOODS_DATA AS (
+			SELECT G.GOODS_CD
+			     , G.ITEMKIND_CD
+			     , G.GOODS_GB
+			     , G.ORIGIN_CD
+			     , G.LIST_PRICE
+			     , G.CURR_PRICE
+			     , G.MIN_ORD_QTY
+			     , G.FOREIGN_BUY_YN
+			     , G.GOODS_NM
+			     , G.GOODS_NUM
+			     , G.PNT_PRATE
+			     , G.SELF_GOODS_YN
+			     , G.ADULT_YN
+			     , G.GOODS_TNM
+			     , G.REG_DT
+			     , G.GOODS_STAT
+				 , G.SELF_MALL_YN
+				 , G.SELL_STDT
+				 , G.SELL_EDDT
+			     , B.BRAND_ENM
+			     , B.BRAND_KNM
+			     , B.DISP_NM_LANG
+			     , I.ITEMKIND_NM
+			     , DFP.DELV_FEE_CRITE
+			     , DFP.DELV_FEE
+			     , DFP.MIN_ORD_AMT
+			FROM   TB_DELV_FEE_POLICY DFP
+			INNER  JOIN TB_GOODS G
+			ON     G.DELV_FEE_CD = DFP.DELV_FEE_CD
+			AND    G.SUPPLY_COMP_CD = DFP.SUPPLY_COMP_CD     
+			INNER  JOIN TB_BRAND B
+			ON     G.BRAND_CD = B.BRAND_CD
+			INNER  JOIN TB_ITEMKIND I
+			ON     G.ITEMKIND_CD = I.ITEMKIND_CD
+			WHERE  1=1
+			<choose>
+			    <when test='epType == "SUMMARY"'> <!-- 요약EP -->
+				AND    G.UPD_DT >= DATE_ADD(NOW(), INTERVAL -7 HOUR)
+				    </when>
+				    <otherwise> <!-- 전체EP -->
+				AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+				AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+				AND    G.SELL_STDT <![CDATA[<=]]> NOW() /*유효한 판매기간*/
+				AND    G.SELL_EDDT <![CDATA[>=]]> NOW() /*유효한 판매기간*/
+				AND    G.ADULT_YN = 'N' /*성인상품아닌넘만*/
+			    </otherwise>
+			</choose>
+			AND    NOT EXISTS (SELECT 1
+					           FROM   TB_GOODS_EP_SKIP
+					           WHERE  GOODS_CD = G.GOODS_CD
+					           AND    NOW() BETWEEN APPLY_STDT AND APPLY_EDDT)
+		)
+		SELECT 'CURR'                                                                                              AS GB         /*구분(PREV:이전, CURR:현재)*/
+		     , G.GOODS_CD                                                                                          AS MAPID      /*상품ID*/
+		     , G.LIST_PRICE                                                                                        AS LPRICE     /*정상가*/
+		     , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY                                              AS PRICE      /*즉시할인이적용된가격*/
+		     , IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY                                              AS MPRIC      /*즉시할인이적용된가격*/
+		     , SUBSTRING(CONCAT(CASE WHEN CC1.CD IN ('G073_12','G073_13') THEN CONCAT('[',CC1.CD_NM,']')
+		                             WHEN G.FOREIGN_BUY_YN = 'Y' THEN '[해외]'
+		                             ELSE ''
+		                        END,
+		                       '[',CASE WHEN G.DISP_NM_LANG = 'EN' THEN G.BRAND_ENM ELSE G.BRAND_KNM END,'] ',
+		                       G.GOODS_NM,
+		                       IFNULL(G.GOODS_NUM,'')),1,100)                                                      AS PNAME      /*상품명*/
+		     , CONCAT(#{goodsDtlUrl},G.GOODS_CD)                                                                   AS PGURL      /*PC상세URL*/
+		     , GI.IMAGE_LINK                                                                                       AS IGURL      /*이미지URL*/
+		     , SUBSTRING_INDEX(G.ITEMKIND_NM,'>',1)                                                                AS CATE1      /*카테고리명1*/
+		     , SUBSTRING(G.ITEMKIND_CD,1,2)                                                                        AS CAID1      /*카테고리ID1*/
+		     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',2),'>',-1) THEN
+		                NULL
+		            ELSE
+		                SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',2),'>',-1)
+		       END                                                                                                 AS CATE2      /*카테고리명2*/
+		     , SUBSTRING(G.ITEMKIND_CD,3,2)                                                                        AS CAID2      /*카테고리ID2*/
+		     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',3),'>',-1) THEN
+		                NULL
+		            ELSE
+		                SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',3),'>',-1)
+		       END                                                                                                 AS CATE3      /*카테고리명3*/
+		     , SUBSTRING(G.ITEMKIND_CD,5,2)                                                                        AS CAID3      /*카테고리ID3*/
+		     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',4),'>',-1) THEN
+		                NULL
+		            ELSE
+		                SUBSTRING_INDEX(SUBSTRING_INDEX(G.ITEMKIND_NM,'>',4),'>',-1)
+		       END                                                                                                 AS CATE4      /*카테고리명4*/
+		     , SUBSTRING(G.ITEMKIND_CD,7,2)                                                                        AS CAID4      /*카테고리ID4*/
+		     , G.GOODS_NUM                                                                                         AS MODEL      /*모델(품번)*/
+		     , IF(G.DISP_NM_LANG = 'EN',G.BRAND_ENM,G.BRAND_KNM)                                                   AS BRAND      /*브랜드명*/
+		     , SUBSTRING(GNI.NI_CONTENT,1,50)                                                                      AS MAKER      /*제조사*/
+		     , TEC.COUPON                                                                                                        /*쿠폰*/
+		     , TEC.COUPON                                                                                          AS MCOUPON    /*모바일쿠폰*/
+		     , IFE.INTEREST_FREE_EVENT                                                                             AS PCARD      /*무이자행사*/
+		     , CONCAT('',G.PNT_PRATE)                                                                              AS POINT      /*포인트율*/
+		     , IFNULL(CASE WHEN G.DELV_FEE_CRITE = 'G078_20' /*무료*/ THEN
+		                       0
+		                   ELSE /*조건부무료 또는 유료*/
+		                       CASE WHEN G.MIN_ORD_AMT <![CDATA[<=]]> IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY THEN
+		                                0
+		                            ELSE
+		                                G.DELV_FEE
+		                       END
+		              END,0)                                                                                       AS DELIV      /*배송료*/
+		     , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 1 ELSE 3 END                                                   AS DELIVTERM  /*배송기간(자사상품:1일,입점상품:3일)*/
+		     , CASE WHEN GS.SCORE IS NULL OR GS.SCORE = 0.0 THEN ''
+		            ELSE CONCAT(IFNULL(GS.SCORE,0),'/',5)
+		       END                                                                                                 AS RATING     /*상품평평점*/
+		     , IFNULL(GS.REVIEW_REG_CNT,0)                                                                         AS REVCT      /*상품평수*/
+		     , G.GOODS_TNM                                                                                         AS EVENT      /*상품셀링문구*/
+		     , SUBSTRING_INDEX(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^',1)                                         AS CARDDN     /*카드행사*/
+		     , SUBSTRING(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),INSTR(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^') + 1) AS CARDP      /*카드할인가*/
+		     , G.ADULT_YN                                                                                          AS ADULT      /*성인여부*/
+		     , DATE_FORMAT(G.REG_DT,'%Y%m%d')                                                                      AS PUBDATE    /*등록일*/
+		     , G.GOODS_STAT
+		     , G.SELF_MALL_YN
+		     , G.SELL_STDT
+		     , G.SELL_EDDT
+		FROM   GOODS_DATA G
+		LEFT   OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP 
+		ON     G.GOODS_CD = GBP.GOODS_CD
+		LEFT   OUTER JOIN TB_GOODS_SUMMARY GS 
+		ON     G.GOODS_CD = GS.GOODS_CD
+		LEFT   OUTER JOIN TB_EP_GOODS_IMG GI 
+		ON     G.GOODS_CD = GI.GOODS_CD
+		LEFT   OUTER JOIN TB_EP_GOODS_ADD_IMG GAI 
+		ON     G.GOODS_CD = GAI.GOODS_CD
+		LEFT   OUTER JOIN (
+		    SELECT ITEMKIND_CD
+		         , MIN(EP_CATE_CD) AS EP_CATE_CD
+		    FROM   TB_EP_CATE
+		    WHERE  EP_GB = '10' /*네이버*/
+		    AND    USE_YN = 'Y'
+		    GROUP  BY ITEMKIND_CD
+		) EC ON G.ITEMKIND_CD = EC.ITEMKIND_CD
+		LEFT   OUTER JOIN TB_GOODS_RES_SELL GRS 
+		ON     G.GOODS_CD = GRS.GOODS_CD
+		AND    GRS.DELV_RES_DT >= NOW()
+		AND    GRS.USE_YN = 'Y'
+		LEFT   OUTER JOIN TB_EP_CARD_EVENT CE 
+		ON     G.GOODS_CD = CE.GOODS_CD
+		LEFT   OUTER JOIN TB_EP_COUPON TEC 
+		ON     G.GOODS_CD = TEC.GOODS_CD
+		LEFT   OUTER JOIN TB_EP_INTEREST_FREE_EVENT IFE 
+		ON     G.GOODS_CD = IFE.GOODS_CD
+		LEFT   OUTER JOIN TB_GOODS_NOTI_INFO GNI 
+		ON     G.GOODS_CD = GNI.GOODS_CD
+		AND    GNI.NI_ITEM_CD = 'G005_005' /*제조사*/
+		LEFT   OUTER JOIN TB_COMMON_CODE CC1 
+		ON     G.GOODS_GB = CC1.CD
+		AND    CC1.CD_GB = 'G073'
+		LEFT   OUTER JOIN TB_COMMON_CODE CC2 
+		ON     G.ORIGIN_CD = CC2.CD
+		AND    CC2.CD_GB = 'G076'
+	</insert>
+
+	<!-- EP다음 현재 데이터 생성 -->
+	<insert id="createCurrentEpDaum_BACK" parameterType="GoodsEp" timeout="360">
 		/* TsbGoodsEp.createCurrentEpDaum */
 		INSERT INTO TB_EP_DAUM (
 		       GB