Преглед на файлове

Merge remote-tracking branch 'origin/xodud1202' into develop

xodud1202 преди 5 години
родител
ревизия
66f36073eb

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

@@ -1293,4 +1293,18 @@ public class TsfCartService {
 		List<Integer> arr = Arrays.asList(param.getArrTmtbSq());
 		return cartDao.selectTmtbSectionValList(arr);
 	}
+
+	public Collection<Goods> selectTmtbSalesGoodsOptCd(Goods param) {
+		Goods goods = new Goods();
+		if(TsfSession.isLogin()) {
+			goods.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			goods.setCustNo(0);
+		}
+
+		goods.setFrontGb(TsfSession.getFrontGb());
+		goods.setGoodsCd(param.getGoodsCd());
+
+		return goodsDao.getDelvFeeSaveGoodsList(goods);
+	}
 }

+ 34 - 5
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -1,5 +1,6 @@
 package com.style24.front.biz.web;
 
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -184,23 +185,32 @@ public class TsfCartController extends TsfBaseController {
 		}
 
 		// 수량 및 금액 다다익선 최소 조건 조회
+		DecimalFormat format = new DecimalFormat("###,###");
 		List<Order> tmtbSalesValueList = (ArrayList<Order>) cartService.selectTmtbSalesValueList(param);
 		// 조건 멘트 적용
-		StringBuilder tmtbDcDesc = new StringBuilder();
+		List<StringBuilder> tmtbDcDescList = new ArrayList<StringBuilder>();
 		for(Order tmtbDcValue : tmtbSalesValueList) {
 			if(!StringUtils.isEmpty(tmtbDcValue.getDefaultYn()) && "Y".equals(tmtbDcValue.getDefaultYn())) {
+				StringBuilder tmtbDcDesc = new StringBuilder();
 				if(TscConstants.ApplyGb.QTY.value().equals(tmtbDcValue.getSectionGb())) {
 					tmtbDcDesc.append(tmtbDcValue.getSectionVal()).append("개 이상 구매시 ");
 				} else if (TscConstants.ApplyGb.AMT.value().equals(tmtbDcValue.getSectionGb())) {
-					tmtbDcDesc.append(tmtbDcValue.getSectionVal()).append("원 이상 구매시 ");
+					tmtbDcDesc.append(format.format(tmtbDcValue.getSectionVal())).append("원 이상 구매시 ");
 				}
 
 				if(TscConstants.DcWay.AMT.value().equals(tmtbDcValue.getDcWay())) {
-					tmtbDcDesc.append(tmtbDcValue.getDcVal()).append("원 할인");
+					tmtbDcDesc.append(format.format(tmtbDcValue.getDcVal())).append("원 할인");
+				} else if(TscConstants.DcWay.RATE.value().equals(tmtbDcValue.getDcWay())) {
+					tmtbDcDesc.append(tmtbDcValue.getDcVal()).append("% 할인");
 				}
+
+				tmtbDcDescList.add(tmtbDcDesc);
 			}
 		}
 
+		// 다다익선 조건
+		mav.addObject("tmtbDcDescList", tmtbDcDescList);
+
 		// 다다익선 상품 조회 (수량, 금액 섞어서)
 		mav.addObject("goodsList", goodsService.getTmtbGoodsList(param));
 
@@ -342,8 +352,8 @@ public class TsfCartController extends TsfBaseController {
 	/**
 	 * 퀵메뉴 장바구니 리스트
 	 * @return
-	 * @author sowon
-	 * @since 2021. 4. 1
+	 * @author xodud1202
+	 * @since 2021. 04. 02
 	 */
 	@GetMapping("/quick/cart/list")
 	@ResponseBody
@@ -369,4 +379,23 @@ public class TsfCartController extends TsfBaseController {
 
 		return cart;
 	}
+
+	/**
+	 * 상품 품절 제외 옵션 조회
+	 * @param param
+	 * @return
+	 */
+	@ResponseBody
+	@PostMapping("/tmtb/sales/goods/optcd")
+	public Goods selectTmtbSalesGoodsOptCd(@RequestBody Goods param) {
+		Collection<Goods> goodsList = cartService.selectTmtbSalesGoodsOptCd(param);
+		Goods result = new Goods();
+		for(Goods goods : goodsList) {
+			result = goods;		// goodsList는 상품정보 1라인만 조회됨
+		}
+
+		log.info("CHECK MY RESULT ::::: {} / {} / {}", goodsList.size(), result.getGoodsCd(), result.getOptCd());
+
+		return result;
+	}
 }

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

