Просмотр исходного кода

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

xodud1202 5 лет назад
Родитель
Сommit
23d50a7027

+ 3 - 4
src/main/java/com/style24/front/biz/dao/TsfCartDao.java

@@ -1,13 +1,12 @@
 package com.style24.front.biz.dao;
 
+import java.util.Collection;
+import java.util.List;
+
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Cart;
-import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.Order;
 
-import java.util.Collection;
-import java.util.List;
-
 /**
  * 장바구니 Dao
  * 

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -1,6 +1,8 @@
 package com.style24.front.biz.dao;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Cart;
+import com.style24.persistence.domain.Coupon;
 
 /**
  * 쿠폰 Dao
@@ -11,4 +13,11 @@ import com.style24.core.support.annotation.ShopDs;
 @ShopDs
 public interface TsfCouponDao {
 
+	/**
+	 * 시리얼 쿠폰 지급 정보 조회
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 02. 16
+	 */
+	Coupon getSerialCpnUseInfo(Coupon param);
 }

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

@@ -18,6 +18,7 @@ import com.style24.core.support.session.TscSession;
 import com.style24.front.biz.dao.TsfCartDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
+import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.Order;

+ 11 - 0
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.front.biz.dao.TsfCouponDao;
+import com.style24.persistence.domain.Coupon;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -20,4 +21,14 @@ public class TsfCouponService {
 	@Autowired
 	private TsfCouponDao couponDao;
 
+	/**
+	 * 시리얼 쿠폰 지급 정보 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 02. 16
+	 */
+	public Coupon getSerialCpnUseInfo(Coupon param) {
+		return couponDao.getSerialCpnUseInfo(param);
+	}
 }

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

@@ -1,6 +1,8 @@
 package com.style24.front.biz.web;
 
+import java.text.SimpleDateFormat;
 import java.util.Collection;
+import java.util.Date;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -12,12 +14,16 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
+import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
+import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.persistence.domain.Cart;
+import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Order;
 
 import lombok.extern.slf4j.Slf4j;
@@ -39,6 +45,12 @@ public class TsfCartController extends TsfBaseController {
 	@Autowired
 	private TsfCartService cartService;
 
+	@Autowired
+	private TsfCouponService couponService;
+
+	@Autowired
+	private TscOrderService coreOrderService;
+
 	@Autowired
 	private Environment env;
 
@@ -88,9 +100,25 @@ public class TsfCartController extends TsfBaseController {
 
 	// @ResponseBody
 	@PostMapping("/goods/list")
-	public String selecCartGoodsList(Order param, Model model) {
+	public String selectCartGoodsList(Order param, Model model) {
+		// 장바구니 정보 조회
 		Order order = cartService.getCartGoodsList(param);
 
+		// 총알배송 가능 여부 체크
+		int shotCanYn = coreOrderService.getDailyDeliveryCheck(order);
+
+		// 10시 이전에만 총알 배송 가능 여부 체크
+		if(shotCanYn == 1) {
+			SimpleDateFormat format = new SimpleDateFormat ( "MM/dd");
+			Date time = new Date();
+
+			order.setShotCanYn("Y");
+			order.setShotDelvDt(format.format(time));
+		} else {
+			order.setShotCanYn("N");
+			order.setShotDelvYn("N");
+		}
+
 		model.addAttribute("param", param);
 		model.addAttribute("order", order);
 		model.addAttribute("wmsCartList", order.getWmsCartList());
@@ -99,4 +127,36 @@ public class TsfCartController extends TsfBaseController {
 
 		return super.getDeviceViewName("cart/cartListAjaxForm");
 	}
+
+	@ResponseBody
+	@PostMapping("/list/serialCpnApply")
+	public GagaMap serialCpnApply(@RequestBody Cart param) {
+		// 시리얼 쿠폰 사용 정보 조회
+		Coupon cpn = new Coupon();
+		cpn.setRdCpnNm(param.getRdCpnNm());
+		cpn.setCartSqArr(param.getCartSqArr());
+		// TODO 로그인 정보 입력
+		cpn.setCustNo(1000006);
+
+		Coupon useSerial = couponService.getSerialCpnUseInfo(cpn);
+
+		// 시리얼 쿠폰 다운로드하지 않았다면
+		if(useSerial != null) {
+			// 해당 시리얼쿠폰을 사용한적이 있는 경우나, 받은것이 있는경우에 대한 처리(분기)
+
+		} else {
+			// 해당 쿠폰 저장
+
+		}
+
+		log.info("CHECK IN >> {}", param.getSerialCpnNm());
+		log.info("CHECK IN >> {}", param.getCartSqArr());
+
+
+
+		GagaMap result = new GagaMap();
+		result.put("testResult", "SUCCESS");
+
+		return result;
+	}
 }

+ 10 - 0
src/main/java/com/style24/persistence/domain/Cart.java

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
@@ -50,4 +51,13 @@ public class Cart extends TscBaseDomain {
 	// 다다익선 정보
 
 	// 즉시할인쿠폰 정보
+
+	// 시리얼쿠폰 정보
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] cartSqArr;		// 장바구니 일련번호 배열 (일시품절제외 조회)
+	private String cpnNm;
+	private String rdCpnNm;
+	private String usedDt;
+	private String serialCpnNm;
+
 }

+ 25 - 0
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -0,0 +1,25 @@
+package com.style24.persistence.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 장바구니
+ *
+ * @author xodud1202
+ * @since 2021.01.22
+ */
+@SuppressWarnings("serial")
+@Data
+public class Coupon extends TscBaseDomain {
+	// 쿠폰 정보
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] cartSqArr;		// 장바구니 일련번호 배열
+	private int cpnId;				// 쿠폰번호
+	private int custNo;				// 회원번호
+	private String cpnNm;			// 쿠폰명
+	private String rdCpnNm;			// 시리얼쿠폰 키
+	private String usedDt;			// 쿠폰 사용완료 일자
+}

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

@@ -13,7 +13,20 @@
 		       ) ORIGINAL
 		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
 	</sql>
