jsshin 5 лет назад
Родитель
Сommit
3b85417054
1 измененных файлов с 41 добавлено и 1 удалено
  1. 41 1
      src/main/java/com/style24/persistence/mybatis/shop/TsbCustomer.xml

+ 41 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsbCustomer.xml

@@ -585,6 +585,43 @@
 	<!--생일쿠폰 다운로드 안내 대상자-->
 	<select id="getBirthDayTargetList" parameterType="CustomerSearch" resultType="Coupon">
 		/*TsbCustomerDao.getBirthDayTargetList*/
+		WITH TAB_COUPON_REFVAL1 AS (
+		    SELECT CR.CPN_ID
+		         , CR.CPN_TARGET
+		         , CASE WHEN CR.CPN_TARGET = 'G260_10' /*상품*/ THEN (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CR.REF_VAL AND GOODS_STAT = 'G008_90')
+		                WHEN CR.CPN_TARGET = 'G260_11' /*카테고리*/ THEN
+		                    CASE WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL),0) > 0
+		                              THEN (SELECT CATE1_NM FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL),0) > 0
+		                              THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
+		                    END
+		                WHEN CR.CPN_TARGET = 'G260_12' /*브랜드*/ THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
+		                WHEN CR.CPN_TARGET = 'G260_13' /*업체*/ THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
+		           END AS REF_VAL
+		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
+		    FROM   TB_COUPON_REFVAL CR
+		    WHERE  CR.CPN_ID = '28'
+		    AND    CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		)
+		, TAB_COUPON_REFVAL2 AS (
+		    SELECT CPN_ID
+		         , CPN_TARGET
+		         , GROUP_CONCAT(REF_VAL ORDER BY RK ASC SEPARATOR '/' ) AS REF_VAL
+		         , (SELECT COUNT(*)
+		            FROM   TAB_COUPON_REFVAL1
+		            WHERE  CPN_ID = CR.CPN_ID
+		            AND    CPN_TARGET = CR.CPN_TARGET)                  AS CNT
+		    FROM   TAB_COUPON_REFVAL1 CR
+		    WHERE  1 = 1
+		    AND    (
+		            (CPN_TARGET != 'G260_12' AND RK = 1) /*브랜드 외는 1개만 노출*/
+		            OR
+		            (CPN_TARGET = 'G260_12' AND RK <![CDATA[<=]]> 2) /*브랜드만 2개 노출*/
+		           )
+		    GROUP  BY CPN_ID, CPN_TARGET
+		)
 		SELECT C.CUST_NO
 		     , C.EMAIL
 		     , C.CELL_PHNNO
@@ -616,7 +653,7 @@
 		        FROM   TB_CUST_COUPON CCP
 		        WHERE  CCP.CUST_NO = C.CUST_NO
 		        AND    CCP.CPN_ID = CO.CPN_ID
-		       )                                                                               AS CPN_CNT
+		       )                                                                            AS CPN_CNT
 		FROM   TB_CUSTOMER C
 		INNER JOIN
 		       TB_BATCH_BIRTH BB
@@ -629,6 +666,9 @@
 		       TB_COUPON CO
 		ON     CGP.GRADE_CPN_ID3 = CO.CPN_ID
 		AND    CO.CPN_STAT = 'G232_11'
+		INNER  JOIN
+		       TAB_COUPON_REFVAL2 CR
+		ON     CO.CPN_ID = CR.CPN_ID
 		WHERE  C.CUST_STAT = 'G104_10'
 		AND    C.SITE_CD = #{siteCd}
 		AND    (C.SMS_AGREE_YN = 'Y' OR C.EMAIL_AGREE_YN = 'Y')