Przeglądaj źródła

Merge branch 'eskim' into develop

eskim 4 lat temu
rodzic
commit
17cd5bccf6

+ 162 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -504,6 +504,168 @@
 		
 	<!-- 상품 혜택가 목록 -->
 	<sql id="getGoodsBenefitList_sql">
+		WITH CTE AS (
+		SELECT CPN_REFVAL_SQ
+		FROM TB_COUPON CP
+		INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_ID=CPR.CPN_ID
+		WHERE  CP.SITE_CD = 'G000_10'
+		AND    CP.CPN_STAT = 'G232_11'   -- 쿠폰인 진행중인 쿠폰만
+		AND    NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
+		AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
+		AND    CP.DC_CD_GB = 'G233_00'		         -- 일반유형(할인쿠폰구분)
+		AND    CP.APPLY_SCOPE = 'I'
+		AND 	CPR.DEL_YN = 'N'
+		)
+		, CTE_DETAIL AS (
+		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
+		        FROM CTE CP
+		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
+		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.GOODS_CD
+		        WHERE CPR.CPN_TARGET = 'G260_10'
+
+		        UNION
+
+		        /* 적용대상:카테고리*/
+		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
+		        FROM  CTE CP
+		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
+		        INNER JOIN
+		                    (SELECT LEAF_CATE_NO
+		                          , CATE_LVL
+		                          , CATE_NO
+		                     FROM (
+		                    	   SELECT LEAF_CATE_NO ,
+		                                CASE WHEN X = 1 THEN 'CATE1_NO'  -- 컬럼과 매핑(컬럼명)
+		                                     WHEN X = 2 THEN 'CATE2_NO'
+		                                     WHEN X = 3 THEN 'CATE3_NO'
+		                                     WHEN X = 4 THEN 'CATE4_NO'
+		                                     ELSE  'CATE5_NO'
+		                                END CATE_LVL,
+		                                CASE WHEN X = 1 THEN CATE1_NO  -- 컬럼과 매핑(컬럼 데이터)
+		                                     WHEN X = 2 THEN CATE2_NO
+		                                     WHEN X = 3 THEN CATE3_NO
+		                                     WHEN X = 4 THEN CATE4_NO
+		                                     ELSE  CATE5_NO
+		                                 END CATE_NO
+		                           FROM (
+		                                  ( SELECT LEAF_CATE_NO
+		                                         , CATE1_NO
+		                                         , CATE2_NO
+		                                         , CATE3_NO
+		                                         , CATE4_NO
+		                                         , CATE5_NO
+		                                    FROM  TB_CATE_4SRCH
+		                                    WHERE SITE_CD = 'G000_10'
+		                                    AND CATE_TYPE = 'G031_10') A, -- 상품타입
+		                                  (SELECT 1 AS X		-- UNPIVOT 컬럼 수 만큼 선언
+		                                   UNION ALL SELECT 2 AS X
+		                                   UNION ALL SELECT 3 AS X
+		                                   UNION ALL SELECT 4 AS X
+		                                   UNION ALL SELECT 5 AS X
+		                                 ) B
+		                                )
+		                           ORDER BY LEAF_CATE_NO, CATE_LVL
+		                          ) K
+		                          WHERE CATE_NO IS NOT NULL
+		                                ) X ON CPR.REF_VAL=X.CATE_NO
+		        INNER JOIN TB_CATE_GOODS Y  ON X.LEAF_CATE_NO = Y.CATE_NO
+		        INNER JOIN TB_GOODS G ON G.GOODS_CD=Y.GOODS_CD
+		        WHERE CPR.CPN_TARGET =  'G260_11'
+		        AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
+		        AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
+
+		        UNION
+
+		        /* 적용대상:브랜드*/
+		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.BRAND_CD GKEY, G.GOODS_CD
+		        FROM  CTE CP
+		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
+		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.BRAND_CD
+		        WHERE CPR.CPN_TARGET = 'G260_12'
+		        AND   IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
+
+		        UNION
+
+		        /* 적용대상:공급업체*/
+		        SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.SUPPLY_COMP_CD GKEY, G.GOODS_CD
+		        FROM CTE CP
+		        INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
+		        INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.SUPPLY_COMP_CD
+		        WHERE CPR.CPN_TARGET = 'G260_13'
+		 )
+		SELECT GOODS_CD
+		    , 'G100_00' AS CUST_GB
+		    , CURR_PRICE
+		    , MIN(
+		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_PVAL ,0)
+		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_PVAL / 100) / 1) * 1)
+		                 END) ) AS PC_CURR_PRICE
+		    , MIN(
+		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_MVAL ,0)
+		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_MVAL / 100) / 1) * 1)
+		            END) )AS MO_CURR_PRICE
+		    , MIN(
+		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_AVAL ,0)
+		                 ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_AVAL / 100) / 1) * 1)
+		            END) )AS MO_CURR_PRICE
+		    , STAFF_CURR_PRICE
+		    , MIN(
+		         ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_PVAL ,0)
+		                ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / 1) * 1)
+		           END) )AS STAFF_PC_CURR_PRICE
+		    , MIN(
+		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_MVAL ,0)
+		                 ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / 1) * 1)
+		            END) )AS STAFF_MO_CURR_PRICE
+		    , MIN(
+		          ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_AVAL ,0)
+		                 ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / 1) * 1)
+		            END) )AS STAFF_APP_CURR_PRICE
+		FROM (
+		      SELECT CP.CPN_ID
+		           , CP.CPN_NM
+		           , CP.DC_WAY                                              /*할인방식*/
+		           , CP.DC_PVAL                                             /*PC 할인값*/
+		           , CP.DC_MVAL                                             /*MO 할인값*/
+		           , CP.DC_AVAL                                             /*APP 할인값*/
+		           , CP.CURR_PRICE                                          /*전체 판매가*/
+		           , CP.STAFF_CURR_PRICE                                    /*임직원판매가*/
+		           , CP.GOODS_CD
+		      FROM (
+		            SELECT CP.CPN_ID    /*쿠폰ID*/
+		                 , CP.CPN_NM    /*쿠폰명*/
+		                 , CP.DC_WAY    /*할인방식*/
+		                 , CP.DC_PVAL   /*PC할인값*/
+		                 , CP.DC_MVAL   /*모바일할인값*/
+		                 , CP.DC_AVAL   /*APP할인값*/
+		                 , G.CURR_PRICE  /*현재판매가*/
+		                 , G.CURR_PRICE AS STAFF_CURR_PRICE  /*현재판매가*/
+		                 , G.GOODS_CD
+		            FROM   CTE_DETAIL CC
+		            INNER JOIN TB_GOODS G ON CC.GOODS_CD = G.GOODS_CD
+		            INNER JOIN TB_COUPON CP ON CC.CPN_ID = CP.CPN_ID
+		            WHERE
+		            NOT EXISTS (
+		                         SELECT 1
+		                         FROM   TB_COUPON_REFVAL SCPR
+		                         WHERE  SCPR.CPN_ID = CP.CPN_ID
+		                         AND    SCPR.REF_VAL = G.GOODS_CD
+		                         AND    SCPR.DEL_YN = 'N' /*삭제안된넘*/
+		                         AND    SCPR.CPN_TARGET = '40' /* 제외상품*/
+		                       )
+		      		AND NOT EXISTS (
+		                            SELECT 1
+		                            FROM TB_COUPON_BAN_GOODS
+		                            WHERE GOODS_CD = G.GOODS_CD
+		                            AND DEL_YN = 'N'
+		                           )
+		          ) CP
+		) Y
+		GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
+	</sql>
+	
+	<!-- 상품 혜택가 목록 -->
+	<sql id="getGoodsBenefitList_sql_org">
 		SELECT GOODS_CD
 		       , 'G100_00' AS CUST_GB
 		       , CURR_PRICE