Explorar o código

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

xodud1202 %!s(int64=5) %!d(string=hai) anos
pai
achega
4055ab97bf

+ 18 - 2
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -58,6 +58,7 @@ public class TsfCouponService {
 	 * @since 2021. 02. 16
 	 */
 	public Coupon serialCpnApplyInfo(Coupon param) {
+		
 		// TODO 로그인 정보 입력
 		if(TsfSession.isLogin()) {
 			Login login = TsfSession.getInfo();
@@ -96,6 +97,7 @@ public class TsfCouponService {
 			}
 		} else {
 			// 다운로드 받을 수 있는 쿠폰이 존재하지 않음.
+			cpn = new Coupon();
 			cpn.setResult("해당 쿠폰은 존재하지 않습니다.");
 			return cpn;
 		}
@@ -104,9 +106,23 @@ public class TsfCouponService {
 		cpn.setAvailStdt(dtData.getAvailStdt());
 		cpn.setAvailEddt(dtData.getAvailEddt());
 
+		// 2021.03.03 장바구니 시퀀스 없음 jsh77b 
 		// 장바구니쿠폰 토탈 할인 금액 계산
-		param.setCpnId(cpn.getCpnId());
-		cpn.setDcAmt(getCartCpnApplyTotalAmt(param));
+		if (param.getCartSqArr() != null ) {
+			param.setCpnId(cpn.getCpnId());
+			cpn.setDcAmt(getCartCpnApplyTotalAmt(param));
+		} else {
+			
+			
+			
+			
+			
+			
+			
+		}
+		
+		
+		
 		cpn.setResult("SUCCESS");
 
 		return cpn;

+ 11 - 2
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -181,6 +181,11 @@ public class TsfOrderController extends TsfBaseController {
 		// 3.3 배송비쿠폰목록 조회
 		Collection<Order> delvCpnList = coreOrderService.getDelvCpnList(order);
 		
+		Collection<Order> delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
+		
+		// 3.3.1 배소업체기준 ---> 배송비쿠폰
+		delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
+		
 		// 3.4 고객 보유 포인트 정보 조회
 		int rmPntAmt = coreOrderService.getCustPointInfo(order);
 		
@@ -216,11 +221,15 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("goodsApplyCpnList"				, goodsApplyCpnList);						// 상품적용쿠폰
 		mav.addObject("cartCpnList"						, cartCpnList);								// 장바구니쿠폰목록
 		mav.addObject("delvCpnList"						, delvCpnList);								// 배송비쿠폰목록
-		mav.addObject("prePntDcAmt"						, goodsDcAmtMap.get("prePntDcAmt"));		// 선포인트정보
-		mav.addObject("goodsSumAmt"						, goodsDcAmtMap.get("goodsSumAmt"));		// 상품금액합계
+		
+		mav.addObject("orgGoodsSumAmt"					, goodsDcAmtMap.get("orgGoodsSumAmt"));		// 상품금액합계
+		mav.addObject("cpn1DcSumAmt"					, goodsDcAmtMap.get("cpn1DcSumAmt"));		// 즉시할인금액합계
 		mav.addObject("tmtbDcSumAmt"					, goodsDcAmtMap.get("tmtbDcSumAmt"));		// 다다익선할인금액합계
+		mav.addObject("prePntDcAmt"						, goodsDcAmtMap.get("prePntDcAmt"));		// 선포인트사용가능금액
+
 		mav.addObject("rmPntAmt"						, rmPntAmt);								// 고객포인트정보
 		mav.addObject("rmGfcdAmt"						, rmGfcdAmt);								// 고객상품권정보
+		mav.addObject("savePntSumAmt"					, goodsDcAmtMap.get("savePntSumAmt"));		// 적립예정포인트합계
 		
 		// 104. 사은품정보
 		mav.addObject("freegiftGoodsList"				, resultMap.get("freegiftGoodsList"));		// 사은품상품정보 목록

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

@@ -92,6 +92,11 @@
 
 <!-- // xodud1202 -->
 
+
+<!-- card007 -->
+
+<!-- // card007 -->
+
 <!--  container -->
 <form id="payForm" name="payForm">
 	<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
@@ -407,8 +412,8 @@
 															<dd>
 																<div class="form_field">
 																	<div class="input_wrap">
-																		<input type="text" class="form_control" maxlength="13" placeholder="할인코드를 입력해주세요.">
-																		<button type="button" class="btn btn_dark">적용</button>
+																		<input type="text" id="serialCpnNm" class="form_control" maxlength="13" placeholder="할인코드를 입력해주세요.">
+																		<button type="button" class="btn btn_dark" onclick="serialCpnApply()">적용</button>
 																	</div>
 																</div>
 															</dd>
@@ -544,77 +549,84 @@
 													</dl>
 												</div>
 												
-												<div class="area_selpoint">
-													<dl>
-														<th:block th:if="${prePntDcAmt} > 0">
-															<div>
-																<dt>선 포인트 사용</dt>
-																<dd>
-																	<div class="form_field">
-																		<div>
-																			<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1"> 
-																			<label for="rdi-beforpoint1"><span>사용 안함</span></label>
-																		</div>
-																		<div>
-																			<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2"> 
-																			<label for="rdi-beforpoint2"><span>사용함</span></label> 
-																			<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|"></span>
-																		</div>
-																	</div>
-																</dd>
-															</div>
-														</th:block>
-														<div>
-															<dt>
-																<span class="mid">스타일 포인트</span>
-															</dt>
-															<dd>
-																<div class="form_field">
-																	<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-																	<th:block th:if="${goodsSumAmt} >= 30000">
-																		<div class="input_wrap">
-																			<input type="text" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
-																			<button type="button" class="btn btn_dark">적용</button>
+												<!-- 선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
+												<th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0">
+													<div class="area_selpoint">
+														<dl>
+															<th:block th:if="${prePntDcAmt} > 0">
+																<div>
+																	<dt>선 포인트 사용</dt>
+																	<dd>
+																		<div class="form_field">
+																			<div>
+																				<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1"> 
+																				<label for="rdi-beforpoint1"><span>사용 안함</span></label>
+																			</div>
+																			<div>
+																				<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2"> 
+																				<label for="rdi-beforpoint2"><span>사용함</span></label> 
+																				<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|"></span>
+																			</div>
 																		</div>
-																	</th:block>
-																	<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-																	
-																	<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
-																	<th:block th:if="${goodsSumAmt} < 30000">
-																		<div class="input_wrap">
-																			<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
+																	</dd>
+																</div>
+															</th:block>
+															<th:block th:if="${rmPntAmt} > 0">
+																<div>
+																	<dt>
+																		<span class="mid">스타일 포인트</span>
+																	</dt>
+																	<dd>
+																		<div class="form_field">
+																			<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
+																			<th:block th:if="${orgGoodsSumAmt} >= 30000">
+																				<div class="input_wrap">
+																					<input type="text" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
+																					<button type="button" class="btn btn_dark">적용</button>
+																				</div>
+																				<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
+																				<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
+																			</th:block>
+																			<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
+																			
+																			<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
+																			<th:block th:if="${orgGoodsSumAmt} < 30000">
+																				<div class="input_wrap">
+																					<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
+																				</div>
+																			</th:block>
 																		</div>
-																		<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
-																		<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
-																	</th:block>
+																	</dd>
 																</div>
-															</dd>
-														</div>
-														<div>
-															<dt>
-																<span class="mid">상품권</span>
-															</dt>
-															<dd>
-																<div class="form_field">
-																	<div class="input_wrap">
-																		<input type="text" class="form_control" maxlength="" placeholder="사용할 금액을 입력해주세요.">
-																		<button type="button" class="btn btn_dark">적용</button>
-																	</div>
-																	<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')} 원|"></span></p>
-																	<div class="agree_receipt">
-																		<input id="chk-receipt" type="checkbox"> 
-																		<label for="chk-receipt"><span>상품권 현금영수증 신청</span></label>
-																		<div class="info_box">
+															</th:block>
+															<th:block th:if="${rmGfcdAmt} > 0">
+																<div>
+																	<dt>
+																		<span class="mid">상품권</span>
+																	</dt>
+																	<dd>
+																		<div class="form_field">
 																			<div class="input_wrap">
-																				<input type="text" class="form_control" maxlength="11" placeholder="">
+																				<input type="text" class="form_control" maxlength="" placeholder="사용할 금액을 입력해주세요.">
+																				<button type="button" class="btn btn_dark">적용</button>
+																			</div>
+																			<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')} 원|"></span></p>
+																			<div class="agree_receipt">
+																				<input id="chk-receipt" type="checkbox"> 
+																				<label for="chk-receipt"><span>상품권 현금영수증 신청</span></label>
+																				<div class="info_box">
+																					<div class="input_wrap">
+																						<input type="text" class="form_control" maxlength="11" placeholder="">
+																					</div>
+																				</div>
 																			</div>
 																		</div>
-																	</div>
+																	</dd>
 																</div>
-															</dd>
-														</div>
-													</dl>
-												</div>
+															</th:block>
+														</dl>
+													</div>
+												</th:block>
 											</div> <!-- //할인/혜택 사용 -->
 										</li>
 										<li class="fold_paymethod">
@@ -971,36 +983,59 @@
 								<div class="od_amount_box">
 									<dl>
 										<div>
+											<input type="hidden" name="goodsSumAmt" th:value="${orgGoodsSumAmt}"/>
 											<dt>상품금액</dt>
-											<dd id="goodsSumAmt" th:text="|${#numbers.formatInteger(goodsSumAmt, 1, 'COMMA')}원|"></dd>
+											<dd id="goodsSumAmt" th:text="|${#numbers.formatInteger(orgGoodsSumAmt, 1, 'COMMA')}원|"></dd>
 										</div>
 										<div>
+											<input type="hidden" name="delvSumAmt" th:value="${sumDelvFee}"/>
 											<dt>배송비</dt>
 											<dd id="delvSumAmt" th:text="|${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}원|"></dd>
 										</div>
 										<div>
+											<input type="hidden" name="cpn1DcSumAmt" th:value="${cpn1DcSumAmt}"/>
 											<dt>할인금액</dt>
-											<dd><span class="disc_amount" id="goodsDcSumAmt"></span></dd>
+											<th:block th:if="${cpn1DcSumAmt} > 0">
+												<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|-${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
+											<th:block th:if="${cpn1DcSumAmt} < 1">
+												<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
 										</div>
 										<div>
+											<input type="hidden" name="tmtbDcSumAmt" th:value="${tmtbDcSumAmt}"/>
 											<dt>다다익선할인금액</dt>
-											<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|-${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
+											<th:block th:if="${tmtbDcSumAmt} > 0">
+												<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|-${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
+											<th:block th:if="${tmtbDcSumAmt} < 1">
+												<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
 										</div>
 										<div>
+											<input type="hidden" name="couponDcSumAmt" value="0"/>
 											<dt>쿠폰할인금액</dt>
 											<dd><span class="disc_amount" id="couponDcSumAmt"></span></dd>
 										</div>
 										<div>
+											<input type="hidden" name="prePntDcAmt" th:value="${prePntDcAmt}"/>
 											<dt>선포인트 사용</dt>
-											<dd><span class="disc_amount" id="prePntDcSumAmt"></span></dd>
+											<th:block th:if="${prePntDcAmt} > 0">
+												<dd><span class="disc_amount" id="prePntDcSumAmt" th:text="|-${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
+											<th:block th:if="${prePntDcAmt} < 1">
+												<dd><span class="disc_amount" id="prePntDcSumAmt" th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
+											</th:block>
 										</div>
 										<div>
+											<input type="hidden" name="pntDcAmt" value="0"/>
 											<dt>포인트 사용</dt>
-											<dd><span class="disc_amount" id="pntDcSumAmt"></span></dd>
+											<dd><span class="disc_amount" id="pntDcAmt">0원</span></dd>
 										</div>
 										<div>
+											<input type="hidden" name="gfcdUseAmt" value="0"/>
 											<dt>상품권 사용</dt>
-											<dd><span class="disc_amount" id="gfcdUseSumAmt"></span></dd>
+											<dd><span class="disc_amount" id="gfcdUseSumAmt">0원</span></dd>
 										</div>
 									</dl>
 								</div>
@@ -1008,11 +1043,12 @@
 									<dl>
 										<dt>총 결제 예정 금액</dt>
 										<dd data-weight="price" data-font="lato">
-											<span>3,546,200</span>원
+											<span id="realOrdAmt"></span>원
 										</dd>
 									</dl>
-									<p class="info_point">
-										스타일 포인트 <span class="save_point">3,500 P</span> 적립예정
+									<p class="info_point">스타일 포인트 
+										<input type="hidden" name="savePntSumAmt" th:value="${savePntSumAmt}"/>
+										<span class="save_point" id="savePntSumAmt" th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}P|"></span> 적립예정
 									</p>
 								</div>
 							</div>
@@ -1253,7 +1289,8 @@ $(document).ready( function() {
 	var resCnt 				= [[${resCnt}]];				// 자사 예약 배송건수
 	var delvCnt 			= [[${delvCnt}]];				// 입전 일반 배송건수
 	var shotDelvYn			= [[${shotDelvYn}]];			// 총알배송여부
-	var sumDelvFee			= [[${sumDelvFee}]];			// 배송비합계
+	var orgSumDelvFee		= [[${sumDelvFee}]];			// 최초배송비합계
+	var prePntDcAmt			= [[${prePntDcAmt}]];			// 선포인트사용가능금액
 	
 	// 할인관련정보 변수선언
 	var freegiftList		= [[${freegiftList}]];			// 사은품 프로모션 목록
@@ -1347,6 +1384,52 @@ $(document).ready( function() {
 		custCpnInit();
 	});
 	
+	// 사은품선택 라디오 버튼 기능
+	$(".freegiftRdo").on("click", function() {
+		var total_gift 		= 0;
+		var total_deduct 	= 0;
+		
+		$(".freegiftRdo").each(function(){
+			// 라디오버튼 사은품 체크
+			if ($(this).is(":checked")) {
+				// 수령거부가 아닐때 체크
+				if ($(this).val() != "noSel") {
+					total_gift 		+= 1;
+					total_deduct 	+= parseInt($(this).attr("usepoint"));
+				}
+			}
+		});
+		
+		$(".total_gift").text(total_gift);			// 사은품총선택개수
+		$(".total_deduct").text(total_deduct);		// 사은품총사용포인트
+	});
+	
+	// 프로모션 쿠폰 적용 함수
+	function serialCpnApply() {
+		let data = {
+			rdCpnNm : $("#payForm #serialCpnNm").val()
+		}
+
+		let jsonData = JSON.stringify(data);
+
+		$.ajax( {
+			type			: "POST",
+			url 			: '/cart/list/serialCpnApply',
+			contentType		: 'application/json',
+			dataType 		: 'json',
+			data 			: jsonData,
+			success 		: function(result) {
+				// SUCCESS
+				// 성공일때는 쿠폰정보 및 포인트 정보 reset
+				if (result.serialCpnInfo.result == "SUCCESS") {
+					
+				} else {
+					alert(result.serialCpnInfo.result);
+				}
+			}
+		});
+	}
+	
 	// 쿠폰 최대할인금액 초기화 버튼 설정
 	$("#chk-maxdisc").on("click", function(){
 		if ($(this).is(":checked")) {
@@ -1586,36 +1669,6 @@ $(document).ready( function() {
 		});
 	}
 	
-	// 쿠폰할인금액합계설정
-	var custCpnSumAmtCal = function() {
-		var cpnDcSumAmt = 0;
-		var cpnApplyCnt = 0;
-		
-		$("input[name='cpnDcAmt']").each(function(){
-			cpnDcSumAmt = cpnDcSumAmt + parseInt($(this).val());
-			
-			// 적용된 쿠폰 수량
-			if (parseInt($(this).val()) > 0) {
-				cpnApplyCnt++;
-			}
-		});
-		
-		// 쿠폰영역
-		$(".maxdisc_amount").text("(-" + cpnDcSumAmt.addComma() + "원)"); // 쿠폰할인금액합계
-		$("#cpnApplyCnt").text(cpnApplyCnt + "장");
-		
-		// 상품목록영역
-		$("#couponDcSumAmt").text("-" + cpnDcSumAmt.addComma() + "원"); // 쿠폰할인금액합계
-		// 배송비할인적용
-		$("input[name='cpnType']").each(function(){
-			if ($(this).val() == "delvCpn") {
-				sumDelvFee = parseInt(sumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val()); 
-				// 최종배송비
-				$("#delvSumAmt").text(sumDelvFee.addComma() + "원");
-			}
-		});
-	};
-	
 	// 쿠폰 선택없음 기능 구현
 	var cpnApplyDel = function(obj) {
 		// 쿠폰타입(상품쿠폰, 장바구니쿠폰, 배송비쿠폰)
@@ -1665,25 +1718,58 @@ $(document).ready( function() {
 		}
 	}
 	
-	// 사은품선택 라디오 버튼 기능
-	$(".freegiftRdo").on("click", function() {
-		var total_gift 		= 0;
-		var total_deduct 	= 0;
+	// 쿠폰할인금액합계설정
+	var custCpnSumAmtCal = function() {
+		var cpnDcSumAmt = 0;
+		var cpnApplyCnt = 0;
 		
-		$(".freegiftRdo").each(function(){
-			// 라디오버튼 사은품 체크
-			if ($(this).is(":checked")) {
-				// 수령거부가 아닐때 체크
-				if ($(this).val() != "noSel") {
-					total_gift 		+= 1;
-					total_deduct 	+= parseInt($(this).attr("usepoint"));
-				}
+		$("input[name='cpnDcAmt']").each(function(){
+			cpnDcSumAmt = cpnDcSumAmt + parseInt($(this).val());
+			
+			// 적용된 쿠폰 수량
+			if (parseInt($(this).val()) > 0) {
+				cpnApplyCnt++;
 			}
 		});
 		
-		$(".total_gift").text(total_gift);			// 사은품총선택개수
-		$(".total_deduct").text(total_deduct);		// 사은품총사용포인트
-	});
+		// 쿠폰영역
+		$(".maxdisc_amount").text("(-" + cpnDcSumAmt.addComma() + "원)"); // 쿠폰할인금액합계
+		$("#cpnApplyCnt").text(cpnApplyCnt + "장");
+		
+		// 상품목록영역
+		$("#couponDcSumAmt").text("-" + cpnDcSumAmt.addComma() + "원"); // 쿠폰할인금액합계
+		$("input[name='couponDcSumAmt']").val(cpnDcSumAmt);
+		
+		// 배송비할인적용
+		$("input[name='cpnType']").each(function(){
+			if ($(this).val() == "delvCpn") {
+				sumDelvFee = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
+				
+				// 최종배송비
+				$("#delvSumAmt").text(sumDelvFee.addComma() + "원");
+				$("input[name='delvSumAmt']").val(sumDelvFee);
+			}
+		});
+		
+		var goodsSumAmt 		= parseInt($("input[name='goodsSumAmt']").val());
+		var delvSumAmt 			= parseInt($("input[name='delvSumAmt']").val());
+		var cpn1DcSumAmt 		= parseInt($("input[name='cpn1DcSumAmt']").val());
+		var tmtbDcSumAmt 		= parseInt($("input[name='tmtbDcSumAmt']").val());
+		var couponDcSumAmt 		= parseInt($("input[name='couponDcSumAmt']").val());
+		var prePntDcAmt 		= parseInt($("input[name='prePntDcAmt']").val());
+		var pntDcAmt 			= parseInt($("input[name='pntDcAmt']").val());
+		var gfcdUseAmt 			= parseInt($("input[name='gfcdUseAmt']").val());
+		
+		// 실결제금액(PG)
+		var realOrdAmt			= (goodsSumAmt + delvSumAmt) - (cpn1DcSumAmt + tmtbDcSumAmt + couponDcSumAmt + prePntDcAmt) - (pntDcAmt + gfcdUseAmt);
+		$("#realOrdAmt").text(realOrdAmt.addComma());
+		
+		// 적립예정포인트
+		var savePntSumAmt		= parseInt($("input[name='savePntSumAmt']").val());
+		var tempSavePnt			= savePntSumAmt - prePntDcAmt;
+		
+		$("#savePntSumAmt").text(tempSavePnt.addComma()+"P");
+	};
 </script>
 </th:block>
 </body>