Преглед изворни кода

이태영 - 20210428 장바구니 수정 중

xodud1202 пре 5 година
родитељ
комит
c5c924dde6

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

@@ -950,6 +950,7 @@ public class TsfCartService {
 		}
 
 		goods.setPrice(param.getDelvFeeSaveGoodsAmt());
+		goods.setFrontGb(TsfSession.getFrontGb());
 
 		if(TsfSession.isLogin()) {
 			goods.setCustNo(TsfSession.getInfo().getCustNo());

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

@@ -151,9 +151,8 @@ public class TsfCartController extends TsfBaseController {
 		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 
-	@PostMapping("/add/goods/list")
+	@PostMapping("/delv/fee/save/goods/list")
 	public ModelAndView selectCartAddGoodsList(Order param, Model model) {
-		log.info("CHECK PARAM ::::: {} / {}", param.getDelvFeeCd(), param.getDelvFeeSaveGoodsAmt());
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("goodsList", cartService.getDelvFeeSaveGoodsList(param));
 		mav.setViewName(super.getDeviceViewName("cart/CartAddGoodsPopup"));

+ 33 - 36
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1433,42 +1433,39 @@
 	<!-- 배송비 SAVE 상품 조회 -->
 	<select id="getDelvFeeSaveGoodsList" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getDelvFeeSaveGoodsList : 배송비 SAVE 상품 조회 */
-		SELECT A.GOODS_CD
-		     , A.CURR_PRICE
-		     , A.PRICE
-		     , ROUND((((A.PRICE / A.CURR_PRICE) - 1) * 100) * - 1, 0) AS DC_RATE
-		     , A.BRAND_NM
-		     , A.SYS_IMG_NM
-		FROM (SELECT G.GOODS_CD
-		           , CASE WHEN G.LIST_PRICE <![CDATA[ < ]]> G.CURR_PRICE THEN G.LIST_PRICE ELSE G.CURR_PRICE END AS CURR_PRICE
-		           , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD, #{frontGb}) AS PRICE
-		           , G.MAIN_COLOR_CD
-		           , (SELECT BRAND_ENM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
-		           , G.GOODS_TYPE
-		           , G.SELF_GOODS_YN
-		           , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
-		                  ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
-		      FROM TB_GOODS G
-		      INNER JOIN (SELECT VS.GOODS_CD
-		                  FROM   VW_STOCK VS
-		                  WHERE  VS.SOLDOUT_YN = 'N'
-		                  AND    VS.CURR_STOCK_QTY > 0
-		                  GROUP  BY VS.GOODS_CD ) VS
-		      ON    G.GOODS_CD = VS.GOODS_CD
-		      WHERE 1=1
-		      AND G.GOODS_STAT = 'G008_90'
-		      AND G.GOODS_TYPE = 'G056_N'
-		      AND G.SELF_MALL_YN = 'Y'
-		      AND G.MIN_ORD_QTY = 1
-		      AND G.CURR_PRICE BETWEEN ${price} AND ${price} + 10000
-		      <if test="delvFeeCd != null and delvFeeCd != ''">
-		      AND G.DELV_FEE_CD = #{delvFeeCd}
-			  </if>
-		      <if test="selfGoodsYn != null and selfGoodsYn != ''">
-		      AND G.SELF_GOODS_YN = #{selfGoodsYn}
-			  </if>
-		      ORDER  BY ITEMKIND_CD
-		      LIMIT 20) A
+		SELECT G.GOODS_CD
+		     , G.LIST_PRICE
+		     , G.GOODS_NM
+		     , A.OPT_CD
+		     , (SELECT BRAND_ENM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
+		     , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD,  #{frontGb}) AS PRICE
+		     , CASE WHEN G.LIST_PRICE <![CDATA[ < ]]> G.CURR_PRICE THEN G.LIST_PRICE ELSE G.CURR_PRICE END AS CURR_PRICE
+		     , ROUND((((FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD,  #{frontGb}) / G.LIST_PRICE) - 1) * 100) * - 1, 0) AS DC_RATE
+		     , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y')
+		            ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		FROM   TB_GOODS G
+		INNER  JOIN (SELECT G.GOODS_CD
+		                  , MIN(VS.OPT_CD) AS OPT_CD
+		             FROM   TB_GOODS G
+		             INNER  JOIN VW_STOCK VS
+		             ON     G.GOODS_CD = VS.GOODS_CD
+		             WHERE  1=1
+		             AND    G.GOODS_STAT = 'G008_90'
+		             AND    G.GOODS_TYPE = 'G056_N'
+		             AND    G.SELF_MALL_YN = 'Y'
+		             AND    G.MIN_ORD_QTY = 1
+		             AND    G.CURR_PRICE BETWEEN ${price} AND ${price} + 10000
+		             AND    VS.SOLDOUT_YN = 'N'
+		             AND    VS.CURR_STOCK_QTY > 0
+		             <if test="delvFeeCd != null and delvFeeCd != ''">
+		             AND G.DELV_FEE_CD = #{delvFeeCd}
+		             </if>
+		             <if test="selfGoodsYn != null and selfGoodsYn != ''">
+		             AND G.SELF_GOODS_YN = #{selfGoodsYn}
+		             </if>
+		             GROUP  BY G.GOODS_CD
+		             LIMIT  20 ) A
+		ON     G.GOODS_CD = A.GOODS_CD
 	</select>
 	
 </mapper>

+ 38 - 49
src/main/webapp/WEB-INF/views/web/cart/CartAddGoodsPopupWeb.html

@@ -1,74 +1,43 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org">
 <!-- 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
-	<div class="modal-dialog" role="document">
+	<div class="modal-dialog" role="document" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 		<div class="modal-content"><div class="modal-header">
 			<h5 class="modal-title" id="dlvrSaveLabel">배송비 SAVE 상품</h5>
-			<input type="text" th:value="${goodsList.size()}" />
 		</div>
 			<div class="modal-body">
 				<div class="pop_cont">
 					<div class="area_slider">
 						<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
 							<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
-								<div class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
+								<div th:each="goods, status : ${goodsList}" class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
 									<div class="item_prod">
 										<div class="item_state">
-											<a href="#none" class="itemLink">
+											<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" class="itemLink">
 												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+													<img class="vLHTC pd_img" th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
 												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
+												<p class="itemBrand" th:text="${goods.brandNm}"></p>
+												<div class="itemName" th:text="${goods.goodsNm}"></div>
+												<p class="itemPrice">
+													<span th:text="${#numbers.formatInteger(goods.price, 1, 'COMMA')}"></span>
+													<th:block th:if="${goods.currPrice != goods.price}">
+														<span class="itemPrice_original" th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></span>
+														<span class="itemPercent" th:text="${#strings.replace(goods.dcRate, '.0', '') + '%'}"></span>
+													</th:block>
 												</p>
 											</a>
-											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide swiper-slide-next" style="width: 150px; margin-right: 20px;">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class=" itemPercent">10%</span>
-												</p>
-											</a>
-											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class=" itemPercent">10%</span>
-												</p>
-											</a>
-											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+											<input type="text" th:value="${goods.goodsCd}">
+											<input type="text" th:value="${goods.optCd}">
+											<button type="button" class="btn btn_default btn_sm" th:onclick="fnAddCartDelvFeeSaveGoods([[${goods.goodsCd}]], [[${goods.optCd}]])"><span>쇼핑백 담기</span></button>
 										</div>
 									</div>
 								</div>
 							</div>
 							<!-- Add Scrollbar -->
 							<div class="swiper-scrollbar"></div>
-							<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
+							<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
+						</div>
 					</div>
 					<!-- -->
 				</div>
@@ -94,7 +63,27 @@
 
 <script th:inline="javascript">
 	$(document).ready(function() {
-
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("배송비 SAVE 상품이 없습니다.");
+			$("#dlvrSavePop_close").trigger("click");
+		} else {
+			$("#dlvrSavePop").modal("show");
+		}
 	});
+
+	function fnAddCartDelvFeeSaveGoods(goodsCd, optCd) {
+		let compsList = [];
+		let temp 			= new Object;
+		temp.goodsCd 		= goodsCd;
+		temp.optCd 			= optCd;
+		temp.goodsQty 		= 1;
+		temp.goodsType 		= "G056_N";
+		temp.cartGb 		= "C";
+		temp.popupYn		= "Y";
+		compsList.push(temp);
+
+		cfnAddCart(compsList);
+	};
 </script>
 </html>

+ 1 - 2
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -316,8 +316,7 @@
 		param.delvFeeCd = delvFeeCd;
 		param.delvFeeSaveGoodsAmt = delvFeeSaveGoodsAmt;
 
-		gagajf.ajaxSubmit("/cart/add/goods/list", "html", "dlvrSavePop", param);
-		$("#dlvrSavePop").modal("show");
+		gagajf.ajaxSubmit("/cart/delv/fee/save/goods/list", "html", "dlvrSavePop", param);
 	};
 	$("#dlvrSavePop_close").click(function() {
 		$("#dlvrSavePop").modal("hide");

+ 6 - 0
src/main/webapp/ux/style24_link.js

@@ -269,6 +269,12 @@ function cfnAddCart(cartList) {
 					});
 					
 					fnGetCartGoodsList();
+					
+					// 장바구니 팝업에서
+					if(cartList != null && cartList[0].popupYn != null && cartList[0].popupYn == "Y") {
+						let data = {shotDelvUseYn : $("input[name=shotDelvUseYn]:checked").val()};
+						getCartList(data);
+					}
 				} else if (result.cartGb == "O"){
 					let orderHtml = "";
 					for(let i = 0 ; i < result.cartSqList.length ; i++) {