xodud1202 il y a 5 ans
Parent
commit
e8722ddaaa

+ 69 - 8
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -245,15 +245,43 @@ public class TsfCartService {
 		// 품절체크
 		for(Order goods : cartGoodsList) {
 			// 상품 재고 확인
-			/*GoodsStock checkParam = new GoodsStock();
-			checkParam.setGoodsCd(goods.getGoodsCd());
-			checkParam.setItemCd(goods.getItemCd());
-			checkParam.setOptCd(goods.getOptCd());
-			checkParam.setGoodsQty(goods.getGoodsQty());
-			checkParam.setGoodsType(goods.getGoodsType());
-			String stockResult = goodsService.getCheckStock(checkParam);*/
+			GoodsStock checkParam = new GoodsStock();
 
-			String stockResult = "SUCCESS";
+			String stockResult = "";
+			// 세트 상품일 경우
+			if(TscConstants.GoodsType.SET.value().equals(goods.getGoodsType())) {
+				Order tempItem = new Order();
+				// 세트 구성품이 여러개일 경우
+				if (goods.getItemCd().contains(",")) {
+					tempItem.setItemCdArr(goods.getItemCd().split(","));
+					tempItem.setOptCdArr(goods.getOptCd().split(","));
+					for(int i = 0 ; i < tempItem.getItemCdArr().length ; i++) {
+						checkParam.setGoodsCd(goods.getGoodsCd());
+						checkParam.setItemCd(tempItem.getItemCdArr()[i]);
+						checkParam.setOptCd(tempItem.getOptCdArr()[i]);
+						checkParam.setGoodsQty(goods.getGoodsQty());
+						checkParam.setGoodsType(goods.getGoodsType());
+						stockResult = goodsService.getCheckStock(checkParam);
+					}
+				} else {		// 세트 구성품이 하나일 경우
+					checkParam.setGoodsCd(goods.getGoodsCd());
+					checkParam.setItemCd(goods.getItemCd());
+					checkParam.setOptCd(goods.getOptCd());
+					checkParam.setGoodsQty(goods.getGoodsQty());
+					checkParam.setGoodsType(goods.getGoodsType());
+					stockResult = goodsService.getCheckStock(checkParam);
+				}
+			} else {
+				// 세트상품이 아닐 경우
+				checkParam.setGoodsCd(goods.getGoodsCd());
+				checkParam.setItemCd(goods.getItemCd());
+				checkParam.setOptCd(goods.getOptCd());
+				checkParam.setGoodsQty(goods.getGoodsQty());
+				checkParam.setGoodsType(goods.getGoodsType());
+				stockResult = goodsService.getCheckStock(checkParam);
+			}
+
+			//String stockResult = "SUCCESS";
 
 			if("SUCCESS".equals(stockResult)) {
 				goods.setSoldoutYn("N");
@@ -289,6 +317,9 @@ public class TsfCartService {
 		// 자사 / 입점업체 리스트 분리
 		order = getCartDelvGoodsCntList(cartGoodsList);
 
+		// 총계 금액 계산
+		setCartListTotAmtInfo(cartGoodsList, order);
+
 		return order;
 	}
 
@@ -645,4 +676,34 @@ public class TsfCartService {
 			}
 		}
 	}
+
+	public void setCartListTotAmtInfo(Collection<Order> cartGoodsList, Order order) {
+		// 장바구니 합계 금액 계산
+		int notSoldoutCnt = 0;
+		for(Order cart : cartGoodsList) {
+			if("N".equals(cart.getSoldoutYn())) {
+				notSoldoutCnt++;
+				// 상품 금액 합계
+				order.setSumOrdAmt(order.getSumOrdAmt() + cart.getCurrPrice());
+
+				// 할인 제외 금액 총계
+				if(cart.getTmtbDcAmt() == 0) {
+					order.setSumRealPayAmt(order.getSumRealPayAmt() + cart.getCurrPrice());
+				} else {
+					order.setSumRealPayAmt(order.getSumRealPayAmt() + cart.getTmtbDcAmt());
+				}
+
+				// 배송비 합계
+				if("Y".equals(cart.getFirstCompYn())) {
+					order.setTotDelvFee(order.getTotDelvFee() + cart.getDelvFee());
+				}
+			}
+		}
+
+		// 상품 할인금액 총계
+		order.setTotDcAmt(order.getSumRealPayAmt() - order.getSumOrdAmt());
+
+		// 장바구니 총액 계산 상품 총 수량
+		order.setTotCartCnt(notSoldoutCnt);
+	}
 }

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