@@ -1481,17 +1481,22 @@
 		             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    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 		             AND    VS.SOLDOUT_YN = 'N'
 		             AND    VS.CURR_STOCK_QTY > 0
 		             AND    BR.USE_YN = 'Y'
 		             AND    CM.USE_YN = 'Y'
+		             <if test="goodsCd != null and goodsCd != ''">
+		             AND    G.GOODS_CD = #{goodsCd}
+		             </if>
+		             <if test="price != null and price != ''">
+		             AND    G.CURR_PRICE BETWEEN ${price} AND ${price} + 10000
+		             </if>
 		             <if test="delvFeeCd != null and delvFeeCd != ''">
-		             AND G.DELV_FEE_CD = #{delvFeeCd}
+		             AND    G.DELV_FEE_CD = #{delvFeeCd}
 		             </if>
 		             <if test="selfGoodsYn != null and selfGoodsYn != ''">
-		             AND G.SELF_GOODS_YN = #{selfGoodsYn}
+		             AND    G.SELF_GOODS_YN = #{selfGoodsYn}
 		             </if>
 		             GROUP  BY G.GOODS_CD
 		             LIMIT  20 ) A

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

@@ -1,6 +1,6 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org">
-<!-- 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
+<!-- 배송비 SAVE 상품보기 -->
 	<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>
@@ -57,7 +57,7 @@
 		</div>
 	</div>
 	<a href="#close-modal" rel="modal:close" id="dlvrSavePop_close" class="close-modal">Close</a>
-	<!-- // 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
+	<!-- // 배송비 SAVE 상품보기 -->
 
 <script th:inline="javascript">
 	$(document).ready(function() {

+ 44 - 145
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -1,7 +1,7 @@
 <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="moresaleLabel">다다익선 상품</h5>
 	</div>
@@ -10,150 +10,32 @@
 				<div class="area_benefit">
 					<span class="tag primary">SALE</span>
 					<p>
-						<span>5개 이상 구매 시 1만원 할인</span>
-						<span>10만원 이상 구매 시 1만원 할인</span>
+						<span th:each="desc, index : ${tmtbDcDescList}" th:text="${desc}"></span>
 					</p>
 				</div>
 				<!-- -->
 				<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 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 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>
-									</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>
-											</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>
-											</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>
-											</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>
-											</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 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">
 											<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>
+											<p class="itemBrand" th:text="${goods.brandGroupNm}"></p>
+											<div class="itemName" th:text="${goods.goodsFullNm}"></div>
+											<p class="itemPrice">
+												<span th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></span>
+												<th:block th:if="${goods.listPrice != goods.currPrice}">
+													<span class="itemPrice_original" th:text="${#numbers.formatInteger(goods.listPrice, 1, 'COMMA')}"></span>
+													<span class="itemPercent" th:text="${goods.dcRate + '%'}"></span>
+												</th:block>
 											</p>
 										</a>
-										<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+										<button type="button" class="btn btn_default btn_sm" th:onclick="fnAddCartTmtbSalesGoods([[${goods.goodsCd}]])"><span>쇼핑백 담기</span></button>
 									</div>
 								</div>
 							</div>
@@ -178,7 +60,8 @@
 					hide: true,
 				},
 			});
-		</script></div>
+		</script>
+	</div>
 </div>
 <a href="#close-modal" rel="modal:close" id="moresalePop_close" class="close-modal">Close</a>
 
@@ -193,18 +76,34 @@
 		}
 	});
 
-	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);
+	function fnAddCartTmtbSalesGoods(goodsCd) {
+		let data = JSON.stringify({goodsCd : goodsCd});
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/optcd',
+			data		: data,
+			dataType 	: 'json',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				alert(result.goodsCd + " / " + result.optCd);
+
+				let compsList = [];
+				let temp 			= new Object;
+				temp.goodsCd 		= goodsCd;
+				temp.optCd 			= result.optCd;
+				temp.goodsQty 		= 1;
+				temp.goodsType 		= "G056_N";
+				temp.cartGb 		= "C";
+				temp.popupYn		= "Y";
+				compsList.push(temp);
 
-		cfnAddCart(compsList);
+				cfnAddCart(compsList);
+			}
+		});
 	};
 </script>
 </html>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -571,7 +571,7 @@ $(document).ready( function() {
 	custemerInfoSet();
 	
 	// 999. 개발화면정보설정
-	var devTemp = true;
+	var devTemp = false;
 	var arr = []
 	arr[0] = "orderInfo";
 	arr[1] = "freegiftInfo";