Sfoglia il codice sorgente

즉시할인 쿠폰 조건 업체, 브랜드 OR 조건 AND 조건 변경시 오류 수정

jsh77b 4 anni fa
parent
commit
8288328f80
1 ha cambiato i file con 10 aggiunte e 177 eliminazioni
  1. 10 177
      src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

+ 10 - 177
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -489,6 +489,7 @@
 	<sql id="getGoodsBenefitList_sql">
 		WITH CTE AS (
 		    SELECT CPN_REFVAL_SQ
+		         , CP.CPN_ID
 		    FROM   TB_COUPON CP
 		    INNER  JOIN TB_COUPON_REFVAL CPR 
 		    ON     CP.CPN_ID = CPR.CPN_ID
@@ -576,18 +577,19 @@
 				     , G1.GOODS_CD
 				FROM   CTE CP
 				INNER  JOIN TB_COUPON_REFVAL CPR1 
-				ON     CP.CPN_REFVAL_SQ = CPR1.CPN_REFVAL_SQ
+				ON     CP.CPN_ID = CPR1.CPN_ID
 				INNER  JOIN TB_GOODS G1 
 				ON     CPR1.REF_VAL = G1.BRAND_CD
 				AND    CPR1.CPN_TARGET = 'G260_12'
 				INNER  JOIN TB_COUPON_REFVAL CPR2 
-				ON     CP.CPN_REFVAL_SQ = CPR2.CPN_REFVAL_SQ
+				ON     CP.CPN_ID = CPR2.CPN_ID
 				INNER  JOIN TB_GOODS G2
 				ON     CPR2.REF_VAL = G2.SUPPLY_COMP_CD
 				AND    CPR2.CPN_TARGET = 'G260_13'
 				WHERE  1=1
 				AND    IFNULL(CPR1.REF_FORMAL_GB, G1.FORMAL_GB) = G1.FORMAL_GB
 				AND    CPR1.CPN_ID = CPR2.CPN_ID
+				AND    G1.GOODS_CD = G2.GOODS_CD
 		 )
 		SELECT GOODS_CD
 		     , 'G100_00' AS CUST_GB
@@ -663,184 +665,12 @@
 		    , CUST_GB
 	</sql>
 
-	<!-- 상품 혜택가 목록 -->
-	<sql id="getGoodsBenefitList_sql_org">
-		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) / #{pointUnit}) * #{pointUnit})
-		            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) / #{pointUnit}) * #{pointUnit})
-		            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) / #{pointUnit}) * #{pointUnit})
-		            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) / #{pointUnit}) * #{pointUnit})
-		            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) / #{pointUnit}) * #{pointUnit})
-		            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) / #{pointUnit}) * #{pointUnit})
-		            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   TB_GOODS G
-		                     , TB_COUPON CP
-		                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 (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_10'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.GOODS_CD
-		                                                   ) > 0
-		                        )
-		                        OR /* 적용대상:카테고리*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_11'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-		                                                   AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
-		                                                   AND REF_VAL IN (SELECT DISTINCT X.CATE_NO
-		                                                                   FROM
-		                                                                        (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,
-		                                                                        (
-		                                                                         SELECT A.CATE_NO, A.GOODS_CD
-		                                                                         FROM TB_CATE_GOODS A
-		                                                                         WHERE GOODS_CD = G.GOODS_CD
-		                                                                        ) Y
-		                                                                        WHERE X.LEAF_CATE_NO = Y.CATE_NO
-		                                                                  )
-		                                                  ) >0
-		                        )
-		                        OR /* 적용대상:브랜드*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_12'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.BRAND_CD
-		                                                   AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
-		                                                  ) >0
-		                        )
-		                        OR /* 적용대상:공급업체*/
-		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
-		                                                   WHERE CPN_ID = CP.CPN_ID
-		                                                   AND CPN_TARGET = 'G260_13'
-		                                                   AND DEL_YN = 'N'
-		                                                   AND REF_VAL = G.SUPPLY_COMP_CD
-		                                                   /*AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB*/
-		                                                  ) >0
-		                        )
-		                      )
-		                AND 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 = 'G260_14' /* 제외상품*/
-		                               )
-		                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>
-
 	<!-- 상품혜택가 temp 테이블 삭제 -->
 	<delete id="deleteGoodsBenefitPriceTemp" timeout="600">
 		/* TsbGoods.deleteGoodsBenefitPriceTemp */
 		DELETE FROM  TB_GOODS_BENEFIT_PRICE_TMP
 	</delete>
 
-
 	<!-- 상품혜택가 temp 적용 등록 -->
 	<insert id="crteateGoodsBenefitPriceTemp"  parameterType="Coupon"  timeout="600">
 		/* TsbGoods.crteateGoodsBenefitPriceTemp */
@@ -2688,7 +2518,9 @@
 		     , BENEFIT_GB
 		)
 		WITH CTE AS (
-		    SELECT CP.CPN_ID , CP.BUY_LIMIT_AMT, CPR.CPN_REFVAL_SQ
+		    SELECT CP.CPN_ID 
+		         , CP.BUY_LIMIT_AMT
+		         , CPR.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' /*전시사이트*/
@@ -2777,13 +2609,13 @@
 				     , G1.GOODS_CD
 				FROM   CTE CP
 				INNER  JOIN TB_COUPON_REFVAL CPR1 
-				ON     CP.CPN_REFVAL_SQ = CPR1.CPN_REFVAL_SQ
+				ON     CP.CPN_ID = CPR1.CPN_ID
 				INNER  JOIN TB_GOODS G1 
 				ON     CPR1.REF_VAL = G1.BRAND_CD
 				AND    CPR1.CPN_TARGET = 'G260_12'
 				AND    CP.BUY_LIMIT_AMT <![CDATA[<=]]> G1.CURR_PRICE  /*최소주문금액*/
 				INNER  JOIN TB_COUPON_REFVAL CPR2 
-				ON     CP.CPN_REFVAL_SQ = CPR2.CPN_REFVAL_SQ
+				ON     CP.CPN_ID = CPR2.CPN_ID
 				INNER  JOIN TB_GOODS G2
 				ON     CPR2.REF_VAL = G2.SUPPLY_COMP_CD
 				AND    CPR2.CPN_TARGET = 'G260_13'
@@ -2791,6 +2623,7 @@
 				WHERE  1=1
 				AND    IFNULL(CPR1.REF_FORMAL_GB, G1.FORMAL_GB) = G1.FORMAL_GB
 				AND    CPR1.CPN_ID = CPR2.CPN_ID
+				AND    G1.GOODS_CD = G2.GOODS_CD
 		)
 		SELECT G.GOODS_CD
 		     , '10'       AS BENEFIT_GB /*쿠폰할인*/