-	
-	
 
+	<!-- 시리얼 쿠폰 지급 정보 조회 -->
+	<select id="getSerialCpnUseInfo" parameterType="Coupon" resultType="Coupon">
+		/* TsfCoupon.getSerialCpnUseInfo */
+		SELECT CP.CPN_NM
+			 , RC.RD_CPN_NM
+			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d %H:%i:%S') AS USED_DT
+		FROM   TB_COUPON CP
+		INNER  JOIN TB_RANDOM_COUPON RC
+		ON     CP.CPN_ID = RC.CPN_ID
+		INNER  JOIN TB_CUST_COUPON CC
+		ON     CP.CPN_ID = CC.CPN_ID
+		WHERE  1=1
+		AND    RC.RD_CPN_NM = ${rdCpnNm}
+		AND    CC.CUST_NO = ${custNo}
+	</select>
 </mapper>

+ 57 - 14
src/main/webapp/WEB-INF/views/web/cart/cartListAjaxFormWeb.html

@@ -1,8 +1,9 @@
 <html lang="ko"
       xmlns:th="http://www.thymeleaf.org">
+<form id="cartListForm" method="post" action="/order/noMember">
 <!-- CONT-BODY -->
 <div class="od_cont">
-    <div class="sec_head">
+    <div class="sec_head" th:if="${order.shotCanYn.equals('Y')}">
         <div class="tbl type4">
             <table>
                 <colgroup>
@@ -17,12 +18,12 @@
                     <td>
                         <div class="form_field">
                             <div>
-                                <input type="radio" name="radio" id="blt_ship1" value="">
-                                <label for="blt_ship1"><span><em class="tag">총알배송</em>10/15일 24:00 까지 도착</span></label>
+                                <input type="radio" name="shotDelvYn" id="blt_ship1" value="">
+                                <label for="blt_ship1"><span><em class="tag">총알배송</em><span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span></span></label>
                             </div>
                             <div>
-                                <input type="radio" name="radio" id="blt_ship2" value="" checked="">
-                                <label for="blt_ship2"><span>총알 배송 안함 (10/25일 도착 예정)</span></label>
+                                <input type="radio" name="shotDelvYn" id="blt_ship2" value="" checked="">
+                                <label for="blt_ship2"><span>총알 배송 안함</span></label>
                             </div>
                         </div>
                     </td>
@@ -34,13 +35,13 @@
     <div class="sec_body">
         <!-- 총알배송 -->
         <div class="part_deliver" th:if="${wmsCartList.size() > 0}">
