Переглянути джерело

Merge branch 'develop' into bin2107

bin2107 5 роки тому
батько
коміт
7240265aa0

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java

@@ -169,6 +169,16 @@ public interface TsfCustomerDao {
 	 */
 	CustGrade getExpectedCustGrde(CustGrade custGrade);
 
+	/**
+	 * 고객 등급 기준 주문정보 조회
+	 *
+	 * @param custGrade - 사이트 코드
+	 * @return int - 결과
+	 * @author jsshin
+	 * @since 2021. 04. 06
+	 */
+	CustGrade getCustGradeOrderInfo(CustGrade custGrade);
+
 	/**
 	 * 고객 생년월일 저장
 	 *

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

@@ -767,15 +767,32 @@ public class TsfCouponService {
 		coupon.setCustNo(TsfSession.getInfo().getCustNo());
 		coupon.setCustGrade(TsfSession.getInfo().getCustGrade());
 		Collection<Coupon> quickCouponList = couponDao.getQuickCouponDownList(coupon);
-
+		
+		Coupon temp = quickCouponList.iterator().next();
+		System.out.println(temp);
 		String result = "SUCESS";
 
 		if (quickCouponList == null || quickCouponList.isEmpty()) {
 			result = "ERROR_10";
 			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);
+			if (firstOrdcnt > 0) {
+				//log.info("상품쿠폰 다운  skip: 쿠폰첫구매정보 : {}, {} ~ {} ", coupon.getFirstOrdYn(), coupon.getBuyStdt(), coupon.getBuyEddt());
+				result = "ERROR_20";
+				return result;
+			}
+		}
 
-		int count = 0;
 		if (coupon.getCpnId() > 0) {
 			for (Coupon quickCoupon : quickCouponList) {
 				if (quickCoupon != null) {
@@ -789,7 +806,6 @@ public class TsfCouponService {
 					custCoupon.setUpdNo(coupon.getCustNo());
 					custCoupon.setRegNo(coupon.getCustNo());
 					coreCouponDao.saveCouponCustPub(custCoupon);
-					count++;
 				}
 			}
 		}

+ 1 - 1
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -1059,7 +1059,7 @@ public class TsfCustomerService {
 		CustGrade nextCustGradePolicy = custGradePolicy.get(0);
 		nextCustGradePolicy.setCustNo(custGrade.getCustNo());
 		// 2.고객 예상등급 이후 정보로 주문금액 확인
-		CustGrade nextCustGrade = customerDao.getExpectedCustGrde(nextCustGradePolicy);
+		CustGrade nextCustGrade = customerDao.getCustGradeOrderInfo(nextCustGradePolicy);
 		if (nextCustGrade != null) {
 			nextCustGradePolicy.setOrdCnt(nextCustGrade.getOrdCnt());
 			nextCustGradePolicy.setSumRealOrdAmt(nextCustGrade.getSumRealOrdAmt());

+ 6 - 1
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1557,6 +1557,7 @@ public class TsfMypageController extends TsfBaseController {
 	public GagaMap getQuickDownCouponList() {
 		GagaMap result = new GagaMap();
 		Coupon coupon = new Coupon();
+		coupon.setQuickYn("N");
 		Collection<Coupon> ownCouponList = couponService.getQuickCouponDownList(coupon);
 		result.set("ownCouponList", ownCouponList);
 		result.set("couponCount",couponService.getMypageCouponInfo(coupon));
@@ -1576,11 +1577,15 @@ public class TsfMypageController extends TsfBaseController {
 		String couponResult = couponService.saveQuickCoupon(coupon);
 		if ("ERROR_10".equals(couponResult)) {
 			result.set("message", "발급가능 쿠폰이 없습니다.");
+		}else if("ERROR_20".equals(couponResult)){
+			result.set("message", "죄송합니다. 해당 쿠폰은 다운로드가 불가합니다.");
+		}else if("ERROR_30".equals(couponResult)){
+			result.set("message", "죄송합니다. 해당 쿠폰은 다운로드가 불가합니다.");
 		}else {
 			result.set("message", "쿠폰이 발급되었습니다.");
 		}
+		coupon.setQuickYn("Y");
 		result.set("status", "200");
-		
 		result.set("couponList", couponService.getQuickCouponDownList(coupon));
 		return result;
 	}

+ 3 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -1292,6 +1292,7 @@
 		      ,C.CUST_PUB_LIMIT_QTY 
 		      ,C.TOT_PUB_LIMIT_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 ''
 		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
@@ -1328,7 +1329,9 @@
 		         WHEN 'M' = 'P' THEN C.DC_MVAL
 		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
 		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
+		<if test='quickYn == "N" and quickYn != ""'>
 		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 고객당발행제한수량
+		</if>
 		AND (SELECT COUNT(1)
 		     FROM TB_COUPON_CUST_GBN
 		     WHERE CPN_ID = C.CPN_ID

+ 24 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml

@@ -631,6 +631,30 @@
 		OR    B.SUM_REAL_ORD_AMT >= #{minBuyAmt}
 	</select>
 
+	<!--고객 등급 기준 주문정보-->
+	<select id="getCustGradeOrderInfo" parameterType="CustGrade" resultType="CustGrade">
+		/* TsfCustomer.getCustGradeOrderInfo */
+		SELECT   COUNT(DISTINCT A.ORD_NO) AS ORD_NO_CNT
+		       , SUM(A.SUM_REAL_ORD_AMT)  AS SUM_REAL_ORD_AMT
+		FROM (
+		      SELECT O.ORD_NO
+		           , SUM(OD.REAL_ORD_AMT + OD.GFCD_USE_AMT) AS SUM_REAL_ORD_AMT
+		      FROM   TB_ORDER O
+		      INNER JOIN
+		             TB_ORDER_DETAIL OD
+		      ON     O.ORD_NO = OD.ORD_NO
+		      INNER JOIN
+		             TB_CUSTOMER C
+		      ON     O.CUST_NO = C.CUST_NO
+		      WHERE  OD.ORD_DTL_STAT = 'G013_70' /*구매확정*/
+		      AND    C.CUST_NO = #{custNo}
+		      AND    O.ORD_DT >= DATE_ADD(DATE_ADD(LAST_DAY(NOW()), INTERVAL 1 DAY), INTERVAL -#{calMonths} MONTH)
+		      AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(LAST_DAY(NOW()), INTERVAL 1 DAY) /*익월 1일*/
+		      GROUP BY O.ORD_NO
+		      HAVING SUM(OD.REAL_ORD_AMT + OD.GFCD_USE_AMT) >= #{buyExceptAmt}
+		) A
+	</select>
+
 	<!--배치 생년월일 -->
 	<insert id="saveBatchBirth" parameterType="Customer">
 		/*TsfCustomer.saveBatchBirth*/

+ 2 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -509,7 +509,9 @@
 		SELECT COUNT(*) 
 		FROM TB_ORDER
 		WHERE CUST_NO = #{custNo}
+		<if test="buyStdt != null and buyStdt != ''">
 		AND ORD_DT BETWEEN CONCAT(#{buyStdt}, '000000') and CONCAT(#{buyEddt}, '235959')
+		</if>
 	</select>
 	
 	<!-- 보유쿠폰체크 -->

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

@@ -1604,7 +1604,7 @@
 		WHERE PLAN_GB = 'S'
 		AND OPEN_YN = 'Y'
 		AND NOW() BETWEEN DISP_STDT AND DISP_EDDT 
-		ORDER BY UPD_DT DESC LIMIT 1
+		ORDER BY REG_DT DESC LIMIT 1
 	</select>
 	
 </mapper>

+ 1 - 1
src/main/resources/config/application-locd.yml

@@ -83,7 +83,7 @@ naverPay:
     payUrl:
         web : test-pay.naver.com
         mob : test-m.pay.naver.com
-    shop.id : istyle2401
+    shop.id : istyle2424
     button.key : 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key : s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76

+ 1 - 1
src/main/resources/config/application-run.yml

@@ -108,7 +108,7 @@ naverPay:
     payUrl:
         web : pay.naver.com
         mob : m.pay.naver.com
-    shop.id: istyle2401
+    shop.id: istyle2424
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76

+ 1 - 1
src/main/resources/config/application-style.yml

@@ -96,7 +96,7 @@ naverPay:
     payUrl:
         web : test-pay.naver.com
         mob : test-m.pay.naver.com
-    shop.id : istyle2401
+    shop.id : istyle2424
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76

+ 1 - 1
src/main/resources/config/application-tsit.yml

@@ -84,7 +84,7 @@ naverPay:
     payUrl:
         web : test-pay.naver.com
         mob : test-m.pay.naver.com
-    shop.id: istyle2401
+    shop.id: istyle2424
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -425,8 +425,8 @@
 
 						<!-- 입점업체 배송비 -->
 						<div class="goods_txt delvArea" th:if="${'Y'.equals(cart.addDelvFeeYn)}" th:classappend="|delv_${cart.delvFeeCd}|" th:style="${'Y'.equals(cart.delvYn) ? 'display:block' : 'display:none'}">
-							<span class="dlvr_fee delvFeeArea" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
-							<span class="dlvr_fee delvFeeArea" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
+							<span class="dlvr_fee delvFeeArea" th:if="${cart.delvFee == 0}">배송비 무료</span>
+							<span class="dlvr_fee delvFeeArea" th:if="${cart.delvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(cart.delvFee, 1, 'COMMA')}"></em>원</span>
 							<span th:text="|${cart.supplyCompNm} 업체직배송|"></span>
 						</div>
 

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html

@@ -59,7 +59,7 @@
 	<script src="/ux/mo/js/jquery.modal.min.js"></script>
 	<script src="/ux/mo/js/swiper.min.js"></script>
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
-	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
+	<script src="/ux/mo/js/mcxdialog_ui.js"></script>
 	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 	<script src="/ux/plugins/lazyload.min.js"></script>
 

+ 10 - 15
src/main/webapp/WEB-INF/views/mob/planning/PlanningCustGradeBenefitFormMob.html

@@ -304,9 +304,8 @@
 
 		// 예정등급이 VIP가 아닌경우
 		if (Number(expctCustGrade.gradeCdNo) > 10) {
-			let nextGradeNo = Number(expctCustGrade.gradeCdNo)-10;				// 다음등급번호
-			let nextCustGradePolicy = fnGetNextGradePolicyInfo(nextGradeNo);	// 다음등급정책정보
-			fnNextGradeCondition(nextCustGradePolicy, expctCustGrade);			// 다음조건 알림
+			let nextGradeNo = 'G110_'+(Number(expctCustGrade.gradeCdNo)-10); // 다음등급번호
+			fnGetNextGradePolicyInfo(nextGradeNo);							 // 다음등급정책정보
 		} else {
 			fnDisplayVipText(expctCustGrade);
 		}
@@ -315,18 +314,14 @@
 
  	// 다음 등급정책
  	var fnGetNextGradePolicyInfo = function (nextGradeNo) {
-		let custGradePolicy = exptCustGradeMap.custGradePolicy;	// 등급별정책
-		let nextCustGradePolicy;
-		$(custGradePolicy).each(function(idx, item) {
-			if (Number(item.gradeCdNo) === nextGradeNo ) {
-				nextCustGradePolicy = item;
-			}
+		$.get('/planning/next/custgrade/info/' + nextGradeNo
+			, function (data) {
+				fnNextGradeCondition(data.nextCustGradePolicy);			// 다음조건 알림
 		});
-		return nextCustGradePolicy;
 	}
 
 	// 다음등급 조건 알림
-	var fnNextGradeCondition = function (nextCustGradePolicy, expctCustGrade) {
+	var fnNextGradeCondition = function (nextCustGradePolicy) {
 		let $etcGrade = $('#etcGrade');
 		let $sameVipGrade = $('#sameVipGrade');
 		let $vipGrade = $('#vipGrade');
@@ -337,13 +332,13 @@
 		let $nextGrde = $('#nextGrde');
 
 		let remnantBuyAmt = 0;
-		if (nextCustGradePolicy.minBuyAmt > expctCustGrade.sumRealOrdAmt) {
-			remnantBuyAmt = nextCustGradePolicy.minBuyAmt - expctCustGrade.sumRealOrdAmt;
+		if (nextCustGradePolicy.minBuyAmt > nextCustGradePolicy.sumRealOrdAmt) {
+			remnantBuyAmt = nextCustGradePolicy.minBuyAmt - nextCustGradePolicy.sumRealOrdAmt;
 		}
 
 		let remnantBuyCnt = 0;
-		if (nextCustGradePolicy.minBuyCnt > expctCustGrade.ordCnt) {
-			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  expctCustGrade.ordCnt;
+		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordCnt) {
+			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordCnt;
 		}
 
 		$etcGrade.show();

+ 5 - 10
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1356,20 +1356,15 @@
 	// 쿠폰다운로드 콜백
 	var fnQuickCouponCallBack = function(result){
 		if (result.status == "200"){
-			let list = result.couonList;
-
-			list.forEach(function(coupon){
-				if (Number(coupon.custPubLimitQty) > 0){
-					if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
-						$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
-						$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+			$.each(result.couponList, function (idx, item) {
+				if (Number(item.custPubLimitQty) > 0){
+					if (Number(item.custPubLimitQty) <= Number(item.custCouponCnt)){
+						$('#coupon_'+ item.cpnId).html('<span>받기완료</span>');
+						$('#coupon_'+ item.cpnId).attr('disabled', true);
 					}
 				}
 			});
-			
 		}			
-		//issueCouponBtn();
-		
 	}
 
 	

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html

@@ -68,7 +68,7 @@
 	<script src="/ux/pc/js/slick.min.js"></script>
 	<script src="/ux/pc/js/jquery-ui.js"></script>
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
-	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
+	<script src="/ux/pc/js/mcxdialog_ui.js"></script>
 	
 	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 	<script src="https://www.google.com/recaptcha/api.js" async defer></script>

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

@@ -277,8 +277,8 @@
 
 		// 예정등급이 VIP가 아닌경우
 		if (Number(expctCustGrade.gradeCdNo) > 10) {
-			let nextGradeNo = 'G110_'+(Number(expctCustGrade.gradeCdNo)-10);				// 다음등급번호
-			fnGetNextGradePolicyInfo(nextGradeNo);	// 다음등급정책정보
+			let nextGradeNo = 'G110_'+(Number(expctCustGrade.gradeCdNo)-10); // 다음등급번호
+			fnGetNextGradePolicyInfo(nextGradeNo);							 // 다음등급정책정보
 		} else {
 			fnDisplayVipText(expctCustGrade);
 		}
@@ -290,7 +290,7 @@
 		$.get('/planning/next/custgrade/info/' + nextGradeNo
 			, function (data) {
 				fnNextGradeCondition(data.nextCustGradePolicy);			// 다음조건 알림
-			});
+		});
 	}
 
 	// 다음등급 조건 알림