Explorar el Código

Merge remote-tracking branch 'origin/develop' into jsh77b

tsit14 hace 4 años
padre
commit
e98a0ba2a8

+ 32 - 3
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -563,6 +563,10 @@ public class TsfCouponService {
 	 */
 	@Transactional("shopTxnManager")
 	public String getPlanCouponInfo(Coupon coupon) {
+		int downloadCnt = 1; 	// 쿠폰당 다운 받을수
+		int custPubLimitQty = 1;
+		int onePubQty = 1;
+
 		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
 		coupon.setFrontGb(TsfSession.getFrontGb());
 		coupon.setCustGb(TsfSession.getCustGb());
@@ -578,14 +582,39 @@ public class TsfCouponService {
 		}
 		Coupon temp = couponList.iterator().next();
 		temp.setCustNo(TsfSession.getInfo().getCustNo());
-		
-		
+		onePubQty = temp.getOnePubQty();	// 1회 발급당 발행수량 설정
+
+		log.info("기획전 쿠폰정보  temp {}", temp);
+
+		// 고객당 발급수량 확인
+		if (temp.getCustPubLimitQty() > 0) {
+			int tempCustCouponCnt = temp.getCustPubLimitQty() * onePubQty;
+			//if (coupon.getCustPubLimitQty() <= coupon.getCustCouponCnt()) {
+			log.info("기획전쿠폰 다운  skip: tempCustCouponCnt : {}, temp.getCustPubLimitQty() : {} , onePubQty : {}", tempCustCouponCnt, temp.getCustPubLimitQty(), onePubQty);
+			if (tempCustCouponCnt <= temp.getCustCouponCnt()) {
+				log.info("기획전쿠폰 다운  skip: 쿠폰발급수 : {}, 회원발급수 : {}", temp.getCustPubLimitQty(), temp.getCustCouponCnt());
+				result = "ERROR_30";
+				return result;
+			}
+		}
+
+		log.info("기획전쿠폰 다운 쿠폰총발급제한수  skip: temp.getTotPubLimitQty() : {}, temp.getTotCouponCnt() : {} ", temp.getTotPubLimitQty(), temp.getTotCouponCnt());
+		// 발급수 확인
 		if (temp.getTotPubLimitQty() > 0) {
-			if (temp.getCustPubLimitQty() <= temp.getCustCouponCnt()) {
+			if (temp.getTotPubLimitQty() <= temp.getTotCouponCnt()) {
+				log.info("기획전쿠폰 다운  skip: 쿠폰총발급제한수 : {}, 전체발급수 : {}", temp.getTotPubLimitQty(), temp.getTotCouponCnt());
 				result = "ERROR_30";
 				return result;
 			}
 		}
+		
+//		if (temp.getTotPubLimitQty() > 0) {
+//			if (temp.getCustPubLimitQty() <= temp.getCustCouponCnt()) {
+//				result = "ERROR_30";
+//				return result;
+//			}
+//		}
+
 		// 첫구매여부 (Y:구매이력이없음 | N:구매이력있음) - 구매기간일자 해당기간에 구매이력이 없으면 다운로드 가능
 		if ("Y".equals(temp.getFirstOrdYn())) {
 			int firstOrdcnt = orderService.getCustFirstOrderCount(temp);

+ 20 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -1166,12 +1166,26 @@
 		      ,C.CPN_DESC       
 		      ,C.CPN_TYPE 
 		      ,C.BUY_LIMIT_AMT 
-		      ,C.CUST_PUB_LIMIT_QTY 
-		      ,C.TOT_PUB_LIMIT_QTY
-		      ,C.MAX_DC_AMT 
+		      ,C.CUST_PUB_LIMIT_QTY
+		      ,IF(C.DC_CD_GB = 'G233_30', LC.DOWN_LIMIT_QTY , C.TOT_PUB_LIMIT_QTY) AS TOT_PUB_LIMIT_QTY
+		      ,C.ONE_PUB_QTY
+		      ,C.MAX_DC_AMT
 		      ,C.FIRST_ORD_YN
 		      , IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO = #{custNo}),0) AS CUST_COUPON_CNT
-		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		      , (
+		          CASE WHEN C.DC_CD_GB = 'G233_30' /* 선착순쿠폰일때 */ THEN IFNULL((
+		                                                   SELECT COUNT(1)
+		                                                   FROM TB_LIMITED_TIME_COUPON LTC
+		                                                      , TB_CUST_COUPON CC
+		                                                   WHERE LTC.CPN_ID  = CC.CPN_ID
+		                                                     AND   NOW() BETWEEN LTC.DOWN_STDT AND LTC.DOWN_EDDT
+		                                                     AND LTC.DEL_YN = 'N'
+		                                                     AND LTC.CPN_ID = C.CPN_ID
+		                                                     AND CC.REG_DT BETWEEN LTC.DOWN_STDT AND LTC.DOWN_EDDT
+		                                               ),0)
+		          ELSE IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID),0) END
+		         ) AS TOT_COUPON_CNT
+		     , 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 ''
@@ -1191,12 +1205,13 @@
 		      ,IF (C.PD_GB = 'D', NOW(), C.AVAIL_STDT) AS AVAIL_STDT
 		      ,IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT) AS AVAIL_EDDT
 		FROM TB_COUPON C
+				 LEFT OUTER JOIN TB_LIMITED_TIME_COUPON LC ON C.CPN_ID = LC.CPN_ID AND NOW() BETWEEN LC.DOWN_STDT AND LC.DOWN_EDDT
 		WHERE 1=1
 		AND C.CPN_STAT = 'G232_11'
 		AND C.CPN_ID = #{cpnId}
 		AND C.SITE_CD = #{siteCd}
 		AND C.CPN_TYPE IN ('G230_11','G230_20','G230_30')
-		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		  AND NOW() BETWEEN IF(C.DC_CD_GB = 'G233_30', LC.DOWN_STDT, C.DOWN_STDT) AND IF(C.DC_CD_GB = 'G233_30', LC.DOWN_EDDT,  C.DOWN_EDDT)
 		AND NOW()  <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
 		AND (CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
 		          WHEN #{frontGb} = 'M' THEN C.DC_MVAL

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

@@ -802,8 +802,9 @@
 		      ,C.CPN_TYPE 
 		      ,C.BUY_LIMIT_AMT 
 		      ,C.CUST_PUB_LIMIT_QTY 
-		      ,C.TOT_PUB_LIMIT_QTY
-		      ,C.MAX_DC_AMT 
+		      ,IF(C.DC_CD_GB = 'G233_30', LC.DOWN_LIMIT_QTY , C.TOT_PUB_LIMIT_QTY) AS TOT_PUB_LIMIT_QTY
+		      ,C.ONE_PUB_QTY
+		      ,C.MAX_DC_AMT
 		      ,C.CPN_STAT 
 		      ,C.REG_DT
 		      ,PC.TITLE
@@ -818,6 +819,19 @@
 		      ,PC.CPN_NOTE8
 		      ,PC.CPN_NOTE9
 		      , IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO = #{custNo}),0) AS CUST_COUPON_CNT
+		      , (
+		          CASE WHEN C.DC_CD_GB = 'G233_30' /* 선착순쿠폰일때 */ THEN IFNULL((
+		                   SELECT COUNT(1)
+		                   FROM TB_LIMITED_TIME_COUPON LTC
+		                      , TB_CUST_COUPON CC
+		                   WHERE LTC.CPN_ID  = CC.CPN_ID
+		                   AND   NOW() BETWEEN LTC.DOWN_STDT AND LTC.DOWN_EDDT
+		                   AND LTC.DEL_YN = 'N'
+		                   AND LTC.CPN_ID = C.CPN_ID
+		                   AND CC.REG_DT BETWEEN LTC.DOWN_STDT AND LTC.DOWN_EDDT
+		                   ),0)
+		          ELSE IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID),0) END
+		        ) AS TOT_COUPON_CNT
 		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
 		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
 		              END