-            <h3 class="subH2 mb20">
+            <h3 class="subH2 mb20" th:if="${order.shotCanYn.equals('Y')}">
                 STYLE24 총알배송
                 <span class="ml10">오늘 자정까지 도착</span>
             </h3>
-            <!--<h3 class="subH2 mb20">
+            <h3 class="subH2 mb20" th:if="${order.shotCanYn.equals('N')}">
                 STYLE24 일반배송
-            </h3>-->
+            </h3>
             <div class="tbl type2">
                 <table>
                     <colgroup>
@@ -55,8 +56,8 @@
                             <div class="info_item" th:classappend="${cart.soldoutYn.equals('Y')} ? unable"> <!-- 주문불가시 class="unable" 추가 / 인풋, 버튼 disable 처리 -->
                                 <div class="form_box">
                                     <p class="form_field">
-                                        <input id="od_item1" type="checkbox" th:value="${cart.cartSq}" th:checked="${cart.soldoutYn.equals('N')}" />
-                                        <label for="od_item1">
+                                        <input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}" th:checked="${cart.soldoutYn.equals('N')}" th:disabled="${cart.soldoutYn.equals('Y')}"/>
+                                        <label th:for="|od_item_${cart.cartSq}|">
                                             <span class="sr-only">상품선택</span>
                                         </label>
                                     </p>
@@ -79,7 +80,7 @@
                                         <span class="count">수량:<em th:text="${cart.itemQtyArr[index.index]} * ${cart.goodsQty}"></em>개</span>
                                     </p>
                                     <p class="od_modify">
-                                        <button type="button" id="btn_opt_pop"><span>옵션/수량변경</span></button>
+                                        <button type="button"><span>옵션/수량변경</span></button>
                                     </p>
                                     <!-- 다다익선 적용 -->
                                     <div class="od_moresale" th:if="${cart.applyQtySectionYn == 'Y' or cart.applyAmtSectionYn == 'Y'}">
@@ -173,7 +174,7 @@
                             <div class="info_item">
                                 <div class="form_box">
                                     <p class="form_field">
-                                        <input id="od_item_21" type="checkbox" th:value="${cart.cartSq}" th:checked="${cart.soldoutYn.equals('N')}">
+                                        <input id="od_item_21" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}" th:checked="${cart.soldoutYn.equals('N')}">
                                         <label for="od_item_21">
                                             <span class="sr-only">상품선택</span>
                                         </label>
@@ -312,9 +313,9 @@
         <div class="form_field">
             <div class="input_wrap form_full">
                 <label class="input_label sr-only">할인코드입력</label>
-                <input type="text" class="form_control" placeholder="할인코드를 입력해주세요.">
+                <input type="text" id="serialCpnNm" class="form_control" placeholder="할인코드를 입력해주세요.">
             </div>
-            <button type="button" class="btn btn_dark btn_default"><span>적용</span></button>
+            <button type="button" class="btn btn_dark btn_default" onclick="serialCpnApply()"><span>적용</span></button>
         </div>
         <div class="coupon_box">
             <div class="coupon">
@@ -405,4 +406,46 @@
 </div>
 <div class="clear"></div>
 <!-- // CONT-BODY -->
+</form>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        //$("#cartListForm").submit();
+       /* $.ajax( {
+            type: "POST",
+            url : '/cart/goods/list',
+            dataType : 'html',
+            success : function(result) {
+                if (result != null) {
+                    $("#cartAjaxList").html(result);
+                }
+            }
+        });*/
+    });
+
+    function serialCpnApply() {
+        let testArr = [];
+        $("#cartListForm input[name=cartSqArr]").each(function(index, item) {
+            testArr.push($(this).val());
+        });
+
+        let data = {
+            rdCpnNm : $("#serialCpnNm").val(),
+            cartSqArr : testArr
+        }
+
+        let jsonData = JSON.stringify(data);
+
+        $.ajax( {
+            type: "POST",
+            url : '/cart/list/serialCpnApply',
+            contentType: 'application/json',
+            dataType : 'json',
+            data : jsonData,
+            success : function(result) {
+                alert(result.testResult);
+            }
+        });
+    };
+</script>
 </html>

+ 1 - 0
src/main/webapp/WEB-INF/views/web/cart/cartListFormWeb.html

@@ -418,6 +418,7 @@
     });
 
     function getCartList() {
+        // 장바구니 정보 조회
         $.ajax( {
             type: "POST",
             url : '/cart/goods/list',