|
|
@@ -116,6 +116,7 @@
|
|
|
|
|
|
<!--회원가입 쿠폰-->
|
|
|
<select id="getJoinCoupon" parameterType="Coupon" resultType="Coupon">
|
|
|
+ /* TsfCoupon.getJoinCoupon */
|
|
|
SELECT CP.CPN_ID
|
|
|
, CP.END_ALIM_YN
|
|
|
, CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
|
|
|
@@ -133,4 +134,192 @@
|
|
|
AND CP.SITE_CD = #{siteCd}
|
|
|
</select>
|
|
|
|
|
|
+ <!--상품 쿠폰 조회-->
|
|
|
+ <select id="getGoodsCouponList" parameterType="Goods" resultType="Coupon">
|
|
|
+ /* TsfCoupon.getGoodsCouponList */
|
|
|
+ SELECT A.DC_AMT
|
|
|
+ , A.DC_VAL
|
|
|
+ , A.DC_WAY
|
|
|
+ , A.CPN_ID
|
|
|
+ , A.CPN_NM
|
|
|
+ , A.CUST_PUB_LIMIT_QTY
|
|
|
+ , A.CPN_TYPE
|
|
|
+ , A.USABLE_CUST_GRADE
|
|
|
+ , DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
|
|
|
+ , IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = A.CPN_ID AND CUST_NO = #{custNo}),0) AS CUST_COUPON_CNT
|
|
|
+ , RNUM
|
|
|
+ FROM (
|
|
|
+ SELECT CPN_ID
|
|
|
+ , CPN_NM
|
|
|
+ , DC_AMT
|
|
|
+ , DC_VAL
|
|
|
+ , DC_WAY
|
|
|
+ , CUST_PUB_LIMIT_QTY
|
|
|
+ , CPN_TYPE
|
|
|
+ , AVAIL_EDDT
|
|
|
+ , USABLE_CUST_GRADE
|
|
|
+ , RANK() OVER(ORDER BY DC_AMT DESC) AS RNUM -- 할인금액순
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID -- 쿠폰ID
|
|
|
+ , CP.CPN_NM -- 쿠폰명
|
|
|
+ , CP.DC_WAY -- 할인방식
|
|
|
+ , CP.DC_VAL -- 할인값
|
|
|
+ , CP.MAX_DC_AMT -- 최대할인금액
|
|
|
+ , CP.CURR_PRICE -- 현재 판매가
|
|
|
+ , CP.CUST_PUB_LIMIT_QTY -- 1인당 발급제한수량
|
|
|
+ , CP.BUY_LIMIT_AMT -- 구매제한금액
|
|
|
+ , CP.CPN_TYPE -- 쿠폰타입
|
|
|
+ , CP.AVAIL_EDDT -- 유효일
|
|
|
+ , CP.USABLE_CUST_GRADE -- 고객등급(,구분)
|
|
|
+ <![CDATA[
|
|
|
+ , (CASE WHEN CP.DC_WAY = 'G240_10' THEN
|
|
|
+ (CASE WHEN IFNULL(CP.MAX_DC_AMT, 0) >0 AND CP.MAX_DC_AMT < CP.DC_VAL THEN CP.MAX_DC_AMT ELSE CP.DC_VAL END)
|
|
|
+ ELSE
|
|
|
+ (CASE WHEN IFNULL(CP.MAX_DC_AMT, 0) >0 AND CP.MAX_DC_AMT < FLOOR((CP.CURR_PRICE * DC_VAL / 100) / #{pointUnit}) * #{pointUnit} THEN CP.MAX_DC_AMT ELSE FLOOR((CP.CURR_PRICE * CP.DC_VAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
+ END) AS DC_AMT
|
|
|
+ ]]>
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID
|
|
|
+ , CP.CPN_NM
|
|
|
+ , CP.DC_WAY
|
|
|
+ , (CASE WHEN 'P' = #{frontGb} THEN CP.DC_PVAL
|
|
|
+ WHEN 'M' = #{frontGb} THEN CP.DC_MVAL
|
|
|
+ ELSE CP.DC_AVAL END) AS DC_VAL
|
|
|
+ , CP.MAX_DC_AMT
|
|
|
+ , CP.BUY_LIMIT_AMT
|
|
|
+ , CP.CUST_PUB_LIMIT_QTY
|
|
|
+ , CP.CPN_TYPE
|
|
|
+ , IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT) AS AVAIL_EDDT
|
|
|
+ , (SELECT GROUP_CONCAT(USABLE_CUST_GRADE) FROM TB_COUPON_CUST_GRADE WHERE CPN_ID = CP.CPN_ID) AS USABLE_CUST_GRADE
|
|
|
+ , G.GOODS_CD
|
|
|
+ , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD, G.CURR_PRICE,#{custGb}) AS CURR_PRICE
|
|
|
+ FROM TB_GOODS G
|
|
|
+ , TB_COUPON CP
|
|
|
+ WHERE G.GOODS_CD = #{goodsCd}
|
|
|
+ AND CP.SITE_CD = #{siteCd}
|
|
|
+ AND CP.CPN_STAT = 'G232_11' -- 쿠폰인 진행중인 쿠폰만
|
|
|
+ <![CDATA[
|
|
|
+ AND NOW() <= IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT)
|
|
|
+ ]]>
|
|
|
+ AND NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
|
|
|
+ AND CP.DOWN_ABL_YN = 'Y' -- 다운 가능 쿠폰
|
|
|
+ AND CP.CPN_TYPE IN ('G230_11','G230_20','G230_30') -- 상품쿠폰, 주문서쿠폰, 배송비쿠폰
|
|
|
+ AND CP.DC_CD_GB = 'G233_00' -- 일반유형(할인쿠폰구분)
|
|
|
+ AND (SELECT COUNT(1)
|
|
|
+ FROM TB_COUPON_CUST_GBN
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND USABLE_CUST_GB IN (#{custGb}) -- 사용가능고객구분
|
|
|
+ ) >= 1
|
|
|
+ AND IF (CP.TOT_PUB_LIMIT_QTY = 0, 9999999999,CP.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = CP.CPN_ID) -- 총발행제한수
|
|
|
+ AND (
|
|
|
+ (CP.APPLY_SCOPE = 'A' )
|
|
|
+ OR /* 적용대상:상품*/
|
|
|
+ (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
|
|
|
+ ) >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 = '40' -- 제외상품
|
|
|
+ )
|
|
|
+ AND NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON_BAN_GOODS
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ )
|
|
|
+ ) CP
|
|
|
+ WHERE 1 = 1
|
|
|
+ <![CDATA[
|
|
|
+ AND CP.BUY_LIMIT_AMT <= CP.CURR_PRICE -- 최소주문금액
|
|
|
+ ]]>
|
|
|
+ ) Y
|
|
|
+ ) A
|
|
|
+ WHERE 1 = 1
|
|
|
+ <if test="maxRownum != null and maxRownum > 0">
|
|
|
+ LIMIT #{maxRownum}
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
</mapper>
|