@@ -92,6 +92,7 @@ public class TsfCartController extends TsfBaseController {
 		Order order = cartService.getCartGoodsList(param);
 
 		model.addAttribute("param", param);
+		model.addAttribute("order", order);
 		model.addAttribute("wmsCartList", order.getWmsCartList());
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));

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

@@ -120,7 +120,7 @@
 		     , G.RETURNABLE_YN
 		     , (SELECT CATE1_NO FROM TB_SITE_BRAND WHERE  BRAND_CD = G.BRAND_CD AND SITE_CD = #{siteCd} AND USE_YN = 'Y') AS BRAND_CATE1_NO
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'00')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-		     , (SELECT ) AS COLOR_NM
+		     /*, (SELECT ) AS COLOR_NM*/
 		     , BP.CURR_PRICE AS BENEFIT_PRICE
 		     , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
 		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
@@ -392,8 +392,6 @@
 		     , GC.COMPS_GOODS_CD
 		     , GC.GOODS_TYPE
 		     , GC.QTY
-		     , G.PRODUCT_NO
-		     , G.PRODUCT_CODE
 		     , G.GOODS_STAT
 		  FROM TB_GOODS_COMPOSE GC
 		 INNER JOIN TB_GOODS G

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

@@ -278,29 +278,29 @@
         <div class="tit_box">
             <h3>결제 정보</h3>
             <span>
-                <em class="number">14</em>개의 상품
+                <em class="number" th:text="${order.totCartCnt}"></em>개의 상품
             </span>
         </div>
         <div class="od_amount_box">
             <dl>
                 <div>
                     <dt>상품금액</dt>
-                    <dd><em>1,746,500</em>원</dd>
+                    <dd><em th:text="${#numbers.formatInteger(order.sumOrdAmt, 1, 'COMMA')}"></em>원</dd>
                 </div>
                 <div>
                     <dt>배송비</dt>
-                    <dd><em>0</em>원</dd>
+                    <dd><em th:text="${#numbers.formatInteger(order.totDelvFee, 1, 'COMMA')}"></em>원</dd>
                 </div>
                 <div>
                     <dt>할인금액</dt>
-                    <dd><span class="disc_amount"><em>-46,500</em>원</span></dd>
+                    <dd><span class="disc_amount"><em th:text="${#numbers.formatInteger(order.totDcAmt, 1, 'COMMA')}"></em>원</span></dd>
                 </div>
             </dl>
         </div>
         <div class="totalprice_box">
             <dl>
                 <dt>총 결제 예정 금액</dt>
-                <dd data-weight="price" data-font="lato"><span>1,700,000</span>원</dd>
+                <dd data-weight="price" data-font="lato"><span th:text="${#numbers.formatInteger(order.sumRealPayAmt, 1, 'COMMA')}"></span>원</dd>
             </dl>
         </div>
         <div class="btn_box">
@@ -335,10 +335,10 @@
                     <span>2021.01.01</span>&nbsp;~&nbsp;<span>2021.12.30</span>
                 </p>
                 <button type="button" class="btn_close_code">
-<span>
-    <i class="ico ico_close1"></i>
-    <em class="sr-only">닫기</em>
-</span>
+                    <span>
+                        <i class="ico ico_close1"></i>
+                        <em class="sr-only">닫기</em>
+                    </span>
                 </button>
             </div>
             <div class="info_coupon">