Explorar o código

쿠폰 수정

sowon4187 %!s(int64=5) %!d(string=hai) anos
pai
achega
673e0e018e

+ 12 - 1
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -94,7 +94,7 @@ public interface TsfCouponDao {
 	 * @author sowon
 	 * @since 2021. 03. 17
 	 */
-	Coupon getCouponDetailInfo(int cpnId);
+	Coupon getCouponDetailInfo(Coupon coupon);
 	
 	/**
 	 * 마이페이지 등급쿠폰 다운가능 쿠폰 정보 조회
@@ -127,4 +127,15 @@ public interface TsfCouponDao {
 	Coupon getCustGradePolicyCoupon(Coupon coupon);
 	
 	
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author sowon
+	 * @since 2021. 03. 17
+	 */
+	Coupon getPlanCouponDetailInfo(Coupon coupon);
+	
+	
+	
 }

+ 23 - 2
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -433,6 +433,8 @@ public class TsfCouponService {
 	 */
 	public Collection<Coupon> getMypageCouponList(Coupon coupon) {
 		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
 		return couponDao.getMypageCouponList(coupon);
 	}
 	
@@ -445,6 +447,8 @@ public class TsfCouponService {
 	 */
 	public Coupon getMypageCouponInfo(Coupon param) {
 		param.setCustNo(TsfSession.getInfo().getCustNo());
+		param.setFrontGb(TsfSession.getFrontGb());
+		param.setSiteCd(TscConstants.Site.STYLE24.value());
 		return couponDao.getMypageCouponInfo(param);
 	}
 	
@@ -455,8 +459,11 @@ public class TsfCouponService {
 	 * @author sowon
 	 * @since 2021. 03. 16
 	 */
-	public Coupon getCouponDetailInfo(int cpnId) {
-		return couponDao.getCouponDetailInfo(cpnId);
+	public Coupon getCouponDetailInfo(Coupon coupon) {
+		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		return couponDao.getCouponDetailInfo(coupon);
 	}
 	
 	
@@ -585,5 +592,19 @@ public class TsfCouponService {
 		}
 		return resultCnt;
 	}
+	
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param cpnId
+	 * @return
+	 * @author sowon
+	 * @since 2021. 04. 14
+	 */
+	public Coupon getPlanCouponDetailInfo(Coupon coupon) {
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		return couponDao.getPlanCouponDetailInfo(coupon);
+	}
+	
 
 }

+ 4 - 13
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1311,22 +1311,13 @@ public class TsfMypageController extends TsfBaseController {
 	 * @author sowon	
 	 * @since 2021. 03. 17
 	 */
-	@GetMapping(value = "/coupon/detailPop")
-	public ModelAndView mypageCouponDetailPop(@RequestParam(value = "cpnId") int cpnId) {
+	@PostMapping(value = "/coupon/detailPop")
+	public ModelAndView mypageCouponDetailPop(@RequestBody Coupon coupon) {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
-		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(cpnId));
-		// 쿠폰적용대상 - 공급업체 조회
-		mav.addObject("cpnDtlRefvalSupplyCompList", coreCouponService.getCouponRefvalSupplyCompList(cpnId));
-		// 쿠폰적용대상 - 적용상품 조회
-		mav.addObject("cpnDtlRefvalApplyGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
-		// 쿠폰적용대상 - 카테고리 조회
-		mav.addObject("cpnDtlRefvalCateList", coreCouponService.getCouponRefvalCategoryList(cpnId));
-		// 쿠폰적용대상 - 브랜드 조회
-		mav.addObject("cpnDtlRefvalBrandList", coreCouponService.getCouponRefvalBrandList(cpnId));
-		// 쿠폰적용대상 - 제외상품 조회
-		mav.addObject("cpnDtlRefvalExceptGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
+		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
+		
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCouponDetailForm"));
 		return mav;
 	}

+ 21 - 12
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -238,6 +238,24 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 기획전 쿠폰 상세보기 팝업
+	 *
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 04. 14
+	 */
+	@PostMapping(value = "/coupon/detailPop")
+	public ModelAndView planningCouponDetailPop(@RequestBody Coupon coupon) {
+		ModelAndView mav = new ModelAndView();
+
+		// 쿠폰 - 기본정보
+		mav.addObject("couponDetailInfo", couponService.getPlanCouponDetailInfo(coupon));
+		
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCouponDetailForm"));
+		return mav;
+	}
+	
 	/**
 	 * 기획전/이벤트 댓글 리스트
 	 *
@@ -303,21 +321,11 @@ public class TsfPlanningController extends TsfBaseController {
 	 * @since 2021. 04. 01
 	 */
 	@GetMapping(value = "/coupon/detail")
-	public ModelAndView mypageCouponDetailPop(@RequestParam(value = "cpnId") int cpnId) {
+	public ModelAndView mypageCouponDetailPop(@RequestBody Coupon coupon) {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
-		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(cpnId));
-		// 쿠폰적용대상 - 공급업체 조회
-		mav.addObject("cpnDtlRefvalSupplyCompList", coreCouponService.getCouponRefvalSupplyCompList(cpnId));
-		// 쿠폰적용대상 - 적용상품 조회
-		mav.addObject("cpnDtlRefvalApplyGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
-		// 쿠폰적용대상 - 카테고리 조회
-		mav.addObject("cpnDtlRefvalCateList", coreCouponService.getCouponRefvalCategoryList(cpnId));
-		// 쿠폰적용대상 - 브랜드 조회
-		mav.addObject("cpnDtlRefvalBrandList", coreCouponService.getCouponRefvalBrandList(cpnId));
-		// 쿠폰적용대상 - 제외상품 조회
-		mav.addObject("cpnDtlRefvalExceptGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
+		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningCouponDetailForm"));
 		return mav;
 	}
@@ -581,6 +589,7 @@ public class TsfPlanningController extends TsfBaseController {
 		if (count > 0) {
 			result.set("msg", "이미 출석체크 되었습니다.");
 		}else {
+			// 여기서 한번 더 풀어야 할듯?
 			planningService.saveAttendEntry(plan);
 			result.set("msg", "출석체크 되었습니다.");
 			result.set("custAttendList",planningService.getCustAttendEntryList(plan));

+ 266 - 178
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -431,146 +431,50 @@
 	
 	<select id="getMypageCouponList" resultType="Coupon" parameterType="Coupon">
 		/* TsfCoupon.getMypageCouponList */
-		SELECT T.*
-		FROM 
-		(
-			SELECT z.*
-			FROM 
-			(
-				SELECT TC.CPN_ID
-				     ,TC.CPN_NM
-				     ,TC.CPN_DESC
-				     ,TC.SITE_CD
-				     ,TC.CPN_TYPE
-				     ,(CASE TC.APPLY_SCOPE WHEN 'A' THEN '전체' 
-				     				 	   WHEN 'I' THEN '개별' END) AS APPLY_SCOPE 
-				     ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				 	  WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				     ,TC.DC_PVAL
-				     ,TC.DC_MVAL
-				     ,TC.DC_AVAL
-				     ,TC.MAX_DC_AMT
-				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
-				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
-				     ,TC.AVAIL_DAYS
-				     ,TC.CUST_PUB_LIMIT_QTY
-				     ,TC.TOT_PUB_LIMIT_QTY
-				     ,TC.ONE_PUB_QTY
-				     ,TC.DN_GB
-				     ,TC.DOWN_STDT
-				     ,TC.DOWN_EDDT
-				     ,TC.BUY_LIMIT_AMT
-				     ,TC.PLAN_SQ
-				     ,TC.REISSUANCE
-				     ,TC.CPN_STAT
-				     ,TC.END_ALIM_YN
-				     ,TC.FIRST_ORD_YN
-				     ,TC.DOWN_ABL_YN
-				     ,TC.DC_CD_GB
-				     ,TC.CUST_JOIN_STDT
-				     ,TC.CUST_JOIN_EDDT
-				     ,TC.BUY_STDT
-				     ,TC.BUY_EDDT
-				     ,TC.NEW_CUST_YN
-				     ,IF(NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT , 'Y','N') AS USER_YN
-				     , A.CUST_NO
-				     , A.USED_DT
-				     , A.CNT
-				FROM TB_COUPON TC INNER JOIN 
-											(
-												SELECT 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , COUNT(*) AS CNT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-												     FROM TB_CUST_COUPON
-												     WHERE CUST_NO = #{custNo}
-					                                     AND USED_DT IS NULL
-					                                     AND NOW() BETWEEN AVAIL_STDT AND AVAIL_EDDT
-												GROUP BY 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-											)A ON TC.CPN_ID = A.CPN_ID 
-				WHERE 1=1
-					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-			)Z
-			UNION 
-			SELECT F.*
-			FROM 
-			(
-				SELECT TC.CPN_ID
-				     ,TC.CPN_NM
-				     ,TC.CPN_DESC
-				     ,TC.SITE_CD
-				     ,TC.CPN_TYPE
-				     ,(CASE TC.APPLY_SCOPE WHEN 'A' THEN '전체' 
-				     				 	   WHEN 'I' THEN '개별' END) AS APPLY_SCOPE 
-				     ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				 	  WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				     ,TC.DC_PVAL
-				     ,TC.DC_MVAL
-				     ,TC.DC_AVAL
-				     ,TC.MAX_DC_AMT
-				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
-				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
-				     ,TC.AVAIL_DAYS
-				     ,TC.CUST_PUB_LIMIT_QTY
-				     ,TC.TOT_PUB_LIMIT_QTY
-				     ,TC.ONE_PUB_QTY
-				     ,TC.DN_GB
-				     ,TC.DOWN_STDT
-				     ,TC.DOWN_EDDT
-				     ,TC.BUY_LIMIT_AMT
-				     ,TC.PLAN_SQ
-				     ,TC.REISSUANCE
-				     ,TC.CPN_STAT
-				     ,TC.END_ALIM_YN
-				     ,TC.FIRST_ORD_YN
-				     ,TC.DOWN_ABL_YN
-				     ,TC.DC_CD_GB
-				     ,TC.CUST_JOIN_STDT
-				     ,TC.CUST_JOIN_EDDT
-				     ,TC.BUY_STDT
-				     ,TC.BUY_EDDT
-				     ,TC.NEW_CUST_YN
-			         ,IF(NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT , 'Y','N') AS USER_YN
-				     , A.CUST_NO
-				     , A.USED_DT
-				     , A.CNT
-				FROM TB_COUPON TC INNER JOIN 
-											(
-												SELECT 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , COUNT(*) AS CNT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-												     FROM TB_CUST_COUPON
-												     WHERE CUST_NO = #{custNo}
-					                                   AND USED_DT IS NULL
-					                                   AND AVAIL_EDDT BETWEEN DATE_ADD(NOW(), INTERVAL -3 MONTH) AND AVAIL_EDDT
-												GROUP BY 
-												       CUST_NO
-												     , CPN_ID
-												     , USED_DT
-												     , AVAIL_STDT 
-												     , AVAIL_EDDT 
-											)A ON TC.CPN_ID = A.CPN_ID 
-				WHERE 1=1
-					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-			)F
-		)T
-		ORDER BY T.USER_YN DESC, T.AVAIL_EDDT
+		SELECT CC.CPN_ID                    /*쿠폰ID*/
+		     , C.CPN_NM                     /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT              /*구매제한금액*/
+		     , C.MAX_DC_AMT                 /*최대할인금액*/
+		     , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		            WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		            WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		       END             AS DC_VAL    /*할인값*/
+		     , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'                                                                                             
+		            ELSE '%'
+		       END             AS DC_WAY    /*할인방법*/
+		     , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		              END
+		             ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                   ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		              END)     AS USE_CONDITION  /*사용조건*/
+		     , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		            ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		       END             AS ISSUE_CONDITION /*발급수량*/
+		     , CC.AVAIL_STDT                /*유효시작일자*/
+		     , CC.AVAIL_EDDT                /*유효종료일자*/
+		     , CC.CPN_CNT                   /*보유쿠폰수*/
+		     , CC.EXPIRE_YN                 /*만료여부*/
+		FROM   (
+		        SELECT CC.CPN_ID
+		             , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d') AS AVAIL_STDT  /*유효시작일자*/
+		             , DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d') AS AVAIL_EDDT  /*유효종료일자*/
+		             , COUNT(*)                              AS CPN_CNT /*보유쿠폰수*/
+		             , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
+		                        ELSE 'N'
+		                   END)                              AS EXPIRE_YN /*만료여부*/
+		        FROM   TB_CUST_COUPON CC
+		        WHERE  1 = 1
+		        AND    CC.CUST_NO = #{custNo} /**P*/
+		        AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
+		        AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
+		        GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
+		       ) CC
+		     , TB_COUPON C
+		WHERE  CC.CPN_ID = C.CPN_ID
+		AND    C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		AND    C.SITE_CD = #{siteCd}
+		ORDER  BY CC.EXPIRE_YN, CC.AVAIL_EDDT
 	</select>
 	
 	<select id="getMypageCouponInfo" resultType="Coupon" parameterType="Coupon">
@@ -601,44 +505,228 @@
 	
 	<select id="getCouponDetailInfo" resultType="Coupon" parameterType="Coupon">
 		/* TsfCoupon.getCouponDetailInfo -- custNo 변경 예정*/
-		SELECT A.CPN_ID
-		     ,A.CPN_NM
-		     ,A.CPN_DESC
-		     ,A.SITE_CD
-		     ,A.AF_LINK_CD
-		     ,A.CPN_TYPE
-		     ,A.APPLY_SCOPE
-		     ,A.DC_WAY
-		     ,A.DC_PVAL
-		     ,A.DC_MVAL
-		     ,A.DC_AVAL
-		     ,A.MAX_DC_AMT
-		     ,A.PD_GB
-		     ,DATE_FORMAT(A.AVAIL_STDT,'%Y-%m-%d') AS AVAIL_STDT
-		     ,DATE_FORMAT(A.AVAIL_EDDT,'%Y-%m-%d') AS AVAIL_EDDT
-		     ,A.AVAIL_DAYS
-		     ,A.CUST_PUB_LIMIT_QTY
-		     ,A.TOT_PUB_LIMIT_QTY
-		     ,A.ONE_PUB_QTY
-		     ,A.DN_GB
-		     ,A.DOWN_STDT
-		     ,A.DOWN_EDDT
-		     ,A.BUY_LIMIT_AMT
-		     ,A.PLAN_SQ
-		     ,A.REISSUANCE
-		     ,A.CPN_STAT
-		     ,A.END_ALIM_YN
-		     ,A.FIRST_ORD_YN
-		     ,A.DOWN_ABL_YN
-		     ,A.DC_CD_GB
-		     ,A.CUST_JOIN_STDT
-		     ,A.CUST_JOIN_EDDT
-		     ,A .BUY_STDT
-		     ,A.BUY_EDDT
-		     ,A.NEW_CUST_YN
-		FROM TB_COUPON A
-		WHERE 1=1
-		 AND A.CPN_ID = #{cpnId}
+		SELECT Z.CPN_ID                                /*쿠폰ID*/
+		     , Z.CPN_NM                                /*쿠폰명*/
+		     , Z.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , Z.MAX_DC_AMT                            /*최대할인금액*/
+		     , Z.DC_VAL                                /*할인값*/
+		     , Z.DC_WAY                                /*할인방법*/
+		     , Z.USE_CONDITION                         /*사용조건*/
+		     , Z.ISSUE_CONDITION                       /*발급조건*/
+		     , Z.AVAIL_STDT                            /*유효시작일자*/
+		     , Z.AVAIL_EDDT                            /*유효종료일자*/
+		     , Z.CPN_CNT                               /*보유쿠폰수*/
+		     , Z.EXPIRE_YN                             /*만료여부*/
+		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		FROM
+		(
+		WITH TAB_COUPON AS (
+		    SELECT CC.CPN_ID                          /*쿠폰ID*/
+		         , C.CPN_NM                           /*쿠폰명*/
+		         , C.BUY_LIMIT_AMT                    /*구매제한금액*/
+		         , C.MAX_DC_AMT                       /*최대할인금액*/
+		         , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		                WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		                WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		           END             AS DC_VAL          /*할인값*/
+		         , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                ELSE '%'
+		           END             AS DC_WAY          /*할인방법*/
+		         , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                       ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		                  END
+		                 ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                       ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		                  END)     AS USE_CONDITION   /*사용조건*/
+		         , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		                ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		           END             AS ISSUE_CONDITION /*발급조건*/
+		         , CC.AVAIL_STDT                      /*유효시작일자*/
+		         , CC.AVAIL_EDDT                      /*유효종료일자*/
+		         , CC.CPN_CNT                         /*보유쿠폰수*/
+		         , CC.EXPIRE_YN                       /*만료여부*/
+		    FROM   (
+		            SELECT CC.CPN_ID
+		                 , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT  /*유효시작일자*/
+		                 , DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i') AS AVAIL_EDDT  /*유효종료일자*/
+		                 , COUNT(*)                              AS CPN_CNT /*보유쿠폰수*/
+		                 , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
+		                            ELSE 'N'
+		                       END)                              AS EXPIRE_YN /*만료여부*/
+		            FROM   TB_CUST_COUPON CC
+		            WHERE  1 = 1
+		            AND    CC.CUST_NO = #{custNo}
+		            AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
+		            AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
+		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
+		           ) CC
+		         , TB_COUPON C
+		    WHERE  CC.CPN_ID = C.CPN_ID
+		    AND    C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		    AND    C.SITE_CD = #{siteCd}
+		)
+		, 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   TAB_COUPON C
+		         , TB_COUPON_REFVAL CR
+		    WHERE  C.CPN_ID = CR.CPN_ID
+		    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.CPN_ID                                /*쿠폰ID*/
+		     , C.CPN_NM                                /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , C.MAX_DC_AMT                            /*최대할인금액*/
+		     , C.DC_VAL                                /*할인값*/
+		     , C.DC_WAY                                /*할인방법*/
+		     , C.USE_CONDITION                         /*사용조건*/
+		     , C.ISSUE_CONDITION                       /*발급조건*/
+		     , C.AVAIL_STDT                            /*유효시작일자*/
+		     , C.AVAIL_EDDT                            /*유효종료일자*/
+		     , C.CPN_CNT                               /*보유쿠폰수*/
+		     , C.EXPIRE_YN                             /*만료여부*/
+		     , CONCAT(CR.REF_VAL,CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                              ELSE ''
+		                         END) AS TGT_CONDITION /*대상조건*/
+		FROM   TAB_COUPON C
+		     , TAB_COUPON_REFVAL2 CR
+		WHERE  C.CPN_ID = CR.CPN_ID
+		AND C.CPN_ID = #{cpnId}
+		ORDER  BY C.EXPIRE_YN, C.AVAIL_EDDT
+		)Z
+	</select>
+	
+	<select id="getPlanCouponDetailInfo" resultType="Coupon" parameterType="Coupon">
+		/* TsfCoupon.getPlanCouponDetailInfo */
+		SELECT Z.CPN_ID                                /*쿠폰ID*/
+		     , Z.CPN_NM                                /*쿠폰명*/
+		     , Z.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , Z.MAX_DC_AMT                            /*최대할인금액*/
+		     , Z.DC_VAL                                /*할인값*/
+		     , Z.DC_WAY                                /*할인방법*/
+		     , Z.USE_CONDITION                         /*사용조건*/
+		     , Z.ISSUE_CONDITION                       /*발급조건*/
+		     , Z.AVAIL_STDT
+		     , Z.AVAIL_EDDT
+		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		FROM
+		(
+		WITH TAB_COUPON AS (
+		    SELECT C.CPN_ID                          /*쿠폰ID*/
+		         , C.CPN_NM                           /*쿠폰명*/
+		         , C.BUY_LIMIT_AMT                    /*구매제한금액*/
+		         , C.MAX_DC_AMT                       /*최대할인금액*/
+		         , DATE_FORMAT(C.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT
+		         , DATE_FORMAT(C.AVAIL_EDDT,'%Y.%m.%d %H:%i') AS AVAIL_EDDT
+		         , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		                WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		                WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		           END             AS DC_VAL          /*할인값*/
+		         , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                ELSE '%'
+		           END             AS DC_WAY          /*할인방법*/
+		         , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                       ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		                  END
+		                 ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                       ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		                  END)     AS USE_CONDITION   /*사용조건*/
+		         , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		                ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		           END             AS ISSUE_CONDITION /*발급조건*/
+		    FROM  TB_COUPON C
+		    WHERE C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		     AND    C.SITE_CD = #{siteCd}
+		)
+		, 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   TAB_COUPON C
+		         , TB_COUPON_REFVAL CR
+		    WHERE  C.CPN_ID = CR.CPN_ID
+		    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.CPN_ID                                /*쿠폰ID*/
+		     , C.CPN_NM                                /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT                         /*구매제한금액*/
+		     , C.MAX_DC_AMT                            /*최대할인금액*/
+		     , C.DC_VAL                                /*할인값*/
+		     , C.DC_WAY                                /*할인방법*/
+		     , C.USE_CONDITION                         /*사용조건*/
+		     , C.ISSUE_CONDITION                       /*발급조건*/
+		     , C.AVAIL_STDT
+		     , C.AVAIL_EDDT
+		     , CONCAT(CR.REF_VAL,CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                              ELSE ''
+		                         END) AS TGT_CONDITION /*대상조건*/
+		FROM   TAB_COUPON C
+		     , TAB_COUPON_REFVAL2 CR
+		WHERE  C.CPN_ID = CR.CPN_ID
+		AND C.CPN_ID = #{cpnId}
+		)Z
+				
 	</select>
 	
 	<!-- 기획전 다운가능 쿠폰 정보 조회 -->

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

@@ -1143,7 +1143,7 @@
 		/* TsfPlanning.saveAttendEntry */	
 		INSERT INTO TB_PLAN_ENTRY
 		        ( 
-		        , PLAN_SQ
+		         PLAN_SQ
 		        , ENTRY_CUST_NO
 		        , ENTRY_DT
 		        , ENTRY_VAL1

+ 27 - 43
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponDetailFormWeb.html

@@ -17,48 +17,32 @@
  *******************************************************************************
  -->
 <!-- 쿠폰 상세보기 팝업 -->
-<div class="modal-dialog" role="document">
-    <div class="modal-content">
-        <div class="modal-header">
-            <h5 class="modal-title" th:text="${couponDetailInfo.cpnNm}"></h5>
-        </div>
-        <div class="modal-body">
-            <div class="pop_cont">
-                <p th:if="${couponDetailInfo.buyLimitAmt < 1}"><strong>사용조건</strong>제한없음</p>
-                <p th:unless="${couponDetailInfo.buyLimitAmt < 1}"><strong>사용조건</strong>[[${#numbers.formatInteger(couponDetailInfo.buyLimitAmt,0,'COMMA')}]]원 이상 구매 시 최대 [[${#numbers.formatInteger(couponDetailInfo.maxDcAmt,0,'COMMA')}]]원 할인 </p>
-                <p th:if="${couponDetailInfo.custPubLimitQty < 1}"><strong>발급수량</strong>제한없음</p>
-                <p th:unless="${couponDetailInfo.custPubLimitQty < 1}"><strong>발급수량</strong>1인 최대 [[${#numbers.formatInteger(couponDetailInfo.custPubLimitQty,0,'COMMA')}]] 매</p>
-                <p><strong>유효기간</strong>[[${couponDetailInfo.availStdt}]] ~ [[${couponDetailInfo.availEddt}]]</p>
-             
-                <p><strong>브랜드</strong>
-                   <th:block th:each="BrandData, BrandStat : ${cpnDtlRefvalBrandList}">
-                		[[${BrandData.brandEnm}]],
-               		</th:block>
-                </p>
-                
-                <p><strong>카테고리</strong>
-                	<th:block th:each="CateData, CateStat : ${cpnDtlRefvalCateList}">
-                		[[${CateData.cateNm}]],
-                	</th:block>
-                </p>
-                
-                <p><strong>상품</strong>
-                	<th:block th:each="GoodsData, GoodsStat : ${cpnDtlRefvalApplyGoodsList}">
-                		[[${GoodsData.goodsNm}]],
-                	</th:block>
-                </p>
-                
-                <p><strong>제외상품</strong>
-                	<th:block th:each="ExceptData, ExceptStat : ${cpnDtlRefvalExceptGoodsList}">
-                		[[${ExceptData.goodsNm}]],
-               		</th:block>
-                </p>
-                
+<div class="modal-header">
+    <h5 class="modal-title" id="couponInfoLabel" th:text="${couponDetailInfo.cpnNm}"></h5>
+</div>
+<div class="modal-body">
+    <div class="pop_cont">
+        <dl>
+            <div>
+                <dt>사용조건</dt>
+                <dd  th:text="${couponDetailInfo.useCondition}"></dd>
+            </div>
+            <div>
+                <dt>발급수량</dt>
+                <dd th:if="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}"th:text="${couponDetailInfo.issueCondition}"></dd>
+                <dd th:unless="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}">제한없음</dd>
+            </div>
+            <div>
+                <dt>유효기간</dt>
+                <dd>
+                    <span th:text="${couponDetailInfo.availStdt}"></span>&nbsp;~&nbsp;<span th:text="${couponDetailInfo.availEddt}"></span>
+                </dd>
             </div>
-        </div>
-        <div class="modal-footer">
-            <p>본 쿠폰은 특정 상품&#47;행사에 적용되는 쿠폰이며,적용가능여부는 상품별 상이할 수 있습니다.</p>
-            <p>본 이벤트는 당사 사정에 따라 사전고지 없이 변경 또는 조기종료 될 수 있습니다.</p>
-        </div>
+            <div th:if="${couponDetailInfo.tgtCondition!=null}">
+                <dt>대상조건</dt>
+                <dd th:text="${couponDetailInfo.tgtCondition}"> 
+                </dd>
+            </div>
+        </dl>
     </div>
-</div>
+</div>

+ 29 - 15
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html

@@ -64,34 +64,36 @@
 											<li>
 												<!-- 쿠폰사용 기한 -->
 												<div
-													th:class="${CouponData.userYn == 'Y' ? 'coupon' : 'coupon disable'}">
+													th:class="${CouponData.expireYn == 'N' ? 'coupon' : 'coupon disable'}">
 													<div>
 														<p class="cp_name" th:text="${CouponData.cpnNm}"></p>
 														<p class="cp_cont">
-															<th:block th:if="${CouponData.dcWay == '할인율'}">
-																<span><em th:text="${CouponData.dcPval}"></em>%</span>
+															<th:block th:if="${CouponData.dcWay == '%'}">
+																<span><em th:text="${CouponData.dcVal}"></em>%</span>
 															</th:block>
-															<th:block th:unless="${CouponData.dcWay == '할인율'}">
+															<th:block th:unless="${CouponData.dcWay == '%'}">
 																<span><em
-																	th:text="${#numbers.formatInteger(CouponData.dcPval,0,'COMMA')}"></em>원</span>
+																	th:text="${#numbers.formatInteger(CouponData.dcVal,0,'COMMA')}"></em>원</span>
 															</th:block>
 
 														</p>
 														<p class="cp_condition">
-															[[${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}]]원
+															<!-- [[${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}]]원
 															이상 구매 시 최대
 															[[${#numbers.formatInteger(CouponData.maxDcAmt,0,'COMMA')}]]원
-															할인 <span><em class="tag primary_line"
-																th:text="${CouponData.cnt}+' 장 보유'"></em></span>
+															할인  -->
+															[[${CouponData.useCondition}]]
+															<span><em class="tag primary_line"
+																th:text="${CouponData.cpnCnt}+' 장 보유'"></em></span>
 														</p>
 													</div>
-													<th:block th:if="${CouponData.userYn == 'Y'}">
+													<th:block th:if="${CouponData.expireYn == 'Y'}">
 														<p class="cp_date">
 															<span th:text="${CouponData.availStdt}"></span>&nbsp;~&nbsp;<span
 																th:text="${CouponData.availEddt}"></span>
 														</p>
 													</th:block>
-													<th:block th:unless="${CouponData.userYn == 'Y'}">
+													<th:block th:unless="${CouponData.expireYn == 'Y'}">
 														<p class="cp_date">사용완료</p>
 													</th:block>
 
@@ -125,7 +127,14 @@
 		</div>
 		<!-- // CONT-BODY -->
 		<!-- 쿠폰 사용 내역 팝업 -->
-		<div class="modal fade dp_coupon_pop"  id="coupon_modal_02" tabindex="-1" role="dialog"	aria-labelledby="PopupBasicLabel" aria-hidden="true"></div>
+		<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <!-- 쿠폰사용안내 팝업 내용 -->      
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+		</div>
 
 		<!-- // container -->
 		<script th:inline="javascript">
@@ -134,14 +143,19 @@ let couponList = ([[${couponList}]]);
 
 // 사용안내 모달
 var useInfoCoupon = function (id) {
+	var data = {cpnId : id};
+	var jsonData = JSON.stringify(data);
+	
 	 $.ajax( {
-		type		: "GET",
-		url 		: '/mypage/coupon/detailPop?cpnId='+ id,
+		type		: "POST",
+		url 		: '/mypage/coupon/detailPop',
+		data		: jsonData,
+		contentType: 'application/json',
 		dataType 	: 'html',
 		success 	: function(result) {
 			if (result != null) {
-				$("#coupon_modal_02").html(result);
-				$("#coupon_modal_02").modal("show");
+				$("#couponInfoPop").html(result);
+				$("#couponInfoPop").modal("show");
 			}
 		}
 	});

+ 14 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -238,7 +238,13 @@
   </div>       
   
 
-<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true"></div>
+<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <!-- 쿠폰사용안내 팝업 내용 -->      
+			</div>
+		</div>
+</div>
 <form id="pollListForm" name="pollListForm" th:action="@{'/planning/event/poll/form'}" th:method="post">
 	<input type="hidden" name="planSq" th:value="${planInfo.planSq}"/>
 </form>
@@ -668,9 +674,14 @@ if(coupon.length>0){
 
 //사용안내 모달
 var useInfoCoupon = function (id) {
+	var data = {cpnId : id};
+	var jsonData = JSON.stringify(data);
+	
 	 $.ajax( {
-		type		: "GET",
-		url 		: '/planning/coupon/detail?cpnId='+ id,
+		type		: "POST",
+		url 		: '/planning/coupon/detailPop',
+		data		: jsonData,
+		contentType: 'application/json',
 		dataType 	: 'html',
 		success 	: function(result) {
 			if (result != null) {