소스 검색

이태영 - 20210208 장바구니 화면 생성 중

xodud1202 5 년 전
부모
커밋
4733ec0582

+ 4 - 0
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -311,6 +311,9 @@ public class TsfCartService {
 					cart.setAmtTmtbSq(info.getAmtTmtbSq());
 				}
 			}
+			if(cart.getTmtbDcAmt() == 0) {
+				cart.setTmtbDcAmt(cart.getCurrPrice());
+			}
 		}
 
 		// 장바구니 업체별 배송비 계산
@@ -318,6 +321,7 @@ public class TsfCartService {
 
 		// 자사 / 입점업체 리스트 분리
 		order = getCartDelvGoodsCntList(cartGoodsList);
+		order.setCartGoodsList(cartGoodsList);
 
 		// 총계 금액 계산
 		setCartListTotAmtInfo(cartGoodsList, order);

+ 13 - 50
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -64,8 +64,7 @@ public class TsfCouponService {
 		param.setFrontGb(TsfSession.getFrontGb());
 
 		// 시리얼키의 쿠폰이 다운로드 가능한지 확인
-		Coupon cpn = couponDao.getSearchSerialCpnInfo(param);   // >> 여기서 쿠폰 정보 다 빼내야함.
-
+		Coupon cpn = couponDao.getSearchSerialCpnInfo(param);
 
 		// 다운로드 받을 수 있는 쿠폰이 있으면
 		if(cpn != null && cpn.getCpnId() > 0) {
@@ -78,12 +77,13 @@ public class TsfCouponService {
 				// 이미 다운 받았고, 사용 한 쿠폰이 있을 경우 종료
 				if(!StringUtils.isEmpty(myCpn.getUsedDt())) {
 					cpn.setResult("해당 쿠폰은 이미 사용하신 쿠폰입니다.");
-				} else {
-					cpn.setResult("지급 받으신 쿠폰 사용 기한이 지났습니다.");
+					return cpn;
+				} else if("N".equals(myCpn.getAvailYn())) {
+					cpn.setResult("지급 받으신 쿠폰의 유효기간이 아닙니다.");
+					return cpn;
 				}
-				return cpn;
 			} else {
-				/* 다운받지 않은 경우 (tb_cust_coupon insert) */
+				/* 다운받은 쿠폰이 아닐 경우 (tb_cust_coupon insert) */
 				// 랜덤쿠폰 할당 및 쿠폰 지급
 				cpn.setRegNo(param.getRegNo());
 				cpn.setUpdNo(param.getUpdNo());
@@ -95,53 +95,16 @@ public class TsfCouponService {
 			return cpn;
 		}
 
+		Coupon dtData = couponDao.getSerialCpnUseInfo(cpn);
+		cpn.setAvailStdt(dtData.getAvailStdt());
+		cpn.setAvailEddt(dtData.getAvailEddt());
+
 		// 장바구니쿠폰 토탈 할인 금액 계산
+		param.setCpnId(cpn.getCpnId());
 		cpn.setDcAmt(getCartCpnApplyTotalAmt(param));
 		cpn.setResult("SUCCESS");
 
-		log.info("CHECK INFO >> {} / {}", cpn.getDcAmt(), cpn.getResult());
-
 		return cpn;
-
-
-
-/*
-		// 시리얼 쿠폰 지급 및 사용 내역 조회
-		Coupon useSerial = getSerialCpnUseInfo(param);
-		if(useSerial == null) {	useSerial = new Coupon();	}
-
-		useSerial.setRdCpnNm(param.getRdCpnNm());
-		useSerial.setCartSqArr(param.getCartSqArr());
-		useSerial.setCustNo(param.getCustNo());
-		useSerial.setRegNo(param.getRegNo());
-		useSerial.setUpdNo(param.getUpdNo());
-
-		Coupon coupon = new Coupon();
-
-		// 시리얼 쿠폰 다운로드하지 않았다면
-		if(useSerial != null && useSerial.getCpnId() > 0) {
-			// 해당 시리얼쿠폰을 사용한적이 있는 경우나, 받은것이 있는경우에 대한 처리
-			if(!StringUtils.isEmpty(useSerial.getUsedDt())) {
-				useSerial.setResult("해당 쿠폰은 이미 사용완료된 쿠폰입니다.");
-				return useSerial;
-			}
-		} else {
-			// 쿠폰 저장 및 할인 가격 적용
-			coupon = couponDao.getSearchSerialCpnInfo(useSerial);
-			if(coupon == null) {
-				useSerial.setResult("해당 쿠폰은 존재하지 않습니다.");
-				return useSerial;
-			} *//*else if (!"Y".equals(coupon.getDownCanGb())) {
-				useSerial.setResult("해당 쿠폰은 사용 할 수 없습니다.");
-				return useSerial;
-			}*//* else {
-				// 랜덤쿠폰 할당 및 쿠폰 지급
-				coupon.setCustNo(useSerial.getCustNo());
-				coupon.setRegNo(useSerial.getRegNo());
-				coupon.setUpdNo(useSerial.getUpdNo());
-				updateGiveRandomCpnInfo(coupon);
-			}
-		}*/
 	}
 
 	// 장바구니쿠폰 토탈 할인 금액 계산
@@ -179,8 +142,8 @@ public class TsfCouponService {
 			totDcAmt = maxDcAmt;
 		}
 
-		// 주문 최소 금액 요건 확인 (0은 제한 없음. 최소 주문 금액보다 총 상품 금액이 적으면 0원으로 세팅)
-		if(buyLimitAmt > 0 && buyLimitAmt > totCurrPrice) {
+		// 주문 최소 금액 요건 확인 (최소 주문 금액보다 총 상품 금액이 적으면 0원으로 세팅)
+		if(buyLimitAmt > totCurrPrice) {
 			totDcAmt = 0;
 		}
 

+ 1 - 3
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -121,6 +121,7 @@ public class TsfCartController extends TsfBaseController {
 
 		model.addAttribute("param", param);
 		model.addAttribute("order", order);
+		model.addAttribute("cartGoodsList", order.getCartGoodsList());
 		model.addAttribute("wmsCartList", order.getWmsCartList());
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
@@ -142,9 +143,6 @@ public class TsfCartController extends TsfBaseController {
 	public GagaMap serialCpnApply(@RequestBody Coupon param) {
 		GagaMap result = new GagaMap();
 
-		log.info("CHECK IN >> {}", param.getRdCpnNm());
-		log.info("CHECK IN >> {}", param.getCartSqArr());
-
 		// 시리얼 쿠폰 정보 조회 및 쿠폰 지급 미대상인 경우 쿠폰 지급
 		Coupon useSerial = couponService.serialCpnApplyInfo(param);
 

+ 5 - 1
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -21,7 +21,8 @@ public class Coupon extends TscBaseDomain {
 	private int custNo;				// 회원번호
 	private int availDays;			// 쿠폰 다운로드 후 유효기간일
 	private int rdCpnId;			// 랜덤쿠폰번호
-	private int dcAmt;				// 할인금액
+	private int dcAmt;				// 할인적용금액
+	private int dcVal;				// 할인금액/율
 	private String useYn;			// 쿠폰 사용 여부
 	private String cpnNm;			// 쿠폰명
 	private String rdCpnNm;			// 시리얼쿠폰 키
@@ -32,4 +33,7 @@ public class Coupon extends TscBaseDomain {
 	private String availEddt;		// 쿠폰 유효일
 	private String endAlimYn;		// 쿠폰 종료 알림 여부
 	private String frontGb;			// 화면 구분
+	private String availYn;			// 지급 받은 쿠폰 사용 가능 유무
+	private String dcWay;			// 할인금액/율 구분
+	private String cpnDesc;			// 쿠폰설명
 }

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

@@ -19,6 +19,10 @@
 		/* TsfCoupon.getSerialCpnUseInfo */
 		SELECT CC.CPN_ID
 			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d') AS USED_DT
+			 , CASE WHEN NOW() BETWEEN CC.AVAIL_STDT AND CC.AVAIL_EDDT THEN 'Y'
+					ELSE 'N' END AS AVAIL_YN
+			 , DATE_FORMAT(CC.AVAIL_STDT, '%Y.%m.%d') AS AVAIL_STDT
+			 , DATE_FORMAT(CC.AVAIL_EDDT, '%Y.%m.%d') AS AVAIL_EDDT
 		FROM   TB_CUST_COUPON CC
 		WHERE  1=1
 		AND    CC.CPN_ID = #{cpnId}
@@ -30,6 +34,7 @@
 		/* TsfCoupon.getSearchSerialCpnInfo : 입력된 시리얼 쿠폰 정보 조회 */
 		SELECT CP.CPN_ID
 			 , CP.CPN_NM
+		     , CP.CPN_DESC
 		     , CP.DC_WAY
 			 , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
 					WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
@@ -40,8 +45,6 @@
 			     	ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S') END AS AVAIL_STDT
 			 , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%m%d%H%i%S')
 			     	ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S') END AS AVAIL_EDDT
-			 , CASE WHEN NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT THEN 'Y'
-					ELSE 'N' END AS downCanGb
 		FROM   TB_COUPON CP
 		INNER  JOIN TB_RANDOM_COUPON RC
 		ON     CP.CPN_ID = RC.CPN_ID

+ 79 - 13
src/main/webapp/WEB-INF/views/web/cart/cartListAjaxFormWeb.html

@@ -322,22 +322,21 @@
         <div class="coupon_box">
             <div class="coupon">
                 <div>
-                    <p class="cp_name">
-                        TBJ 시즌오프 20% 할인쿠폰
-                    </p>
+                    <p class="cp_name"></p>
                     <p class="cp_cont">
-                        <span><em>12,399,900</em>원</span>
-                        <span><em>40%</em></span>
+                        <!--<span><em>12,399,900</em>원</span>
+                        <span><em>40%</em></span>-->
+                        <span class="cp_dc_val"></span>
                     </p>
                     <p class="cp_condition">
-                        500,000원 이상 구매 시 최대 50,000원 할인
-                        <span><em class="tag">99장 보유</em></span>
+                        <!--500,000원 이상 구매 시 최대 50,000원 할인
+                        <span><em class="tag">99장 보유</em></span>-->
                     </p>
                 </div>
                 <p class="cp_date">
-                    <span>2021.01.01</span>&nbsp;~&nbsp;<span>2021.12.30</span>
+                    <span class="availStdt"></span>&nbsp;~&nbsp;<span class="availEddt"></span>
                 </p>
-                <button type="button" class="btn_close_code">
+                <button type="button" class="btn_close_code" onClick="cancelCartCpn()">
                     <span>
                         <i class="ico ico_close1"></i>
                         <em class="sr-only">닫기</em>
@@ -410,13 +409,22 @@
 <!-- // CONT-BODY -->
 </form>
 
-<script type="text/javascript">
+<script th:inline="javascript">
     let sumRealPayAmt = [[${order.sumRealPayAmt}]];
     let totDcAmt = [[${order.totDcAmt}]];
+    let cartGoodsList = [[${order.cartGoodsList}]];
 
     $(document).ready(function() {
-        $("#sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
-        $("#totDcAmt").text(Number(totDcAmt).toLocaleString());
+        $(".area_salecoupon .coupon_box").hide();
+        /* TODO 로그인 안했으면 .area_salecoupon (할인코드 입력 부 및 쿠폰정보영역) hide 시킬것 */
+
+        // 다다익선 할인 대상(미적용) 리스트
+        notApplyTmtbAreaList();
+
+
+        /*$("#sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+        $("#totDcAmt").text(Number(totDcAmt).toLocaleString());*/
+
         //$("#cartListForm").submit();
        /* $.ajax( {
             type: "POST",
@@ -430,6 +438,51 @@
         });*/
     });
 
+    function notApplyTmtbAreaList() {
+        let NotApplyQtyTmtbList = {tmtbSq : 0, tmtbNm : "", goodsList : new Array()};
+        let NotApplyAmtTmtbList = {tmtbSq : 0, tmtbNm : ""};
+
+        for(let i = 0 ; i < cartGoodsList.length ; i++) {
+            let cart = cartGoodsList[i];
+            let tmtbInfo = new Object;
+            let chk = false;
+            if(cart.applyQtySectionYn == "N") {     // 미적용된 다다익선
+                for (let j = 0; j < notApplyTmtbList.length; j++) {
+                    if(cart.qtyTmtbSq == notApplyTmtbList[j].tmtbSq) {
+                        chk = true;
+                        tmtbInfo = notApplyTmtbList[j];
+                    }
+                }
+
+                if(chk) {
+                    let goods = new Object();
+                    goods.brandNm = cart.brandNm;
+                    goods.goodsNm = cart.goodsNm;
+                    goods.sysImgNm = cart.sysImgNm;
+                    goods.currPrice = cart.currPrice;
+                    tmtbInfo.goodsList.push(goods);
+                } else {
+                    let aaa = {
+                        tmtbSq : cart.tmtbSq,
+                        tmtbNm : cart.tmtbNm,
+                        goodsList : new Array()
+                    };
+                }
+
+            }
+        }
+
+
+        /*[# th:each="order : ${order.cartGoodsList}"]*/
+        /*[/]*/
+    }
+
+    function cancelCartCpn() {
+        $("#sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+        $("#totDcAmt").text(Number(totDcAmt).toLocaleString());
+        $(".area_salecoupon .coupon_box").hide();
+    }
+
     function serialCpnApply() {
         let testArr = [];
         $("#cartListForm input[name=cartSqArr]").each(function(index, item) {
@@ -450,9 +503,22 @@
             dataType : 'json',
             data : jsonData,
             success : function(result) {
-                alert(result.serialCpnInfo.result + " / " + result.serialCpnInfo.dcAmt);
+                $(".area_salecoupon .coupon_box").show();
+
+                // 합계 금액
                 $("#sumRealPayAmt").text(Number(sumRealPayAmt - result.serialCpnInfo.dcAmt).toLocaleString());
                 $("#totDcAmt").text(Number(totDcAmt - result.serialCpnInfo.dcAmt).toLocaleString());
+
+                // 쿠폰 정보
+                $(".area_salecoupon .cp_name").text(result.serialCpnInfo.cpnNm);
+                $(".area_salecoupon .cp_condition").html(result.serialCpnInfo.cpnDesc + "<span><em class='tag'>1장 보유</em></span>");
+                $(".area_salecoupon .availStdt").text(result.serialCpnInfo.availStdt);
+                $(".area_salecoupon .availEddt").text(result.serialCpnInfo.availEddt);
+                if(result.serialCpnInfo.dcWay == "G240_10") {
+                    $(".area_salecoupon .cp_dc_val").html( "<em>" + Number(result.serialCpnInfo.dcVal).toLocaleString() + "</em> 원");
+                } else if (result.serialCpnInfo.dcWay == "G240_11") {
+                    $(".area_salecoupon .cp_dc_val").html( "<em>" + result.serialCpnInfo.dcVal + "%</em>");
+                }
             }
         });
     };