@@ -840,8 +854,9 @@
 		      ,IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT) AS AVAIL_EDDT
 		FROM TB_PLAN_CONTENTS PC 
 		             INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
-		             INNER JOIN TB_COUPON C ON PCI.ITEM_VAL = C.CPN_ID 
-		             LEFT JOIN TB_CUST_COUPON CC ON C.CPN_ID = CC.CPN_ID 
+		             INNER JOIN TB_COUPON C ON PCI.ITEM_VAL = C.CPN_ID
+		LEFT OUTER JOIN TB_LIMITED_TIME_COUPON LC ON C.CPN_ID = LC.CPN_ID AND NOW() BETWEEN LC.DOWN_STDT AND LC.DOWN_EDDT
+		LEFT JOIN TB_CUST_COUPON CC ON C.CPN_ID = CC.CPN_ID
 		WHERE 1=1
 		<if test="planSq != null and planSq != ''">
 		AND PC.PLAN_SQ = #{planSq}
@@ -852,7 +867,7 @@
 		AND C.CPN_ID  = #{cpnId}
 		</if>
 		AND C.CPN_TYPE IN ('G230_11','G230_30','G230_20')
-		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		AND NOW() BETWEEN IF(C.DC_CD_GB = 'G233_30', LC.DOWN_STDT, C.DOWN_STDT) AND IF(C.DC_CD_GB = 'G233_30', LC.DOWN_EDDT,  C.DOWN_EDDT)
 		AND NOW()  <![CDATA[<=]]>  IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
 		AND (CASE WHEN 'P' = #{frontGb} THEN C.DC_PVAL
 		          WHEN 'M' = #{frontGb} THEN C.DC_MVAL
@@ -864,7 +879,8 @@
 		           ,C.CPN_DESC       
 		           ,C.CPN_TYPE 
 		           ,C.BUY_LIMIT_AMT 
-		           ,C.CUST_PUB_LIMIT_QTY 
+		           ,C.CUST_PUB_LIMIT_QTY
+		           ,LC.DOWN_LIMIT_QTY
 		           ,C.TOT_PUB_LIMIT_QTY
 		           ,C.MAX_DC_AMT
 		           ,C.REG_DT

+ 4 - 101
src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html

@@ -42,11 +42,9 @@
 	});
 
 	var pushListInfo = function (pushList) {
-		alert('pushListInfo1 Call ===> ' + pushList);
 		let orgPushList;
-		//IOS는 앱에서 BASE64로 인코딩 한후 전달 한다.
-		if (_osType === 'I') {
-  			orgPushList = window.atob(pushList);
+		if (_osType === 'I') { //IOS는 앱에서 BASE64로 인코딩 한후 전달 한다. 아래와같이 해줘야 한글 안깨짐
+  			orgPushList = decodeURIComponent(escape(window.atob(pushList)));
 		} else if (_osType === 'A') {
 			orgPushList = pushList;
 		}
@@ -55,36 +53,14 @@
 			let pushListJosn = JSON.parse(orgPushList);
 			let html = '';
 			$.each(pushListJosn.pushList, function(idx, item) {
-				if (_osType === 'I') {
-					alert('fnDecodeUnicode :' + fnDecodeUnicode(item.content.toLowerCase())
-					 + 'escape :' + escape(item.content)
-					 + ' unescape :' + unescape(item.content)
-					 + ' encodeURI:' + encodeURI(item.content)
-					 + ' decodeURI:' + decodeURI(item.content)
-					 + ' encodeURIComponent:' + encodeURIComponent(item.content)
-					 + ' decodeURIComponent:' + decodeURIComponent(item.content)
-					);
-				}
 				html += '<div class="inner">\n';
 				html += '    <a href="'+item.link+'">\n';
 				html += '        <dl>\n';
 				html += '            <dt class="tit">\n';
-				let title = '';
-				if (_osType === 'I') {
-					title = fnDecodeUnicode(item.title.toLowerCase());
-				} else if(_osType === 'A') {
-					title = item.title;
-				}
-				html += title;
+				html += item.title;
 				html += '            </dt>\n'
 				html += '            <dd class="cont_txt">\n';
-				let content = '';
-				if (_osType === 'I') {
-					content = fnDecodeUnicode(item.content.toLowerCase());
-				} else if(_osType === 'A') {
-					content = item.content;
-				}
-				html += content;
+				html += item.content;
 				html += '            </dd>\n';
 				if (!gagajf.isNull(item.imgUrl)) {
 					html += '            <dd class="cont_img">\n';
@@ -107,72 +83,6 @@
 		}
 	}
 
-	var pushListInfo2 = function (pushList) {
-		alert('pushListInfo2 Call ===> ' + pushList);
-		// let orgPushList;
-		// //IOS는 앱에서 BASE64로 인코딩 한후 전달 한다.
-		// if (_osType === 'I') {
-  		// 	orgPushList = window.atob(pushList);
-		// } else if (_osType === 'A') {
-		// 	orgPushList = pushList;
-		// }
-
-		if (!gagajf.isNull(pushList)) {
-			let pushListJosn = JSON.parse(pushList);
-			let html = '';
-			$.each(pushListJosn.pushList, function(idx, item) {
-				if (_osType === 'I') {
-					alert('fnDecodeUnicode :' + fnDecodeUnicode(item.content.toLowerCase())
-					 + 'escape :' + escape(item.content)
-					 + ' unescape :' + unescape(item.content)
-					 + ' encodeURI:' + encodeURI(item.content)
-					 + ' decodeURI:' + decodeURI(item.content)
-					 + ' encodeURIComponent:' + encodeURIComponent(item.content)
-					 + ' decodeURIComponent:' + decodeURIComponent(item.content)
-					);
-				}
-				html += '<div class="inner">\n';
-				html += '    <a href="'+item.link+'">\n';
-				html += '        <dl>\n';
-				html += '            <dt class="tit">\n';
-				let title = '';
-				if (_osType === 'I') {
-					title = fnDecodeUnicode(item.title.toLowerCase());
-				} else if(_osType === 'A') {
-					title = item.title;
-				}
-				html += title;
-				html += '            </dt>\n'
-				html += '            <dd class="cont_txt">\n';
-				let content = '';
-				if (_osType === 'I') {
-					content = fnDecodeUnicode(item.content.toLowerCase());
-				} else if(_osType === 'A') {
-					content = item.content;
-				}
-				html += content;
-				html += '            </dd>\n';
-				if (!gagajf.isNull(item.imgUrl)) {
-					html += '            <dd class="cont_img">\n';
-					html += '                <img src="'+ item.imgUrl +'" />\n';
-					html += '            </dd>\n';
-				}
-				html += '            <dd class="cont_data">\n';
-				html += '                <span>\n';
-				html += fnDisplayDate(item.date);
-				html += '                </span>\n';
-				html += '            </dd>\n'
-				html += '        </dl>\n'
-				html += '    </a>';
-				html += '</div>\n'
-			});
-			$('#notice').removeClass('nodata');
-			$('#notice').html(html);
-		} else {
-			$('#notice').addClass('nodata');
-		}
-	}
-	
 	var fnDisplayDate = function (date) {
 		let resultDate = '';
 		if(!gagajf.isNull(date)) {
@@ -185,13 +95,6 @@
 	}
 
 
-	var fnDecodeUnicode = function(context) {
-		const regExp = /\\u([\d\w]{4})/gi;
-		context = context.replace(regExp, function (match, grp)
-		{ return String.fromCharCode(parseInt(grp, 16)); } );
-		return unescape(context);
-	}
-
 </script>
 
 </th:block>