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

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

card007 5 лет назад
Родитель
Сommit
60573bb590

+ 77 - 14
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -157,7 +157,7 @@ public class TsfOrderController extends TsfBaseController {
 		}
 		
 		// 선물받기여부
-		String orderGiftYn = "N";
+		String giftPackYn = "N";
 		
 		// 1.3. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
 		if (coreOrderService.getGiftOrderCheck(order) > 0) {
@@ -167,7 +167,7 @@ public class TsfOrderController extends TsfBaseController {
 				return mav;
 			}
 			// 선물받기여부
-			orderGiftYn = "Y";
+			giftPackYn = "Y";
 			
 			// 선물하기일때 PC 로 접근하면 
 			if ("P".equals(TsfSession.getFrontGb())) {
@@ -206,12 +206,12 @@ public class TsfOrderController extends TsfBaseController {
 		} 
 		
 		// 2.2 선물받기 Y 이면 총알배송 불가
-		if ("Y".equals(orderGiftYn)) {
+		if ("Y".equals(giftPackYn)) {
 			order.setShotDelvUseYn("N");
 		}
 		
 		order.setShotDelvYn(order.getShotDelvUseYn());
-		order.setOrderGiftYn(orderGiftYn);
+		order.setGiftPackYn(giftPackYn);
 
 		// 3. 장바구니상품시퀀스 상품목록조회
 		// 3.1 즉시할인, 다다익선 할인금액 정보 적용 상품 정보
@@ -263,7 +263,7 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("isLogin"				, TsfSession.isLogin());					// 로그인여부
 		
 		// 4.6 선물받기여부
-		mav.addObject("orderGiftYn"			, orderGiftYn);								// 선물받기여부
+		mav.addObject("giftPackYn"			, giftPackYn);								// 선물받기여부
 
 		mav.setViewName(super.getDeviceViewName("order/OrderForm"));
 		
@@ -510,6 +510,8 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("tmtbDcSumAmt"		, goodsDcAmtMap.get("tmtbDcSumAmt"));		// 다다익선할인금액합계
 		mav.addObject("prePntDcAmt"			, goodsDcAmtMap.get("prePntDcAmt"));		// 선포인트사용가능금액
 		mav.addObject("savePntSumAmt"		, goodsDcAmtMap.get("savePntSumAmt"));		// 적립예정포인트합계
+		
+		mav.addObject("order"				, order);									// 파라미터
 		mav.setViewName(super.getDeviceViewName("order/OrderListInfo"));
 		
 		return mav;
@@ -730,6 +732,7 @@ public class TsfOrderController extends TsfBaseController {
 		log.info("order.getFreegiftSqArr()     ::: {}", order.getFreegiftSqArr());
 		log.info("order.getSexGb()             ::: {}", order.getSexGb());
 		log.info("order.getBirthYmd()          ::: {}", order.getBirthYmd());
+		log.info("order.getGiftMsg()           ::: {}", order.getGiftMsg());
 		
 		for(int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
 			log.info("order.getFreegiftGoodsArr()  ::: {}", order.getFreegiftGoodsArr()[i]);
@@ -821,31 +824,46 @@ public class TsfOrderController extends TsfBaseController {
 		
 		ModelAndView mav = new ModelAndView();
 		
-		// 1. 로그인체크 후 custNo 설정
+		// 1. 주문번호 체크
+		if (order.getOrdNo() == null) {
+			mav.setViewName("redirect:/");
+			return mav;
+		}
+		
+		// 2. 로그인체크 후 custNo 설정
 		if (TsfSession.isLogin()) {
 			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
 		} else {
 			order.setCustNo(0);
 		}
 		
-		// 2. 결제완료정보조회
+		// 3. 결제완료정보조회
 		GagaMap resultMap = coreOrderService.getOrderCompleteInfo(order);
 		
-		// 2.1 본인회원인 경우 체크
+		// 3.1 본인회원인 경우 체크
 		Order orderInfo = (Order) resultMap.get("orderInfo");
 		if (orderInfo.getCustNo() != 0) {
 			if (TsfSession.isLogin()) {
 				if (!TsfSession.getInfo().getCustNo().equals(orderInfo.getCustNo())) {
-					mav.setViewName("redirect:/cart/list/form");
+					mav.setViewName("redirect:/");
 					return mav;
 				}
 			} else {
-				mav.setViewName("redirect:/cart/list/form");
+				mav.setViewName("redirect:/");
 				return mav;
 			}
 		}
 		
-		// 3. 화면전송변수설정
+		// 3.2 상품주문금액이 없는 경우 체크
+		int goodsSumAmt = (Integer) resultMap.get("goodsSumAmt");
+		if (goodsSumAmt < 1) {
+			mav.setViewName("redirect:/");
+			return mav;
+		}
+		
+		// TODO 주문정보 알림톡전송
+		
+		// 4. 화면전송변수설정
 		mav.addObject("orderInfo"			, resultMap.get("orderInfo"));			// 주문기본정보
 		mav.addObject("ordSumAmt"			, resultMap.get("ordSumAmt"));			// 주문금액합계
 		mav.addObject("dcSumAmt"			, resultMap.get("dcSumAmt"));			// 할인금액합계
@@ -863,15 +881,60 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("allianceDcAmt"		, resultMap.get("allianceDcAmt"));		// 제휴할인합계
 		mav.addObject("isLogin"				, TsfSession.isLogin());				// 로그인여부
 		mav.addObject("delvAddrSq"			, resultMap.get("delvAddrSq"));			// 배송지번호
+		mav.setViewName(super.getDeviceViewName("order/OrderComplete"));
 		
-		// TODO 주문정보 알림톡전송
+		return mav;
+	}
+	
+	/**
+	 * 선물받기완료페이지
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 04. 15
+	 */
+	@ResponseBody
+	@RequestMapping(value = "/giftComplete")
+	public ModelAndView orderGiftComplete(Order order) {
 		
+		ModelAndView mav = new ModelAndView();
 		
+		// 0. 주문번호 체크
+		if (order.getOrdNo() == null) {
+			mav.setViewName("redirect:/");
+			return mav;
+		}
+		
+		// 2. 결제완료정보조회
+		GagaMap resultMap = coreOrderService.getOrderGiftCompleteInfo(order);
+		
+		// 4. 화면전송변수설정
+		mav.addObject("orderInfo"			, resultMap.get("orderInfo"));			// 주문기본정보
+		mav.addObject("orderList"			, resultMap.get("orderList"));			// 주문목록정보
+		mav.addObject("orderListCnt"		, resultMap.get("orderListCnt"));		// 주문목록갯수
+		mav.addObject("giftAddrInpYn"		, resultMap.get("giftAddrInpYn"));		// 선물받기배송지등록여부
+		mav.addObject("delvRegYn"			, resultMap.get("delvRegYn"));			// 배송지등록여부
+		
+		mav.setViewName(super.getDeviceViewName("order/OrderGiftComplete"));
 		
-		// TODO 주문정보조회
-		mav.setViewName(super.getDeviceViewName("order/OrderComplete"));
 		return mav;
 	}
+	
+	/**
+	 * 선물주문배송신청완료
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 04. 15
+	 */
+	@ResponseBody
+	@PostMapping(value = "/giftDelvComplete")
+	public int updateDeliveryAddr(@RequestBody Order order) {
+		int rtn = coreOrderService.updateOrderDetailGiftAddrInpYn(order);
+		return rtn;
+	}
 
 	/**
 	 * 총알배송 가능 지역 체크

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -104,6 +104,12 @@
 			</div>
 		</div>
 	</div>
+	
+	<!-- 2021.04.15 스크립트오류때문에 임시 소스 -->
+	<div class="btPopAuto"> 
+		<div class="btPopAuto_head"></div>
+		<div class="btPopAuto_body"></div>
+	</div>
 
 <script th:inline="javascript">
 /*<![CDATA[*/

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html

@@ -119,5 +119,5 @@
 		/* \\Eiengine Script (Visit) */
 	</script>
 </head>
-
+	
 </html>

+ 75 - 52
src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html

@@ -116,62 +116,76 @@
 			</div>
 			<!-- 폴딩리스트 -->
 		</div>
-		<div class="inner wide">
-			<!-- 폴딩리스트 -->
-			<div class="ui_row">
-				<div class="foldGroup shipfold">
-					<ul>
-						<li class="fold_delivery">
-							<div class="fold_head">
-								<a href="javascript:void(0)">
-									<div>
-										<div class="fold_tit">
-											<span>배송지 정보</span>
-										</div>
-										<div class="data">
-											<span class="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></span>
+		<th:block th:if="${orderInfo.giftPackYn} == 'N'">
+			<div class="inner wide">
+				<!-- 폴딩리스트 -->
+				<div class="ui_row">
+					<div class="foldGroup shipfold">
+						<ul>
+							<li class="fold_delivery">
+								<div class="fold_head">
+									<a href="javascript:void(0)">
+										<div>
+											<div class="fold_tit">
+												<span>배송지 정보</span>
+											</div>
+											<div class="data">
+												<span class="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></span>
+											</div>
 										</div>
+									</a>
+								</div>
+								<div class="fold_cont">
+									<!-- //배송지 정보 변경불가 -->
+									<div class="ship_info">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup"><span>배송지 변경</span></button>
+										<dl>
+											<div class="company">
+												<dt><span class="sr-only">배송지명</span></dt>
+												<dd id="recipNm" th:text="${orderInfo.recipNm}"></dd>
+											</div>
+											<div class="phone">
+												<dt><span class="sr-only">휴대폰 번호</span></dt>
+												<dd id="recipPhnno" th:text="${orderInfo.recipPhnno}"></dd>
+											</div>
+											<div class="addr">
+												<dt><span class="sr-only">배송주소</span></dt>
+												<dd id="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></dd>
+											</div>
+											<div class="ship_request">
+												<dt>배송요청 사항</dt>
+												<dd id="delvMemo" th:text="${orderInfo.delvMemo}"></dd>
+											</div>
+										</dl>
 									</div>
-								</a>
-							</div>
-							<div class="fold_cont">
-								<!-- //배송지 정보 변경불가 -->
-								<div class="ship_info">
-									<button type="button" id="btn_adrsChange_pop" class="btn_popup"><span>배송지 변경</span></button>
-									<dl>
-										<div class="company">
-											<dt><span class="sr-only">배송지명</span></dt>
-											<dd id="recipNm" th:text="${orderInfo.recipNm}">
-												<!-- 
-												<span class="icon_tag">
-													<em class="tag_stype1">기본 배송지</em>
-													<em class="tag_stype2">총알배송</em>
-												</span>
-												 -->
-											</dd>
-										</div>
-										<div class="phone">
-											<dt><span class="sr-only">휴대폰 번호</span></dt>
-											<dd id="recipPhnno" th:text="${orderInfo.recipPhnno}"></dd>
-										</div>
-										<div class="addr">
-											<dt><span class="sr-only">배송주소</span></dt>
-											<dd id="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></dd>
-										</div>
-										<div class="ship_request">
-											<dt>배송요청 사항</dt>
-											<dd id="delvMemo" th:text="${orderInfo.delvMemo}"></dd>
-										</div>
-									</dl>
+									<!-- //배송지 정보 변경불가 -->
 								</div>
-								<!-- //배송지 정보 변경불가 -->
-							</div>
-						</li>
-					</ul>
+							</li>
+						</ul>
+					</div>
 				</div>
+				<!-- 폴딩리스트 -->
 			</div>
-			<!-- 폴딩리스트 -->
-		</div>
+		</th:block>
+		<th:block th:if="${orderInfo.giftPackYn} == 'Y'">
+			<div class="inner">
+				<!-- 폴딩리스트 -->
+				<div class="gift_wrap">
+					<h3>선물 받으실 분</h3>
+					<div class="gift_con">
+						<div class="gift_info">
+							<span th:text="${orderInfo.recipNm}"></span> / <span th:text="${orderInfo.recipPhnno}"></span>
+						</div>
+						<div class="message">
+							<p class="gift_tit">선물 메세지</p>
+							<div class="content">
+								<p th:text="${orderInfo.giftMsg}" id="giftMsg"></p>
+							</div> 
+						</div>
+					</div>
+				</div>
+			</div>
+		</th:block>
 		<div class="inner">
 			<div class="tbl_wrap pay_wrap">
 				<div class="tbl_tit"> 
@@ -280,7 +294,7 @@
 										<dt>적립예정 포인트</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}">3000</span>P
+												<span th:text="${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}"></span>P
 											</div>
 										</dd>
 									</div>
@@ -321,6 +335,15 @@
 var ordNo			= [[${orderInfo.ordNo}]]		// 배송목록
 var isLogin			= [[${isLogin}]];				// 로그인여부
 var delvAddrSq		= [[${delvAddrSq}]];			// 배송지번호
+var giftMsg			= [[${orderInfo.giftMsg}]];		// 선물메세지
+
+// item.questContent.replaceAll("\n", "</br>")
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 선물메시지
+	$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+});
 
 // 2.1 회원 배송지변경 팝업열기
 $('#btn_adrsChange_pop').on("click", function(){

+ 76 - 57
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -44,7 +44,7 @@
 				<th>delvMemo</th>
 				<th>sexGb</th>
 				<th>birthYmd</th>
-				<th>orderGiftYn</th>
+				<th>giftPackYn</th>
 			</tr>
 			<tr style="height:30px;">
 				<td class="custNm"></td>
@@ -58,7 +58,7 @@
 				<td class="delvMemo"></td>
 				<td class="sexGb"></td>
 				<td class="birthYmd"></td>
-				<td class="orderGiftYn" th:text="${orderGiftYn}"></td>
+				<td class="giftPackYn" th:text="${giftPackYn}"></td>
 			</tr>
 		</tbody>
 	</table>
@@ -410,7 +410,7 @@ var foreignBuyYn		= [[${order.foreignBuyYn}]];	// 해외구매대행
 var foreignBuyYn		= [[${foreignBuyYn}]];			// 해외구매대행여부
 var orderMadeYn			= [[${orderMadeYn}]];			// 주문제작상품여부
 var isLogin				= [[${isLogin}]];				// 로그인여부
-var orderGiftYn			= [[${orderGiftYn}]];			// 선물받기여부
+var giftPackYn			= [[${giftPackYn}]];			// 선물받기여부
 
 var custCpnSq 			= 0;
 var cpnIndex			= 0;
@@ -462,7 +462,7 @@ $(document).ready( function() {
 		, "foreignBuyYn"	: foreignBuyYn
 		, "orderMadeYn"		: orderMadeYn
 		, "custDelvAddrSq"	: 0
-		, "orderGiftYn"		: "Y"
+		, "giftPackYn"		: "Y"
 	}
 	
 	jsonData = JSON.stringify(jsonObj);
@@ -511,7 +511,7 @@ var custemerInfoSet = function() {
 			}
 			
 			// 1.4 선물하기여부체크
-			if (orderGiftYn == "Y") {
+			if (giftPackYn == "Y") {
 				// 1.4.1 선물하기정보로드
 				orderGiftInfoSet(jsonObj, true);
 			} else {
@@ -579,6 +579,24 @@ var orderGiftInfoSet = function() {
 			$("#orderGiftInfo").css("display", "block");
 			$("#orderGiftInfo").html(result);
 			
+			// 직접입력 선택 버튼
+			$("#orderGiftInfo .gift_tab .fold_cont ul li").on("click", function(){
+				$(this).parent().find("li").removeClass("active");
+				$(this).addClass("active");
+				
+				$(this).parent().parent().find("input[name=recipNm]").val("");
+				$(this).parent().parent().find("input[name=recipPhnno]").val("");
+				
+				// 직접입력시 입력창 활성화
+				if ($(this).find("span").text() == "직접입력") {
+					$(this).parent().parent().find("input[name=recipNm]").attr("readOnly", false);
+					$(this).parent().parent().find("input[name=recipPhnno]").attr("readOnly", false);
+				} else {
+					$(this).parent().parent().find("input[name=recipNm]").attr("readOnly", true);
+					$(this).parent().parent().find("input[name=recipPhnno]").attr("readOnly", true);
+				}
+			});
+			
 			// 주문목록정보로드
 			orderListInfoSet(JSON.stringify(jsonObj), true);
 		}
@@ -773,6 +791,17 @@ var freegiftInfoSet = function() {
 					total_gift 		= 0;
 					total_deduct 	= 0;
 					
+					// 2021.04.14 사은품 사용 포인트가 보유포인트보다 작아야 한다.
+					var rmPntAmt 			= parseInt($("#orderForm input[name='rmPntAmt']").val());
+					var freegiftUsePnt 		= parseInt($("#orderAmtForm .freegiftUsePnt").text());
+					var usepoint			= parseInt($(this).attr("usepoint"));
+					rmPntAmt 				= rmPntAmt - freegiftUsePnt - usepoint;
+					
+					if (rmPntAmt > 0) {
+						mcxDialog.alert("보유포인트가 부족합니다.");
+						return false;
+					}
+					
 					$("#orderForm .freegiftRdo").each(function(){
 						// 라디오버튼 사은품 체크
 						if ($(this).is(":checked")) {
@@ -853,43 +882,38 @@ var paymentInfoSet = function() {
 					var goodsNm				= "";
 					var orgEntryNo 			= "";
 					var entryNo 			= "";
-					
-					// 주문데이타 생성
-					var orderData = {
-						"custNm"				: $("#orderAmtForm .custNm").text()
-						,"email"				: $("#orderAmtForm .email").text()
-						,"recipNm"				: $("#orderAmtForm .recipNm").text()
-						,"recipPhnno"			: $("#orderAmtForm .recipPhnno").text()
-						,"recipZipcode"			: $("#orderAmtForm .recipZipcode").text()
-						,"recipBaseAddr"		: $("#orderAmtForm .recipBaseAddr").text()
-						,"recipDtlAddr"			: $("#orderAmtForm .recipDtlAddr").text()
-						,"delvMemo"				: $("#orderAmtForm .delvMemo").text()
-						,"sexGb"				: $("#orderAmtForm .sexGb").text()
-						,"birthYmd"				: $("#orderAmtForm .birthYmd").text()
-						,"prePntDcAmtYn"		: prePntDcAmtYn
-						,"orderDetailList"		: orderDetailList
-						,"delvFeeCdList"		: delvFeeCdList
-						,"shotDelvYn"			: shotDelvYn
-						,"entryNo"				: entryNo
-						,"pgGb"					: pgGb
-						,"payMeans"				: payMeans // 네이버페이, 카카오페이
-						,"payAmt"				: $("#orderAmtForm .realOrdSumAmt").text()
-						,"ordNm"				: $("#orderAmtForm .custNm").text()
-						,"ordPhnno"				: $("#orderAmtForm .cellPhnno").text()
-						,"goodsNm"				: $("#orderAmtForm .goodsNm").eq(0).text()
-						,"ordGoodsQty"			: ordGoodsQty
-						,"freegiftValArr"		: $("#orderAmtForm .freegiftValArr").text().split(",")
-						,"freegiftSqArr"		: $("#orderAmtForm .freegiftSqArr").text().split(",")
-						,"freegiftGoodsArr"		: $("#orderAmtForm .freegiftGoodsArr").text().split(",")
-						,"freegiftUsePointArr"	: $("#orderAmtForm .freegiftUsePointArr").text().split(",")
-					};
+					var giftMsg				= "감사합니다.";
 					
 					// 선물받기일때 배송지주소 받지않음
-					if (orderGiftYn == "N") {
+					if (giftPackYn == "N") {
 						if ($("#orderAmtForm .recipZipcode").text() == "0000" || gagajf.isNull($("#orderAmtForm .recipZipcode").text())) {
-							mcxDialog.alert("배송지주소를를 입력해주세요.");
+							mcxDialog.alert("배송정보를 입력해주세요.");
+							return false;
+						}
+					} else {
+						if (gagajf.isNull($("#orderForm #orderGiftInfo input[name=recipNm]").val())) {
+							mcxDialog.alert("선물받을분 이름을 입력해주세요.");
+							$("#orderForm #orderGiftInfo input[name=recipNm]").focus();
+							
+							orderGiftInfoDispYn("Y");
 							return false;
 						}
+						if (gagajf.isNull($("#orderForm #orderGiftInfo input[name=recipPhnno]").val())) {
+							mcxDialog.alert("선물받을분 휴대폰번호를 입력해주세요.");
+							$("#orderForm #orderGiftInfo input[name=recipPhnno]").focus();
+							
+							orderGiftInfoDispYn("Y");
+							return false;
+						}
+						
+						$("#orderAmtForm .recipNm").text($("#orderForm #orderGiftInfo input[name=recipNm]").val());
+						$("#orderAmtForm .recipPhnno").text($("#orderForm #orderGiftInfo input[name=recipPhnno]").val());
+						
+						if (gagajf.isNull($("#orderForm #orderGiftInfo input[name=recipPhnno]").val())) {
+							giftMsg = "감사합니다.";
+						} else {
+							giftMsg = $("textarea#giftMsg").val();
+						}
 					}
 					
 					// TODO 개인통관번호 동의 체크시 통관번호 등록
@@ -1008,7 +1032,7 @@ var paymentInfoSet = function() {
 							,"itemQtyArr"		: $(this).parent().find(".itemQtyr").text().split(",")
 							,"goodsType"		: $(this).parent().find(".goodsType").text()
 							,"entryNo"			: entryNo
-							,"giftPackYn"		: orderGiftYn
+							,"giftPackYn"		: giftPackYn
 						}
 						
 						// 상품수
@@ -1058,6 +1082,7 @@ var paymentInfoSet = function() {
 						,"freegiftSqArr"		: $("#orderAmtForm .freegiftSqArr").text().split(",")
 						,"freegiftGoodsArr"		: $("#orderAmtForm .freegiftGoodsArr").text().split(",")
 						,"freegiftUsePointArr"	: $("#orderAmtForm .freegiftUsePointArr").text().split(",")
+						,"giftMsg"				: giftMsg
 					};
 					
 					$.ajax( {
@@ -1072,24 +1097,18 @@ var paymentInfoSet = function() {
 							gagajf.showProgressbar(true);
 						},
 						success 	: function(result) {
-							// 유효성체크 통과
-							if (result.message == "SUCCESS") {
-								// 결재정보로드
-								$("#order_info").html(result);
-								
-								var pgGb = $("#order_info input[name=pgGb]").val();
-								
-								if (pgGb == "NAVER") {
-									fnNaverPaymentReady();
-								} else if (pgGb == "KAKAO") {
-									fnKakaoPaymentReady();
-								} else if (pgGb == "KCP" || pgGb == "PAYCO") {
-									jsf__pay(document.order_info);
-								}
-								return;
-							} else {
-								alert(result.message);
-								return false;
+							
+							// 결재정보로드
+							$("#order_info").html(result);
+							
+							var pgGb = $("#order_info input[name=pgGb]").val();
+							
+							if (pgGb == "NAVER") {
+								fnNaverPaymentReady();
+							} else if (pgGb == "KAKAO") {
+								fnKakaoPaymentReady();
+							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
+								jsf__pay(document.order_info);
 							}
 						}
 					});
@@ -2098,7 +2117,7 @@ var custCpnSumAmtCal = function() {
 		});
 	});
 	
-	$("#orderAmtForm .freegiftValArr").text(freegiftValArr);				// 사은품시퀀스배열
+	$("#orderAmtForm .freegiftValArr").text(freegiftValArr);			// 사은품시퀀스배열
 	$("#orderAmtForm .freegiftUsePointArr").text(freegiftUsePointArr);	// 사은품사용포인트배열
 };
 

+ 580 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderGiftCompleteMob.html

@@ -0,0 +1,580 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/SubLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : OrderGiftCompleteMob.html
+ * @desc    : 선물받기주문완료 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.15   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+
+<form class="form_wrap form_full" name="orderGiftForm" id="orderGiftForm">
+	<main role="" id="" class="container od">
+		<section class="content od_gift">
+			<!-- 배송지 입력기한이 경과 -->
+			<th:block th:if="${orderInfo.giftPackCloseYn} == 'N'">
+				<div class="inner wide">
+					<div class="gift_banner">
+						<img src="/images/mo/logo_STYLE24_white.png" alt="스타일24 로고">
+						<p>고객님께 선물이 도착했습니다!</p>
+					</div>
+				</div>
+			</th:block>
+			<!-- //배송지 입력기한이 경과 -->
+			
+			<!-- 배송지 입력기한이 경과 -->
+			<th:block th:if="${orderInfo.giftPackCloseYn} == 'Y'">
+				<div class="inner wide">
+					<div class="gift_banner timeout">
+						<img src="/images/mo/ico_big_check.png" alt="배송지 입력기한 경과">
+						<p>배송지 입력기한이 경과해<br>선물을 수령하실 수 없습니다.</p>
+						<dl>
+							<dt>배송지 입력기한</dt>
+							<dd th:text="${orderInfo.giftPackCloseDt}"></dd>
+						</dl>
+					</div>
+				</div>
+			</th:block>
+			<!-- 배송지 입력기한이 경과 -->
+			
+			<div class="inner wide">
+				<!-- 폴딩리스트 -->
+				<div class="ui_row">
+					<div class="foldGroup giftfold">
+						<ul>
+							<li>
+								<div class="fold_head">
+									<a href="javascript:void(0)">
+										<div>
+											<div class="fold_tit">
+												<span>선물받으실 상품</span>
+											</div>
+											<div class="data">
+												<em class="c_primary" th:text="${orderListCnt}"></em>개의 상품
+											</div>
+										</div>
+									</a>
+								</div>
+								<div class="fold_cont">
+									<div class="part_goods">
+										<th:block th:each="goods, i : ${orderList}">
+											<div class="goods_section">
+												<div class="goods_detail">
+													<div class="thumb_box">
+														<a href="javascript:;">
+															<img src="/images/mo/thumb/tmp_pdClickother1.jpg" alt="tmp_pdClickother1">
+														</a>
+													</div>
+													<div class="info_box">
+														<div class="od_name">
+															<div class="brand"><span th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></span></div>
+															<div class="name" th:text="${goods.goodsNm}"></div>
+														</div>
+														<div class="od_opt">
+															<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
+																<em th:text="${colorNm}"></em>
+																<em th:text="${goods.optCd2Arr[index.index]}"></em>
+															</div>
+														</div>
+														<div class="od_calc">
+															<p class="count">수량 <em th:text="${goods.ordQty} - ${goods.cnclRtnQty}"></em>개</p>
+														</div>
+													</div>
+												</div>
+												
+												<!-- 배송지 입력기한이 경과 -->
+												<th:block th:if="${orderInfo.giftPackCloseYn} == 'N'">
+													<div class="goods_btn_wrap btn_group_flex">
+														<div>
+															<button type="button" class="btn btn_default btn_option_pop02">
+																<span>옵션변경</span>
+															</button>
+														</div> <!-- 옵션변경_팝업02 호출 -->
+													</div>
+												</th:block>
+												<!-- //배송지 입력기한이 경과 -->
+											</div>
+										</th:block>
+									</div>
+								</div>
+							</li>
+						</ul>
+					</div>
+				</div>
+				<!-- 폴딩리스트 -->
+			</div>
+			<div class="inner wide">
+				<!-- 폴딩리스트 -->
+				<div class="ui_row">
+					<div class="foldGroup giftfold">
+						<ul>
+							<li>
+								<div class="fold_head">
+									<a href="javascript:void(0)">
+										<div class="fold_tit"><span>선물하신 분</span></div>
+										<div class="data fixed"><span th:text="${orderInfo.ordNm}"></span></div>
+									</a>
+								</div>
+								<div class="fold_cont">
+									<div class="gift_order_message">
+										<p th:text="${orderInfo.giftMsg}" id="giftMsg"></p>
+									</div>
+								</div>
+							</li>
+						</ul>
+					</div>
+				</div>
+				<!-- 폴딩리스트 -->
+			</div>
+			
+			<!-- 배송지 입력기한이 경과 -->
+			<th:block th:if="${orderInfo.giftPackCloseYn} == 'N'">
+				<!-- //배송지 정보 변경불가 -->
+				<th:block th:if="${delvRegYn} == 'Y'">
+					<div class="inner wide">
+						<!-- 폴딩리스트 -->
+						<div class="ui_row">
+							<div class="foldGroup shipfold">
+								<ul>
+									<li>
+										<div class="fold_head">
+											<a href="javascript:void(0)">
+												<div class="fold_tit"><span>선물 받으실 분 배송지</span></div>
+												<div class="data">
+													<span class="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></span>
+												</div>
+											</a>
+										</div>
+										<div class="fold_cont">
+											<div class="ship_info">
+												<button type="button" id="btn_adrsChange_pop" class="btn_popup"><span>배송지 변경</span></button>
+												<dl>
+													<div class="company">
+														<dt><span class="sr-only">배송지명</span></dt>
+														<dd id="recipNm" th:text="${orderInfo.recipNm}"></dd>
+													</div>
+													<div class="phone">
+														<dt><span class="sr-only">휴대폰 번호</span></dt>
+														<dd id="recipPhnno" th:text="${orderInfo.recipPhnno}"></dd>
+													</div>
+													<div class="addr">
+														<dt><span class="sr-only">배송주소</span></dt>
+														<dd id="recipAddr" th:text="${orderInfo.recipBaseAddr} + '    ' + ${orderInfo.recipDtlAddr}"></dd>
+													</div>
+													<div class="ship_request">
+														<dt>배송요청 사항</dt>
+														<dd id="delvMemo" th:text="${orderInfo.delvMemo}"></dd>
+													</div>
+												</dl>
+												<div class="btn_group btn_group_flex">
+													<div>
+														<button type="button" class="btn btn_primary" id="btn_plz_delv">
+															<span>선물 배송 요청</span>
+														</button>
+													</div>
+												</div>
+												<div class="info_txt">
+													<ul>
+														<li>배송지 등록이 완료되면 선물상품 배송이 시작됩니다.</li>
+														<li>배송이 시작된 후는 배송지 변경이 불가능합니다.</li>
+														<li>배송기한 내(선물받은 날로부터 3일) 배송지 미입력시 선물받기가 불가능합니다.</li>
+													</ul>
+												</div>
+											</div>
+										</div>
+									</li>
+								</ul>
+							</div>
+						</div>
+						<!-- 폴딩리스트 -->
+					</div>
+				</th:block>
+				<!-- //배송지 정보 변경불가 -->
+				
+				<!-- (배송지 변경 클릭 후) 선물 받으실 분 배송지 입력 -->
+				<th:block th:if="${delvRegYn} == 'N'">
+					<div class="inner wide">
+						<div class="ui_row">
+							<div class="foldGroup shipfold">
+								<ul>
+									<li>
+										<div class="fold_head">
+											<a href="javascript:void(0)">
+												<div>
+													<div class="fold_tit">
+														<div class="lap2"><span>선물 받으실 분 배송지</span></div>
+													</div>
+													<div class="data"><span id="recipAddr"></span></div>
+												</div>
+											</a>
+										</div>
+										<div class="fold_cont">
+											<div class="tbl_wrap">
+												<div class="tbl tbl_dlvr">
+													<table>
+														<colgroup>
+															<col width="*">
+														</colgroup>   
+														<tbody>
+															<tr>
+																<td>
+																	<span class="sr-only">배송지명(이름 등)</span>
+																	<input type="text" class="form_control" name="recipNm" placeholder="배송지명(이름 등)" th:value="${orderInfo.recipNm}">
+																</td>
+															</tr>
+															<tr>
+																<td>
+																	<span class="sr-only">휴대폰 번호</span>
+																	<input type="text" class="form_control" name="recipPhnno" placeholder="휴대폰 번호" th:value="${orderInfo.recipPhnno}">
+																</td>
+															</tr>
+															<tr>
+																<td>
+																	<span class="sr-only">배송 주소</span>
+																	<div class="input_wrap">
+																		<input type="hidden" class="form_control" name="recipZipcode" placeholder="우편번호" readonly="readonly">
+																		<input type="hidden" class="form_control" name="recipBaseAddr" placeholder="기본주소" readonly="readonly">
+																		<input type="text" class="form_control" name="recipAddr" placeholder="배송주소" readonly="readonly">
+																		<input type="text" class="form_control" name="recipDtlAddr" placeholder="상세주소">
+																		<button type="button" class="btn btn_sch" onclick="fnOpenDaumAddr();">
+																			<span class="sr-only">우편번호 찾기</span>
+																		</button>
+																	</div>
+																</td>
+															</tr>
+														</tbody>
+													</table>
+												</div>
+											</div>
+											<div class="tbl_wrap">
+												<div class="tbl_tit"><h3>배송 요청사항</h3></div>
+												<div class="tbl tbl_request">
+													<table>
+														<colgroup>
+															<col width="*">
+														</colgroup>   
+														<tbody>
+															<tr>
+																<th class="sr-only">문 앞</th>
+																<td>
+																	<div class="form_field">
+																		<input type="radio" name="rdi-request1" id="rdi-12" value="문 앞">
+																		<label for="rdi-12">
+																			<span>문 앞</span>
+																		</label>
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th class="sr-only">직접 받고 부재 시 문 앞</th>
+																<td>
+																	<div class="form_field">
+																		<input type="radio" name="rdi-request1" id="rdi-22" value="직접 받고 부재 시 문 앞">
+																		<label for="rdi-22">
+																			<span>직접 받고 부재 시 문 앞</span>
+																		</label>
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th class="sr-only">경비실</th>
+																<td>
+																	<div class="form_field">
+																		<input type="radio" name="rdi-request1" id="rdi-32" value="경비실">
+																		<label for="rdi-32">
+																			<span>경비실</span>
+																		</label>
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th class="sr-only">택배함</th>
+																<td>
+																	<div class="form_field">
+																		<input type="radio" name="rdi-request1" id="rdi-42" value="택배함">
+																		<label for="rdi-42">
+																			<span>택배함</span>
+																		</label>
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th class="sr-only">기타사항</th>
+																<td>
+																	<div class="form_field">
+																		<input type="radio" name="rdi-request1" id="rdi-52" value="기타사항">
+																		<label for="rdi-52">
+																			<span>기타사항</span>
+																		</label>
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th class="sr-only">보관 장소만 입력(필수)</th>
+																<td>
+																	<div class="form_text">
+																		<input type="text" name="delvMemoText" placeholder="보관 장소만 입력 (필수)" disabled>
+																		<p class="desc_txt">보관 장소 외 다른 내용 입력시 통보 없이 삭제 될 수 있습니다.</p>
+																	</div>
+																</td>
+															</tr>
+														</tbody>
+													</table>
+												</div>
+												<div class="btn_group btn_group_flex">
+													<div>
+														<button type="button" id="btn_delivery_addr_save" class="btn btn_dark">
+															<span>배송지 등록</span>
+														</button>
+													</div> <!-- 210406_ID 추가 -->
+												</div>
+												<div class="info_txt">
+													<ul>
+														<li>배송지 등록이 완료되면 선물상품 배송이 시작됩니다.</li>
+														<li>배송이 시작된 후는 배송지 변경이 불가능합니다.</li>
+														<li>배송기한 내(선물받은 날로부터 3일) 배송지 미입력시 선물받기가 불가능합니다.</li>
+													</ul>
+												</div>
+											</div>
+										</div>
+									</li>
+								</ul>
+							</div>
+						</div>
+					</div>
+				</th:block>
+				<!-- //(배송지 변경 클릭 후) 선물 받으실 분 배송지 입력 -->
+			</th:block>
+			<!-- //배송지 입력기한이 경과 -->
+			
+		</section>
+	</main>
+</form>
+
+
+<script th:inline="javascript">
+// 배송관련정보 변수선언
+var ordNo			= [[${orderInfo.ordNo}]]		// 배송목록
+var delvAddrSq		= [[${orderInfo.delvAddrSq}]];	// 배송지번호
+var giftMsg			= [[${orderInfo.giftMsg}]];		// 선물메세지
+
+// item.questContent.replaceAll("\n", "</br>")
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 선물메시지
+	$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+	
+	// 배송요청사항 버튼기능
+	$("#orderGiftForm input[name=rdi-request1]").each(function(){
+		// 기타기능 버튼기능
+		$(this).on("click", function(){
+			var temp = $(this).parent().find('span').text();
+			$("#orderGiftForm input[name=delvMemoText]").val("");
+			if (temp == "기타사항") {
+				$("#orderGiftForm input[name=delvMemoText]").attr("disabled", false);
+			} else {
+				$("#orderGiftForm input[name=delvMemoText]").attr("disabled", true);
+			}
+		});
+	});
+});
+
+// 2.1 회원 배송지변경 팝업열기
+$('#btn_adrsChange_pop').on("click", function(){
+	// 비회원 case 적용
+	$.ajax( {
+		type		: "POST",
+		url 		: '/common/delvAddrAddPop',
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			$("#adrsAddPop .modal-dialog .modal-content").html(result);
+			$("#adrsAddPop").modal("show");
+		}
+	});	
+});
+
+// 배송요청버튼
+$("#btn_plz_delv").on("click", function() {
+	
+	mcxDialog.confirm("입력된 주소로 상품이 배송이 시작됩니다. 배송요청을 하시겠습니까?", {
+		cancelBtnText 	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick: function() {
+			var jsonObj = {
+				"ordNo" 		: ordNo
+			}
+			
+			gagajf.ajaxJsonSubmit(
+				"/order/giftDelvComplete"
+				, JSON.stringify(jsonObj)
+				, function (result) {
+					mcxDialog.alertC("선물 배송 요청이 완료 되었습니다.", {
+						sureBtnText		: "확인",
+						sureBtnClick	: function() {
+							location.href = "/";
+						}
+					});
+				}
+			)
+		}
+	});
+});
+
+// 1.18 배송지정보 설정
+var delvAddrSet = function(delvObj) {
+	
+	var rtnStr = "";
+	rtnStr += "| recipNm 			::: " + delvObj.recipNm;
+	rtnStr += "| recipPhnno 		::: " + delvObj.recipPhnno;
+	rtnStr += "| recipZipcode 		::: " + delvObj.recipZipcode;
+	rtnStr += "| recipBaseAddr 		::: " + delvObj.recipBaseAddr;
+	rtnStr += "| recipDtlAddr 		::: " + delvObj.recipDtlAddr;
+	rtnStr += "| delvMemo 			::: " + delvObj.delvMemo;
+	
+	$("#recipNm").text(delvObj.recipNm);
+	$("#recipPhnno").text(delvObj.recipPhnno);
+	$("#recipAddr").text(delvObj.recipBaseAddr + '    ' + delvObj.recipDtlAddr);
+	$("#delvMemo").text(delvObj.delvMemo);
+	
+	// 변수값 설정
+	var jsonObj = {
+		"delvAddrSq" 		: delvAddrSq
+		, "recipNm"			: delvObj.recipNm
+		, "recipPhnno"		: delvObj.recipPhnno
+		, "recipZipcode"	: delvObj.recipZipcode
+		, "recipBaseAddr"	: delvObj.recipBaseAddr
+		, "recipDtlAddr"	: delvObj.recipDtlAddr
+		, "delvMemo"		: delvObj.delvMemo
+	}
+	
+	gagajf.ajaxJsonSubmit(
+		"/common/updateDeliverAddr"
+		, JSON.stringify(jsonObj)
+		, function (result) {
+			mcxDialog.alert("수정되었습니다.");
+		}
+	)
+}
+
+// 배송지등록버튼
+$("#btn_delivery_addr_save").on("click", function(){
+	
+	// 유효성체크
+	if (!deliveryAddFormCheck()){
+		return false;
+	}
+	
+	// 기타사항일때 텍스트 등록
+	var delvMemo = $("#orderGiftForm input[name=rdi-request1]:checked").parent().find('span').text();
+	if ("기타사항" == delvMemo) {
+		delvMemo = $("#orderGiftForm input[name=delvMemoText]").val();
+	}
+	
+	// 변수값 설정
+	var jsonObj = {
+		"delvAddrSq" 		: delvAddrSq
+		, "recipNm"			: $("#orderGiftForm input[name=recipNm]").val()
+		, "recipPhnno"		: $("#orderGiftForm input[name=recipPhnno]").val()
+		, "recipZipcode"	: $("#orderGiftForm input[name=recipZipcode]").val()
+		, "recipBaseAddr"	: $("#orderGiftForm input[name=recipBaseAddr]").val()
+		, "recipDtlAddr"	: $("#orderGiftForm input[name=recipDtlAddr]").val()
+		, "delvMemo"		: delvMemo
+	}
+	
+	gagajf.ajaxJsonSubmit(
+		"/common/updateDeliverAddr"
+		, JSON.stringify(jsonObj)
+		, function (result) {
+			
+			gagajf.ajaxJsonSubmit(
+				"/common/updateDeliverAddr"
+				, JSON.stringify(jsonObj)
+				, function (result) {
+					mcxDialog.alert("수정되었습니다.");
+					location.href = "/order/giftComplete?" + "ordNo=" + ordNo;
+				}
+			)
+		}
+	)
+});
+
+// 유효성체크 함수
+var deliveryAddFormCheck = function() {
+	// TODO 유효성 체크 추가
+	if (gagajf.isNull($("#orderGiftForm input[name=recipNm]").val())) {
+		mcxDialog.alert("이름을 입력해주세요.");
+		$('#orderGiftForm input[name=custNm]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderGiftForm input[name=recipPhnno]").val())) {
+		mcxDialog.alert("휴대폰번호를 입력해주세요.");
+		$('#orderGiftForm input[name=recipPhnno]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderGiftForm input[name=recipZipcode]").val())) {
+		mcxDialog.alert("배송주소를 입력해주세요.");
+		$('#orderGiftForm input[name=recipAddr]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderGiftForm input[name=recipBaseAddr]").val())) {
+		mcxDialog.alert("배송주소를 입력해주세요.");
+		$('#orderGiftForm input[name=recipAddr]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderGiftForm input[name=recipDtlAddr]").val())) {
+		mcxDialog.alert("상세주소를 입력해주세요.");
+		$('#orderGiftForm input[name=recipDtlAddr]').focus();
+		return false;
+	}
+	
+	return true;
+}
+
+// 우편번호 DAUM을 이용한 우편번호 팝업 레이어
+var fnOpenDaumAddr = function() {
+	$("body").css("overflow", "hidden");
+	
+	let daumZip = new daum.Postcode({
+		oncomplete: function(data) {
+			$('#orderGiftForm input[name=recipAddr]').val(data.zonecode + '    ' + cfnGetDaumRoadAddr(data));
+			$('#orderGiftForm input[name=recipZipcode]').val(data.zonecode);
+			$('#orderGiftForm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
+			$('#orderGiftForm input[name=recipDtlAddr]').focus();
+			
+			cfnCloseDaumAddr();
+
+			$("body").css("overflow", "");
+			$(".close-modal").trigger("click");
+		},
+		width: '100%'
+	});
+	cfnOpenDaumAddr(daumZip);
+}
+
+//2021.04.09 하이픈처리
+$(document).on("keyup", "#orderGiftForm input[name=recipPhnno]", function() { 
+	$(this).val( $(this).val().replace(/[^0-9]/g, "").replace(/(^02|^0505|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})$/,"$1-$2-$3").replace("--", "-") ); 
+});
+</script>
+</th:block>
+</body>
+</html>

+ 11 - 14
src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html

@@ -30,30 +30,22 @@
 				<div class="fold_cont" style="display: none;">
 					<div class="tabWrap">
 						<ul class="tabIndex">
-							<li class="active"><a href="javascript:;"><span>연락처 불러오기</span></a></li>
-							<li class=""><a href="javascript:;"><span>직접입력</span></a></li>
+							<li><a href="javascript:;"><span>연락처 불러오기</span></a></li>
+							<li class="active"><a href="javascript:;"><span>직접입력</span></a></li>
 						</ul>
 						<div class="tabContents">
 							<div class="tab_cont active">
 								<div class="form_field">
 									<div class="input_wrap">
-										<input type="text" class="form_control" value="" placeholder="받으실분 휴대폰번호">
-										<p class="desc_txt">선물이 타인에게 전송될수 있으니 전화번호를 받으실분 연락처를 정확하게 입력해주세요.</p>
+										<input type="text" name="recipNm" class="form_control" value="" maxlength="10" placeholder="받는분">
 									</div>
-									<div class="textarea_wrap">
-										<textarea class="doc_review" name="review" id="" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
-										<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
-									</div>
-								</div>
-							</div>
-							<div class="tab_cont">
-								<div class="form_field">
+									<br>
 									<div class="input_wrap">
-										<input type="text" class="form_control" value="" placeholder="받으실분 휴대폰번호">
+										<input type="text" name="recipPhnno" class="form_control" value="" minlength="10" maxlength="14" placeholder="받으실분 휴대폰번호">
 										<p class="desc_txt">선물이 타인에게 전송될수 있으니 전화번호를 받으실분 연락처를 정확하게 입력해주세요.</p>
 									</div>
 									<div class="textarea_wrap">
-										<textarea class="doc_review" name="review" id="" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
+										<textarea class="doc_review" name="giftMsg" id="giftMsg" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
 										<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
 									</div>
 								</div>
@@ -86,5 +78,10 @@ var orderGiftInfoDispYn = function(temp) {
 $(document).ready( function() {
 	
 });
+
+//2021.04.09 하이픈처리
+$(document).on("keyup", "#orderGiftInfo input[name=recipPhnno]", function() { 
+	$(this).val( $(this).val().replace(/[^0-9]/g, "").replace(/(^02|^0505|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})$/,"$1-$2-$3").replace("--", "-") ); 
+});
 </script>
 </html>

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html

@@ -23,10 +23,10 @@
 			<div class="fold_head">
 				<a href="javascript:void(0)">
 					<div>
-						<th:block th:if="${order.orderGiftYn} == 'N'">
+						<th:block th:if="${order.giftPackYn} == 'N'">
 							<div class="fold_tit"><span>주문내역</span></div>
 						</th:block>
-						<th:block th:if="${order.orderGiftYn} == 'Y'">
+						<th:block th:if="${order.giftPackYn} == 'Y'">
 							<div class="fold_tit"><span>선물하기 주문내역</span></div>
 						</th:block>
 						<div class="data"><em class="c_primary" th:text="${goodsTotCnt}"></em>개의 상품</div>

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrAddPopMob.html

@@ -15,13 +15,13 @@
 								<tr>
 									<td>
 										<span class="sr-only">받는분</span>
-										<input type="text" class="form_control" name="recipNm" placeholder="받는분">
+										<input type="text" class="form_control" name="recipNm" maxlength="10" placeholder="받는분">
 									</td>
 								</tr>
 								<tr>
 									<td>
 										<span class="sr-only">휴대폰 번호</span>
-										<input type="text" class="form_control" name="recipPhnno" placeholder="휴대폰 번호">
+										<input type="text" class="form_control" name="recipPhnno" minlength="10" maxlength="14" placeholder="휴대폰 번호">
 									</td>
 								</tr>
 								<tr>

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

@@ -823,6 +823,17 @@ var freegiftInfoSet = function() {
 					total_gift 		= 0;
 					total_deduct 	= 0;
 					
+					// 2021.04.14 사은품 사용 포인트가 보유포인트보다 작아야 한다.
+					var rmPntAmt 			= parseInt($("#orderForm input[name='rmPntAmt']").val());
+					var freegiftUsePnt 		= parseInt($("#orderAmtForm .freegiftUsePnt").text());
+					var usepoint			= parseInt($(this).attr("usepoint"));
+					rmPntAmt 				= rmPntAmt - freegiftUsePnt - usepoint;
+					
+					if (rmPntAmt > 0) {
+						mcxDialog.alert("보유포인트가 부족합니다.");
+						return false;
+					}
+					
 					$("#orderForm .freegiftRdo").each(function(){
 						if ($(this).attr("allYn") == "Y" ) {
 							total_gift 		+= 1;
@@ -1020,6 +1031,7 @@ var paymentInfoSet = function() {
 							,"itemQtyArr"		: $(this).parent().find(".itemQtyr").text().split(",")
 							,"goodsType"		: $(this).parent().find(".goodsType").text()
 							,"entryNo"			: entryNo
+							,"giftPackYn"		: "N"
 						}
 						
 						// 상품수
@@ -1069,6 +1081,7 @@ var paymentInfoSet = function() {
 						,"freegiftSqArr"		: $("#orderAmtForm .freegiftSqArr").text().split(",")
 						,"freegiftGoodsArr"		: $("#orderAmtForm .freegiftGoodsArr").text().split(",")
 						,"freegiftUsePointArr"	: $("#orderAmtForm .freegiftUsePointArr").text().split(",")
+						,"giftMsg"				: ""
 					};
 					
 					$.ajax( {
@@ -1095,7 +1108,6 @@ var paymentInfoSet = function() {
 							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
 								jsf__pay(document.order_info);
 							}
-							return;
 						}
 					});
 				});