Forráskód Böngészése

Merge branch 'develop' into bin2107

bin2107 5 éve
szülő
commit
bea759f0eb
42 módosított fájl, 1195 hozzáadás és 462 törlés
  1. 1 1
      src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java
  2. 2 2
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  3. 2 0
      src/main/java/com/style24/front/biz/service/TsfDeliveryService.java
  4. 2 2
      src/main/java/com/style24/front/biz/service/TsfGiftcardService.java
  5. 299 22
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  6. 1 4
      src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java
  7. 1 54
      src/main/java/com/style24/front/biz/web/TsfDeliveryController.java
  8. 26 2
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  9. 14 38
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  10. 2 13
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  11. 1 0
      src/main/java/com/style24/persistence/domain/Review.java
  12. 4 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfDelivery.xml
  13. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  14. 1 0
      src/main/resources/config/application-locd.yml
  15. 6 0
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  16. 1 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  17. 7 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  18. 0 5
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  19. 507 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  20. 49 62
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  21. 13 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  22. 21 8
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  23. 33 92
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  24. 6 0
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  25. 12 1
      src/main/webapp/WEB-INF/views/web/common/layout/MypageLayoutWeb.html
  26. 9 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  27. 6 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html
  28. 9 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewDetailFormWeb.html
  29. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html
  30. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  31. 15 17
      src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html
  32. 7 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  33. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html
  34. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html
  35. 2 2
      src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html
  36. 34 71
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  37. 38 0
      src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html
  38. 29 1
      src/main/webapp/biz/mypage.js
  39. 1 0
      src/main/webapp/ux/mo/css/common_m.css
  40. 22 9
      src/main/webapp/ux/mo/css/layout_m.css
  41. 3 8
      src/main/webapp/ux/mo/css/style24_m.css
  42. 3 2
      src/main/webapp/ux/style24_link.js

+ 1 - 1
src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java

@@ -49,7 +49,7 @@ public interface TsfGiftcardDao {
 	 * @author sowon
 	 * @since 2021. 3. 15
 	 */	
-	 void getGiftcardUseConfirm(GiftCard giftcard);
+	 void createGiftcardUseConfirm(GiftCard giftcard);
 	 
 	 /**
 	 * 상품권 api 저장

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

@@ -321,7 +321,7 @@ public class TsfCartService {
 
 			if (cartSqList != null && cartSqList.size() > 0) {		// 장바구니 기존재
 				if (cartSqList.size() > 1) {						// 장바구니 조회 결과 이상시 insert or select 수정 필요
-					throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+					throw new IllegalStateException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
 				} else {
 					cart.setCartSq(cartSqList.iterator().next().getCartSq());
 					cartSqs.add(cart.getCartSq());
@@ -405,7 +405,7 @@ public class TsfCartService {
 
 			if (cartSqList != null && cartSqList.size() > 0) {			// 장바구니 기존재
 				if (cartSqList.size() > 1) {							// 장바구니 조회 결과 이상시 insert or select 수정 필요
-					throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+					throw new IllegalStateException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
 				} else {
 					item.setCartSq(cartSqList.iterator().next());
 					cartSqs.add(item.getCartSq());

+ 2 - 0
src/main/java/com/style24/front/biz/service/TsfDeliveryService.java

@@ -69,6 +69,7 @@ public class TsfDeliveryService {
 			}
 			
 			// 주문변경번호 조회 
+			/*
 			Collection<SweetTracker> chgList = deliveryDao.getOrdChgSqList(sweetTracker);
 			for(SweetTracker chgSq : chgList ) {
 				
@@ -86,6 +87,7 @@ public class TsfDeliveryService {
 				ordChg.setOrdDtlNo(chgSq.getOrdDtlNo()); 
 				orderChangeDao.createOrderChangeDetailHst(ordChg);
 			}
+			*/
 		}
 		
 		// 	TB_SWEET_TRACKER 등록 

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

@@ -84,7 +84,7 @@ public class TsfGiftcardService {
 	 * @throws Exception
 	 * @since 2021. 3. 15
 	 */
-	public void getGiftcardUseConfirm(GiftCard giftcard) throws Exception {
+	public void createGiftcardUseConfirm(GiftCard giftcard) throws Exception {
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();
 		String ip = TsfSession.getIpAddress();
@@ -132,7 +132,7 @@ public class TsfGiftcardService {
 			giftcard.setRmGfcdAmt(Integer.parseInt(param[1])); // 승인금액
 			giftcard.setUseStDate(param2[0]);
 			giftcard.setUseExpDate(param3[0]);
-			giftcardDao.getGiftcardUseConfirm(giftcard);
+			giftcardDao.createGiftcardUseConfirm(giftcard);
 			
 			int custGfcdSq = giftcardDao.getCustGiftCardSq(pubNo);
 			giftcard.setCustGfcdSq(custGfcdSq);

+ 299 - 22
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1,9 +1,14 @@
 package com.style24.front.biz.service;
 
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.net.ssl.HttpsURLConnection;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -543,30 +548,97 @@ public class TsfOrderService {
 		order.setFrontGb(TsfSession.getFrontGb());
 		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(order);
 		
-		int orderDetailCurrPriceSum 	= 0;
-		int orderDetailRealOrdAmtSum 	= 0;
-		int cpn1DcAmtSum				= 0;
-		int tmtb1DcAmtSum				= 0;
-		int tmtb2DcAmtSum				= 0;
-		int goodsCpnDcAmtSum			= 0;
-		int cartCpnDcAmtSum				= 0;
+		int orgGoodsSumAmt 			= 0;
+		int cpn1DcSumAmt			= 0;
+		int tmtb1DcSumAmt			= 0;
+		int tmtb2DcSumAmt			= 0;
+		int goodsCpnDcSumAmt		= 0;
+		int cartCpnDcSumAmt			= 0;
+		int prePntDcSumAmt			= 0;
+		int pntDcSumAmt				= 0;
+		int gfcdUseSumAmt			= 0;
+		int realOrdSumAmt 			= 0;
 		
-		int cartCurrPriceSum 			= 0;
-		int cartRealOrdAmtSum 			= 0;
+		int cartOrgGoodsSumAmt 		= 0;
+		int cartRealOrdSumAmt 		= 0;
 		
 		// 주문서화면 금액정보 체크
 		for (Order orderDetail : orderDetailList) {
-			orderDetailCurrPriceSum 	= orderDetailCurrPriceSum + orderDetail.getCurrPrice();
-			orderDetailRealOrdAmtSum 	= orderDetailRealOrdAmtSum + orderDetail.getRealOrdAmt();
+			orgGoodsSumAmt 				= orgGoodsSumAmt 	+ orderDetail.getCurrPrice();
+			cpn1DcSumAmt 				= cpn1DcSumAmt 		+ orderDetail.getCpn1DcAmt();
+			tmtb1DcSumAmt 				= tmtb1DcSumAmt 	+ orderDetail.getTmtb1DcAmt();
+			tmtb2DcSumAmt 				= tmtb2DcSumAmt 	+ orderDetail.getTmtb2DcAmt();
+			goodsCpnDcSumAmt			= goodsCpnDcSumAmt 	+ orderDetail.getGoodsCpnDcAmt();
+			cartCpnDcSumAmt				= cartCpnDcSumAmt 	+ orderDetail.getCartCpnDcAmt();
+			prePntDcSumAmt				= prePntDcSumAmt 	+ orderDetail.getPrePntDcAmt();
+			pntDcSumAmt					= pntDcSumAmt 		+ orderDetail.getPntDcAmt();
+			gfcdUseSumAmt				= gfcdUseSumAmt 	+ orderDetail.getGfcdUseAmt();
+			realOrdSumAmt 				= realOrdSumAmt 	+ orderDetail.getRealOrdAmt();
 		}
 		
+		realOrdSumAmt = realOrdSumAmt + order.getDelvSumAmt();
+		
+		if (orgGoodsSumAmt != order.getOrgGoodsSumAmt()) {
+			resultStr = "판매가 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (cpn1DcSumAmt != order.getCpn1DcSumAmt()) {
+			resultStr = "즉시할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (tmtb1DcSumAmt != order.getTmtb1DcSumAmt()) {
+			resultStr = "수량다다익선 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (tmtb2DcSumAmt != order.getTmtb2DcSumAmt()) {
+			resultStr = "금액다다익선 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (goodsCpnDcSumAmt != order.getGoodsCpnDcSumAmt()) {
+			resultStr = "상품쿠폰 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (cartCpnDcSumAmt != order.getCartCpnDcSumAmt()) {
+			resultStr = "장바구니쿠폰 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (prePntDcSumAmt != order.getPrePntDcSumAmt()) {
+			resultStr = "선포인트 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (pntDcSumAmt != order.getPntDcSumAmt()) {
+			resultStr = "포인트 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (gfcdUseSumAmt != order.getGfcdUseSumAmt()) {
+			resultStr = "상품권 사용 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		
+		
+		if (realOrdSumAmt != order.getRealOrdSumAmt()) {
+			resultStr = "실결제 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		
+
 		// 장바구니 금액정보 체크
 		for (Order orderDetail : cartGoodsList) {
-			cartCurrPriceSum 			= cartCurrPriceSum + orderDetail.getOrgCurrPrice();
+			cartOrgGoodsSumAmt 			= cartOrgGoodsSumAmt + orderDetail.getOrgCurrPrice();
 		}
 		
 		// 판매가비교
-		if (orderDetailCurrPriceSum != cartCurrPriceSum) {
+		if (orgGoodsSumAmt != cartOrgGoodsSumAmt) {
 			resultStr = "금액정보가 잘못 되었습니다.";
 			return resultStr;
 		}
@@ -924,23 +996,158 @@ public class TsfOrderService {
 		return "SUCCESS";
 	}
 	
-	public GagaMap nPayReq50(Order param) {
+	public GagaMap nPayReq50(Order param, HttpServletRequest request, HttpServletResponse response) {
 		GagaMap result = new GagaMap();
 
+		// 로그인 정보 조회
+		if(TsfSession.isLogin()) {
+			param.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			param.setCustNo(0);
+			param.setJsessionId(TsfSession.getSessionId());
+		}
+
 		try {
-			param.setFrontGb(TsfSession.getFrontGb());
 			param.setSiteCd(TscConstants.Site.STYLE24.value());
-			if(TsfSession.isLogin()) {
-				param.setCustNo(TsfSession.getInfo().getCustNo());
-			} else {
-				param.setCustNo(0);
-				param.setJsessionId(TsfSession.getSessionId());
-			}
+			param.setFrontGb(TsfSession.getFrontGb());	// 디바이스 정보
+			param.setPrePntDcAmtYn("N");				// 네이버페이 : 선포인트 사용하지 않음으로 강제 지정
+			param.setShotDelvYn("N");					// 네이버페이 : 총알배송 여부 설정 N
+			param.setInsuranceYn("N");					// 네이버페이 : 보증보험 신청 여부 N
 
-			// 장바구니 정보 조회
+			// 장바구니 등록된 주문 정보 조회
 			Collection<Order> cartList = coreOrderService.getCartGoodsList(param);
 
+			// 배송비 정보 조회
+			GagaMap delvMap = coreOrderService.getCartDelvGoodsCntList(cartList, param);
+			param.setDelvFeeCdList((Collection<Order>) delvMap.get("delvFeeCdList"));
+
+			// 주문 상세 정보 세팅
+			for(Order item : cartList) {
+				item.setSavePntAmt(0);
+				item.setOrdAmt((item.getCurrPrice() + item.getOptAddPrice()) * item.getGoodsQty());			// ordAmt = (즉시할인가 + 옵션가) * 수량
+				item.setRealOrdAmt(item.getOrdAmt());														// 네이버페이는 할인 없으므로 ordAmt와 동일
+				item.setShotDelvYn("N");
+				item.setGiftPackYn("N");
+				item.setRegNo(param.getCustNo());
+			}
+			param.setOrderDetailList(cartList);
+
+			// 주문 정보 등록
+			coreOrderService.createPreOrder(param);
+
+			// 네이버페이 기본정보
+			String shopId			= env.getProperty("naverPay.shop.id");				// shopId
+			String certificationKey	= env.getProperty("naverPay.certification.key");	// 네이버페이 인증키
+			String cpaInflowCode	= getCookieValue(request, "CPAValidator");
+			String naverInflowCode	= getCookieValue(request, "NA_CO");
+			String saClickId		= getCookieValue(request, "NVADID");
+			String domain 			= env.getProperty("domain.front");					// 도메인 주소
+			String staticUrl		= "/resources";
+			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
+			int totPrice			= 0;												// 전체 주문 금액
+
+			log.info("CHECK PARAM ::::: {} / {}", param.getBackUrl(), param.getGoodsUrl());
+
+			// 네이버페이 송부용 xml 작성
+			StringBuffer sb = new StringBuffer();
+			sb.append("<order>\n");
+			sb.append("\t<merchantId>").append(shopId).append("</merchantId>\n");								//<!-- 상점ID -->
+			sb.append("\t<certiKey>").append(certificationKey).append("</certiKey>\n");	//<!-- 인증키 -->
+			sb.append("\t<backUrl>").append(param.getBackUrl()).append("</backUrl>\n");	//<!-- 이전페이지 -->
+			sb.append("\t<merchantCustomCode1>").append(param.getOrdNo()).append("</merchantCustomCode1>\n");
+			sb.append("\t<interface>\n");
+			sb.append("\t\t<cpaInflowCode>").append(cpaInflowCode).append("</cpaInflowCode>\n");
+			sb.append("\t\t<naverInflowCode>").append(naverInflowCode).append("</naverInflowCode>\n");
+			sb.append("\t\t<saClickId>").append(saClickId).append("</saClickId>\n");
+			sb.append("\t</interface>\n");
+
+			for(Order item : param.getOrderDetailList()) {
+				//<!-- 상품정보 -->
+				sb.append("\t<product>\n");
+				sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n");							//<!-- 상품코드 -->
+				sb.append("\t\t<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>\n");	//<!-- 상품코드 -->
+				sb.append("\t\t<name>").append(item.getGoodsNm()).append("</name>\n");	//<!-- 상품명 -->
+				sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n");						//<!-- 상품금액 -->
+				sb.append("\t\t<infoUrl>").append("http:" + param.getGoodsUrl() + item.getGoodsCd()).append("</infoUrl>\n");		//<!-- 상품상세페이지 URL -->
+				sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + item.getSysImgNm()).append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
+
+				// 옵션 정보
+				sb.append("\t\t<option>\n");
+				sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");							//<!-- 옵션수량-->
+				sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n");								//<!-- 옵션금액 -->
+				sb.append("\t\t\t<manageCode>").append(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
+
+				// 칼라코드
+				sb.append("\t\t\t<selectedItem>\n");
+				sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+				sb.append("\t\t\t\t<name>색상</name>\n");//<!-- 옵션명 -->
+				sb.append("\t\t\t\t<value>\n");
+				sb.append("\t\t\t\t\t<id>").append(item.getOptCd1()).append("</id>\n");//<!-- 칼라코드 -->
+				sb.append("\t\t\t\t\t<text>").append(item.getColorNm()).append("</text>\n");//<!-- 칼라명 -->
+				sb.append("\t\t\t\t</value>\n");
+				sb.append("\t\t\t</selectedItem>\n");
+
+				// 사이즈코드
+				sb.append("\t\t\t<selectedItem>\n");
+				sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+				sb.append("\t\t\t\t<name>사이즈</name>\n");//<!-- 옵션명 -->
+				sb.append("\t\t\t\t<value>\n");
+				sb.append("\t\t\t\t\t<id>").append(item.getOptCd2()).append("</id>\n");//<!-- 사이즈코드 -->
+				sb.append("\t\t\t\t\t<text>").append(item.getOptCd2()).append("</text>\n");//<!-- 사이즈명 -->
+				sb.append("\t\t\t\t</value>\n");
+				sb.append("\t\t\t</selectedItem>\n");
+				sb.append("\t\t</option>\n");
+
+				// 배송비 판단 후 배송비유형 선택 (추가 기본배송비, 무료배송비 기준 조회후 등록)
+				//<!-- 배송정보 -->
+				String delvFeeCrite = "CHARGE";
+				int delvFee = item.getDelvFee();
+				String feePayType = "PREPAYED";
+				// 배송비 조건
+				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(item.getDelvFeeCrite())) {
+					delvFeeCrite = "CONDITIONAL_FREE";		// 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
+				} else if(TscConstants.DelvFeeCrite.FREE.value().equals(item.getDelvFeeCrite())) {
+					delvFeeCrite = "FREE";
+					feePayType = "FREE";
+					delvFee = 0;
+				}
+
+				sb.append("\t\t<shippingPolicy>\n");
+				sb.append("\t\t\t<groupId>").append(item.getDelvFeeCd()).append("</groupId>\n");		//<!-- 배송비묶음그룹ID -->
+				sb.append("\t\t\t<method>DELIVERY</method>\n");											//<!-- 배송방법 : 택배,소포,등기 -->
+				sb.append("\t\t\t<feeType>").append("CONDITIONAL_FREE").append("</feeType>\n");			//<!-- 배송비유형 : 유료 -->
+				sb.append("\t\t\t<feePayType>").append("PREPAYED").append("</feePayType>\n");			//<!-- 배송비결제방법 : 선불 -->
+				sb.append("\t\t\t<feePrice>").append(item.getDelvFee()).append("</feePrice>\n");		//<!-- 기본배송비 -->
+
+				// 조건부 무료일경우에만 송부
+				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(item.getDelvFeeCrite())) {
+					sb.append("\t\t\t<conditionalFree>\n");
+					sb.append("\t\t\t\t<basePrice>").append(item.getMinOrdAmt()).append("</basePrice>\n");	//<!-- 무료배송비기준 -->
+					sb.append("\t\t\t</conditionalFree>\n");
+				}
+
+				sb.append("\t\t</shippingPolicy>\n");
+				sb.append("\t</product>\n");
+
+				totPrice = totPrice + ((item.getCurrPrice() + item.getOptAddPrice()) * item.getGoodsQty());
+			}
+
+			sb.append("</order>");
+
+			log.info("CHECK NAVER PAY SB ::::: \n{}", sb.toString());
+
+			result = sendOrderInfoToNC(sb);
 
+			// 네이버 페이 주문번호 저장
+			param.setNpayOrdNo(Integer.parseInt(result.get("orderKey").toString()));
+
+			log.info("CHECK NAVER PAY ORD NO ::::: {}", param.getNpayOrdNo());
+
+			// 3.주문정보 저장
+			coreOrderDao.updateNaverPayOrderNo(param);
+			result.put("npayOrderUrl", env.getProperty("naverPay.order.url"));
+			result.put("orderkey", result.get("orderKey").toString());
+			result.put("resultNo", result.get("resultNo").toString());
 
 			result.put("state", "sucess");
 		} catch(Exception e) {
@@ -952,6 +1159,76 @@ public class TsfOrderService {
 
 		return result;
 	}
+
+	private GagaMap sendOrderInfoToNC(StringBuffer sb) throws IOException {
+		GagaMap resultMap = new GagaMap();
+
+		// 1.0, 2.0  일때 구분값 처리
+		URL _url = new URL(env.getProperty("naverPay.order.api.url"));
+		String ENCODING = "UTF-8";
+
+		HttpsURLConnection conn = (HttpsURLConnection)_url.openConnection();
+
+		log.info("CHECK URL ::::: {}", env.getProperty("naverPay.order.api.url"));
+
+		conn.setDoInput(true);
+		conn.setDoOutput(true);
+		conn.setUseCaches(false);
+		conn.setRequestMethod("POST");
+		conn.addRequestProperty("Content-Type", "application/xml; charset=UTF-8");
+
+		// 주문 등록 API 호출
+		Writer writer = new OutputStreamWriter(conn.getOutputStream(), ENCODING);
+		writer.write(sb.toString());
+
+		writer.flush();
+		writer.close();
+
+		int respCode = conn.getResponseCode();
+		log.info("CHECK RESP CODE ::::: {}", respCode);
+
+		if (respCode != 200) {
+			throw new RuntimeException(String.format("NC Response fail : %d %s", respCode, conn.getResponseMessage()));
+		}
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+
+		String[] arr = reader.readLine().toString().split(":");
+
+		log.info("CHECK RESULT ARR ::::: {} / {} / {}", arr[0], arr[1], arr[2]);
+		if ("SUCCESS".equals(arr[0])) {
+			resultMap.put("state", 		arr[0]);
+			resultMap.put("orderKey", 	arr[1]);
+			resultMap.put("resultNo", 	arr[2]);
+		} else {
+			throw new IllegalStateException(String.format("NC Response fail : %d %s", reader.readLine().toString()));
+		}
+
+		conn.disconnect();
+
+		return resultMap;
+	}
+
+	/*
+	 * 쿠키값 가져오기
+	 */
+	private String getCookieValue(HttpServletRequest request, String name) {
+		if (name == null || request == null) {
+			return "";
+		}
+
+		Cookie[] cookies = request.getCookies();
+
+		if (cookies != null) {
+			for (int i = 0; i < cookies.length; i++) {
+				if (name.equals(cookies[i].getName())) {
+					return cookies[i].getValue();
+				}
+			}
+		}
+
+		return "";
+	}
 	
 	/**
 	 * 장바구니정보 주문번호 이력 등록

+ 1 - 4
src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java

@@ -2,10 +2,7 @@ package com.style24.front.biz.thirdparty;
 
 import javax.annotation.PostConstruct;
 
-import com.diquest.ir.common.exception.IRException;
-import com.google.gson.Gson;
-import istyle.AutoSearch;
-import org.json.simple.JSONObject;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;

+ 1 - 54
src/main/java/com/style24/front/biz/web/TsfDeliveryController.java

@@ -50,64 +50,11 @@ public class TsfDeliveryController extends TsfBaseController {
 	@RequestMapping(value = "/sweettracker/response" , method=RequestMethod.POST, consumes="application/json")
 	@ResponseBody
 	public String sweetTrackerResponse(@RequestBody SweetTracker  sweetTracker) throws Exception {
-		
-		deliveryService.saveTemp("들어옴");
-		
-		String msg = "";
-//		Enumeration  enums = request.getParameterNames();
-//		while (enums.hasMoreElements()) {
-//			String name = (String) enums.nextElement();
-//			log.info("name: "+name);
-//			msg = msg+ name+": "+request.getParameter(name)+" ";
-//		}
-//		
-//		deliveryService.saveTemp(msg);
-//		
-//		String fid  = request.getParameter("fid");
-//		String courier_code  = request.getParameter("courier_code");
-//		String invoice_no  = request.getParameter("invoice_no");
-//		String level  = request.getParameter("level");
-//		String time_trans  = request.getParameter("time_trans");
-//		String time_sweet  = request.getParameter("time_sweet");
-//		String where  = request.getParameter("where");
-//		String telno_office  = request.getParameter("telno_office");
-//		String telno_man  = request.getParameter("telno_man");
-//		String details  = request.getParameter("details");
-//		String recv_addr  = request.getParameter("recv_addr");
-//		String recv_name  = request.getParameter("recv_name");
-//		String send_name  = request.getParameter("send_name");
-//		String man  = request.getParameter("man");
-//		String estmate  = request.getParameter("estmate");
-//		
-//		String msg2 = "fid: "+fid+" courier_code:"+courier_code+" invoice_no:"+invoice_no+" level:"+level+" time_trans:"+time_trans;
-//		
-//		deliveryService.saveTemp(msg2);
-//		
-//		
-//		
-//		SweetTracker  sweetTracker = new SweetTracker();
-//		sweetTracker.setFid(request.getParameter("fid"));
-//		sweetTracker.setCourier_code(request.getParameter("courier_code"));
-//		sweetTracker.setInvoice_no(request.getParameter("invoice_no"));
-//		sweetTracker.setLevel(Integer.parseInt(request.getParameter("level")));
-//		sweetTracker.setTime_trans(request.getParameter("time_trans"));
-//		sweetTracker.setTime_sweet(request.getParameter("time_sweet"));
-//		sweetTracker.setWhere(request.getParameter("where"));
-//		sweetTracker.setTelno_office(request.getParameter("telno_office"));
-//		sweetTracker.setTelno_man(request.getParameter("telno_man"));
-//		sweetTracker.setDetails(request.getParameter("details"));
-//		sweetTracker.setRecv_addr(request.getParameter("recv_addr"));
-//		sweetTracker.setRecv_name(request.getParameter("recv_name"));
-//		sweetTracker.setSend_name(request.getParameter("send_name"));
-//		sweetTracker.setMan(request.getParameter("man"));
-//		sweetTracker.setEstmate(request.getParameter("estmate"));
-//		
-		
+
 		deliveryService.saveTemp(sweetTracker.toString());
 		
 		JsonObject rtn = new JsonObject();
 		
-		
 		try {
 			deliveryService.saveDelvStat(sweetTracker);
 			

+ 26 - 2
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1384,6 +1384,30 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 교환 옵션 변경 팝업
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 03. 30
+	 */
+	@PostMapping("/track/withdraw/popup/form")
+	@ResponseBody
+	public ModelAndView trackWithdrawPopupForm(OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 스윗트래커 정보 조회
+		SweetTracker sweetTracker = new SweetTracker();
+		sweetTracker.setShipCompCd(orderChange.getShipCompCd());
+		sweetTracker.setInvoiceNo(orderChange.getWdInvoiceNo());
+		mav.addObject("sweetTrackerInfoList", deliveryService.getSweetTrackerDeliveryInfo(sweetTracker));
+
+		mav.setViewName(super.getDeviceViewName("popup/TrackWithdrawPopupForm"));
+
+		return mav;
+	}
+
 	/**
 	 * 위시리스트 등록처리
 	 *
@@ -1484,8 +1508,8 @@ public class TsfMypageController extends TsfBaseController {
 	 */
 	@PostMapping("/gift/use/confirm")
 	@ResponseBody
-	public GagaResponse getGiftcardUseConfirm(@RequestBody GiftCard giftcard) throws Exception {
-		giftcardService.getGiftcardUseConfirm(giftcard);
+	public GagaResponse createGiftcardUseConfirm(@RequestBody GiftCard giftcard) throws Exception {
+		giftcardService.createGiftcardUseConfirm(giftcard);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 

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

@@ -738,45 +738,11 @@ public class TsfOrderController extends TsfBaseController {
 		// 3. 주문기본정보등록(주문접수)
 		coreOrderService.createPreOrder(order);
 		
-		// 4. 2021.05.10 장바구니정보 정보 삭제
+		// 4. 2021.05.10 장바구니정보 주문번호 업데이트
 		orderService.insertCartHstOrdNo(order);
-		
-		log.info("order.getEntryNo()           ::: {}", order.getEntryNo());
-		log.info("order.getPgGb()              ::: {}", order.getPgGb());
-		log.info("order.getPayMeans()          ::: {}", order.getPayMeans());
-		log.info("order.getOrdNo()             ::: {}", order.getOrdNo());
-		log.info("order.getGoodsNm()           ::: {}", order.getGoodsNm());
-		log.info("order.getOrdGoodsQty()       ::: {}", order.getOrdGoodsQty());
-		log.info("order.getPayAmt()            ::: {}", order.getPayAmt());
-		log.info("order.getOrdNm()             ::: {}", order.getOrdNm());
-		log.info("order.getOrdPhnno()          ::: {}", order.getOrdPhnno());
-		log.info("order.getCustNo()            ::: {}", order.getCustNo());
-		log.info("order.getFreegiftValArr()    ::: {}", order.getFreegiftValArr());
-		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]);
-		}
-
-		// 필수 데이터
-		// pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
-		// 선택 데이터
-		// ordEmail = 주문자메일, ordTelno = 전화번호
-		
-		/* 
-		=== 카카오페이 & 네이버페이 파라메터 ===
-		ordNo = 주문번호
-		custNo = 고객번호
-		goodsNm = 상품명
-		ordGoodsQty = 주문상품수량
-		payAmt = 결제금액
-		======================
-		*/
 
 		Payment payment = orderService.setPgDataInfo(order);
+		
 		// 2021.05.10 추가
 		payment.setPayUrl("/create/preOrder");
 		payment.setRetUrl("/pay/result/response");
@@ -813,7 +779,8 @@ public class TsfOrderController extends TsfBaseController {
 			param.setCustNo(0);
 			order.setCustNo(0);
 		}
-		
+
+		param.setRegNo(param.getCustNo());
 		param.setUpdNo(param.getCustNo());
 		
 		// 2. 결재정보등록(TB_PAYMENT)
@@ -828,7 +795,16 @@ public class TsfOrderController extends TsfBaseController {
 		coreOrderService.updateOrderInfo(order);
 		
 		// 4. 2021.05.10 장바구니정보 삭제
-		orderService.deleteCartOrdNo(order);
+		boolean cartDelTemp = true;
+		if (TsfSession.isLogin()) {
+			if ("jsh77b".equals(TsfSession.getInfo().getCustId()) || "xodud1202".equals(TsfSession.getInfo().getCustId()) || "card007".equals(TsfSession.getInfo().getCustId())) {
+				cartDelTemp = false;
+			}
+		}
+		
+		if (cartDelTemp) {
+			orderService.deleteCartOrdNo(order);
+		}
 		
 		// TODO 5. 2021.05.10 보증보험 API 연동
 		orderService.updateInsurance(order);

+ 2 - 13
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -181,18 +181,7 @@ public class TsfPgController extends TsfBaseController {
 	 */
 	@ResponseBody
 	@PostMapping("/nPayReq")
-	public GagaMap nPayReq(@RequestBody Order param) {
-		GagaMap map = new GagaMap();
-		//for(Order param : params) {
-		//	log.info("CHECK NPAY INPUT >>>> {} / {} / {}", param.getGoodsCd(), param.getOptCd(), param.getGoodsQty());
-		//}
-
-		for(int cartSq : param.getCartSqArr()) {
-			log.info("CHECK NPAY INPUT >>>> {}", param.getCartSqArr());
-		}
-
-		map = orderService.nPayReq50(param);
-
-		return map;
+	public GagaMap nPayReq(@RequestBody Order param, HttpServletRequest request, HttpServletResponse response) {
+		return orderService.nPayReq50(param, request, response);
 	}
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/Review.java

@@ -53,6 +53,7 @@ public class Review extends TscBaseDomain {
 	private String frontGb;
 	private String custGb;
 	private String brandNm;
+	private int attachSq;
 
 	private String custId;			// 고객ID
 	private String sysImgNm;		// 상품대표이미지

+ 4 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfDelivery.xml

@@ -107,7 +107,10 @@
 		     , DETAILS
 		     , IFNULL(TELNO_MAN, TELNO_OFFICE) AS TELNO
 		  FROM TB_SWEET_TRACKER
-		 WHERE SHIP_COMP_CD = #{shipCompCd}
+		 WHERE SHIP_COMP_CD = (SELECT SWT_SHIP_COMP_CD
+		                         FROM TB_SHIP_COMPANY
+		                        WHERE SHIP_COMP_CD = #{shipCompCd}
+		                          AND USE_YN = 'Y')
 		   AND INVOICE_NO = #{invoiceNo}
 		 ORDER BY DELV_LEVEL DESC;
 	</select>

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml

@@ -102,8 +102,8 @@
 	     )
 	</insert>
 	
-	<insert id="getGiftcardUseConfirm" parameterType="GiftCard">
-		/*TsfGiftcard.getGiftcardUseConfirm*/
+	<insert id="createGiftcardUseConfirm" parameterType="GiftCard">
+		/*TsfGiftcard.createGiftcardUseConfirm*/
 		INSERT INTO TB_CUST_GIFTCARD
 		(
 			CUST_NO

+ 1 - 0
src/main/resources/config/application-locd.yml

@@ -88,6 +88,7 @@ naverPay:
     common.certification.key : s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
+    order.url: https://test-order.pay.naver.com/customer/buy
 
 # ERP (한세드림)
 erp:

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -42,6 +42,12 @@
 											<em class="tag_stype2">총알배송</em>
 										</span>
 									</label>
+									<div class="tip_wrap tip1">
+										<div class="tip_tit">?</div>
+										<div class="tip_contents">
+											<p class="tip_txt"></p><ul><li>총알배송 가능 지역인 경우에만 적용됩니다.</li></ul><p></p>
+										</div>
+									</div>
 								</div>
 							</td>
 						</tr>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="mob/common/layout/SubLayoutMob">
+	  layout:decorator="mob/common/layout/GoodsLayoutMob">
 <!--
  *******************************************************************************
  * @source  : cartListFormMob

+ 7 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html

@@ -187,7 +187,7 @@
 						</table>
 					</div>
 				</div>
-				<div class="required_group">
+				<div class="required_group" id="addDeliveryFee" style="display:none">
 					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
 				</div>
 				<div class="btn_group btn_group_flex">
@@ -544,6 +544,12 @@ $('#btn_bank_return').click(function() {
 		mcxDialog.alert('계좌인증이 필요합니다.');
 	}
 });
+
+//팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
 </script>
 
 <script>

+ 0 - 5
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html

@@ -314,11 +314,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

+ 507 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html

@@ -0,0 +1,507 @@
+<!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/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageDeliveryInfoFormMob.html
+ * @desc    : 마이페이지 > 배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.11   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="mypageDeliveryInfoForm" class="container my">
+	<section class="content my_order">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd  th:text="${ordNo}"></dd>
+				</dl>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+			</div>
+		</div>
+		<div class="inner">
+			<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+				<div class="part_goods">
+					<div class="goods_top">
+						<th:block th:unless="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+						<th:block th:if="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+					</div>
+					
+					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_status">
+								<!-- 선물주문 -->
+								<th:block th:if="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
+									<p class="dlvr_staus" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
+								</th:block>
+								<!-- //선물주문 -->
+								<!-- 일반주문 -->
+								<th:block th:unless="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+								</th:block>
+								<!-- //일반주문 -->
+							</div>
+							<div class="goods_detail">
+								<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+														
+								<a href="javascript:void(0);" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${ordDtl.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${ordDtl.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<!-- 세트상품 -->
+												<th:block th:if="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${option}"></em>
+														<em th:text="${ordDtl.optCd2Arr[status.index]}"></em>
+													</th:block>
+												</th:block>
+												<!-- //세트상품 -->
+												<!-- 일반상품 -->
+												<th:block th:unless="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${ordDtl.colorNm}"></em>
+														<em th:text="${ordDtl.optCd2}"></em>
+													</th:block>
+												</th:block>
+												<!-- //일반상품 -->
+											</div>
+										</div>
+										<div class="od_calc">
+											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
+												</del>
+											</p>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+												<span class="count">
+													<em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 일반주문 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</th:block>
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+									</div>
+								</th:block>
+								<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								
+								<!-- 배송준비중-->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								</th:block>
+								<!-- //배송준비중-->
+								
+								<!-- 배송중 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+									<!-- 교환가능, 반품가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+										<div class="goods_btn_wrap btn_group_flex">
+											<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+											</th:block>
+											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+											</th:block>
+										</div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+									
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //배송중 (교환가능, 반품가능) -->
+								
+								<!-- 배송완료 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환가능, 반품가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+										</th:block>
+										<!-- //교환가능, 반품가능 -->
+										
+										<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></div>
+									</div>
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+										
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //배송완료 (교환가능, 반품가능) -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 리뷰사용불가능, 리뷰등록후일때 -->
+										<th:block th:unless="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
+
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							<!-- //일반주문 -->
+							<!-- 선물주문 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<div><button type="button" class="btn btn_primary btn_sms_send" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></div>
+								</th:block>
+								<!-- //배송지등록전 -->
+								
+								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+								</th:block>
+								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							</th:block>
+							<!-- //선물주문 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_alert">
+									<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+										<!-- 교환불가능, 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능, 반품불가능 -->
+										
+										<!-- 교환불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능 -->
+										
+										<!-- 반품불가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //반품불가능 -->
+										
+									</th:block>
+									<!-- //배송중, 배송완료 상태 -->
+								</div>
+								
+								<!-- 주문접수 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //주문접수 -->
+								
+								<!-- 결제완료, 예약배송상품 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+									</th:block>
+								</th:block>
+								<!-- //결제완료, 예약배송상품 -->
+								
+								<!-- 상품준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //상품준비중 -->
+								
+								<!-- 배송준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //배송준비중 -->
+								
+								<!-- 배송완료 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+									</div>
+								</th:block>
+								<!-- //배송완료 -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+										</div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							
+							<!-- 선물배송일때 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_txt">
+									<!-- 배송지등록전 -->
+									<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+										<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
+										<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+									</th:block>
+									<!-- //배송지등록전 -->
+									
+									<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+										<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+											<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
+										</th:block>
+									</th:block>
+									<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									
+									<!-- 선물 취소 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+										<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+									</th:block>
+									<!-- //선물 취소 -->
+								</div>
+							</th:block>
+							<!-- //선물배송일때 -->
+							<!-- //주문상태별 문구정보 정의 -->
+							
+							<!-- 사은품 영역 -->
+							<th:block th:if="${#lists.size(order.ordDtlList) == status.count}">
+								<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+									<div class="goods_gift">
+										<div class="gift_wrap">
+											<div class="title">사은품</div>
+											<div class="li_gift">
+												<ul>
+													<th:block th:each="freeGift , j : ${order.freeGiftList}">
+														<li>
+															<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+															<th:block th:if="${freeGift.usePoint} > 0">
+																<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- //사은품 영역 -->
+						</div>
+					</th:block>
+				</div>
+				<input type="hidden" name="accountNo" 	th:value="${order.oneData.accountNo}"/>
+				<input type="hidden" name="accountNm" 	th:value="${order.oneData.accountNm}"/>
+				<input type="hidden" name="bankCd" 		th:value="${order.oneData.bankCd}"/>
+				<input type="hidden" name="delvMemo" 	th:value="${deliveryAddrInfo.delvMemo}"/>
+			</th:block>
+		</div>
+		
+		<div class="inner">
+			<div class="tbl_wrap">
+				<div class="tbl_tit">
+					<h3>배송 정보</h3>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="107">
+							<col width="*">
+						</colgroup>
+						<tbody><tr>
+							<th>보내는 사람</th>
+							<td>
+								<div>
+									<span th:text="${deliveryAddrInfo.recipNm}"></span> / <span th:text="${deliveryAddrInfo.recipPhnno}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>제품정보</th>
+							<td>
+								<div>
+									<span th:utext="|${oneData.brandNm}<br/>${oneData.goodsNm}|"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>송장번호</th>
+							<td>
+								<div>
+									<span th:text="${oneData.invoiceNo}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>배송주소</th>
+							<td>
+								<div>
+									<span th:utext="|${deliveryAddrInfo.recipBaseAddr}<br/>${deliveryAddrInfo.recipDtlAddr}|"></span>
+								</div>
+							</td>
+						</tr>
+					</tbody></table>
+				</div>
+			</div>
+			<div class="goods_tbl">
+				<div class="tblWrap">
+					<table class="table">
+						<colgroup>
+							<col style="width: 34%;">
+							<col style="width: 33%;">
+							<col style="width: 33%;">
+						</colgroup>
+						<thead>
+							<tr>
+								<th scope="col">시간</th>
+								<th scope="col">장소</th>
+								<th scope="col">유형</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+								<td th:utext="|${#strings.substring(sweetTrackerInfo.timeTrans, 0, 10)}<br/>${#strings.substring(sweetTrackerInfo.timeTrans, 11, 19)}|"></td>
+								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+								<td th:text="${sweetTrackerInfo.details}"></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<form id="exchangeForm" name="exchangeForm" th:action="@{'/mypage/exchange/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="returnForm" name="returnForm" th:action="@{'/mypage/return/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('배송조회');
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 49 - 62
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -40,22 +40,26 @@
 						<th:block th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}">
 							<a href="javascript:void(0);" id="btn_all_delete" class="delete_btn" onclick="fnAllCancel();">주문 전체 취소</a> <!-- 210409_추가 : btn_all_delete id 추가 -->
 						</th:block>
+						<th:block th:if="${allDecideYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0)" id="btn_all_confirm" class="purchase_btn" th:attr="ordNo=${ordNo}" onclick="fnAllDecideOrder(this);">전체구매확정</a></li>
+						</th:block>
 						<!--<a href="javascript:;" id="btn_all_confirm" class="purchase_btn">전체 구매 확정</a> 전체 구매확정 버튼. --> <!-- 210409_추가 : btn_all_confirm id 추가 -->
 					</div>
 					
 					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_status">
-								<!-- 선주문 -->
+								<!-- 선주문 -->
 								<th:block th:if="${order.giftPackYn == 'Y'}">
 									<p class="dlvr_staus" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
 									<p class="dlvr_staus" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
 									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
 								</th:block>
-								<!-- //선주문 -->
+								<!-- //선주문 -->
 								<!-- 일반주문 -->
 								<th:block th:unless="${order.giftPackYn == 'Y'}">
-									<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
 								</th:block>
 								<!-- //일반주문 -->
 							</div>
@@ -72,8 +76,7 @@
 											<div class="brand">
 												<span th:text="${ordDtl.brandNm}"></span>
 												<div class="badge_wrap">
-													<span class="brand" th:text="${ordDtl.brandNm}"></span>
-													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
 													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
 													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
 												</div>
@@ -102,9 +105,9 @@
 										</div>
 										<div class="od_calc">
 											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
-											<p class="sale_price">
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
 												<del>
-													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</em>원
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
 												</del>
 											</p>
 											<p class="price">
@@ -123,20 +126,22 @@
 							<!-- 주문상태별 버튼기능 정의 -->
 							<!-- 일반주문 -->
 							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
-								<!-- 입금대기 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
-							
-								<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 									</div>
 								</th:block>
-								<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
 								
 								<!-- 배송준비중-->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
@@ -204,9 +209,14 @@
 								<!-- 구매확정 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 리뷰사용불가능, 리뷰등록후일때 -->
+										<th:block th:unless="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
+
 										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
-										<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
-										
+
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
 											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
@@ -422,7 +432,7 @@
 							</tr>
 							<tr>
 								<th>입금기한</th>
-								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span><span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
+								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span>&nbsp;<span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
 							</tr>
 						</table>
 					</div>
@@ -518,43 +528,6 @@
 											<dt><span class="sr-only">휴대폰 번호</span></dt>
 											<dd th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></dd>
 										</div>
-										<!--  배송메모정보변경가능
-										<th:block th:if="${allCanYn == 'Y'}">
-											<div class="ship_request ship_select">
-												<span>배송요청 사항</span>
-												<div class="ship_option">
-													<div class="form_field">
-														<div class="select_custom delivery_list">
-															<div class="combo">
-																<div class="select" th:text="${deliveryAddrInfo.delvMemo}">선택</div>
-																<ul class="list">
-																	<li>문 앞</li> 
-																	<li>직접 받고 부재 시 문 앞</li>
-																	<li>경비실</li> 
-																	<li>택배함</li>
-																	<li class="select_etc">기타사항</li>
-																</ul>
-															</div>
-														</div>
-													</div>
-												</div>
-											</div>
-											<div class="ship_etc">
-												<div class="form_text etc">
-													<input type="text" name="delvMemoText" placeholder="보관 장소만 입력 (필수)" maxlength="30" disabled>
-													<p class="desc_txt">보관 장소 외 다른 내용 입력시 통보 없이 삭제 될 수 있습니다.</p>
-												</div>
-											</div>
-										</th:block>
-										<!--  //배송메모정보변경가능 -->
-										<!--  배송메모정보변경불가 
-										<th:block th:unless="${allCanYn == 'Y'}">
-											<div class="ship_request">
-												<dt>배송요청 사항</dt>
-												<dd th:text="${deliveryAddrInfo.delvMemo}"></dd>
-											</div>
-										</th:block>
-										<!--  //배송메모정보변경불가 -->
 										<div class="ship_request">
 											<dt>배송요청 사항</dt>
 											<dd th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></dd>
@@ -592,7 +565,8 @@
 			<div class="tbl_wrap pay_wrap">
 				<div class="tbl_tit"> 
 					<h3>결제 정보</h3>
-					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>
+<!--					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>-->
+					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.payAmt - orderAmtInfo.npayPntAmt - orderAmtInfo.pgCpnAmt, 1, 'COMMA')}"></span>원</strong>
 				</div>
 				<div class="tbl type1">
 					<table>
@@ -605,7 +579,7 @@
 								<dl>
 									<div>
 										<dt>총주문금액(상품금액+배송비)</dt>
-										<dd><div><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
+										<dd><div><span th:text="${#numbers.formatInteger((orderAmtInfo.ordAmt + orderAmtInfo.cpn1DcAmt) - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
 									</div>
 									<th:block th:if="${orderAmtInfo.cpn1DcAmt} > 0">
 										<div>
@@ -681,6 +655,7 @@
 					</table>
 					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
 					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and not #strings.isEmpty(paymentInfo.cashAuthNo) and (paymentInfo.payMeans == 'G014_10' or paymentInfo.payMeans == 'G014_20')}" onclick="fnReceipt('cash')"><span>현금 영수증</span></button>
+					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and (cashReceiptsInfo == null or #strings.isEmpty(cashReceiptsInfo.authNo))}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
 					<!-- 
 					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
 					 -->
@@ -690,7 +665,7 @@
 			</div>
 			<div class="btn_group btn_group_flex">
 				<div>
-					<button type="button" class="btn btn_dark"><span>확인</span></button>
+					<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>확인</span></button>
 				</div>
 			</div>
 		</div>
@@ -728,11 +703,8 @@
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 	$(document).ready(function() {
-		// 마이페이지 LNB 설정
-		//fnSetMypageLnbList(1);
-		
-		// 마이페이지 location 설정
-		//fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+		// 타이틀명
+		$('#htopTitle').text('주문확인/배송조회');
 		
 		// 선물메시지
 		if ($("#giftMsg").html() != null) {
@@ -933,9 +905,24 @@
 		$('#orderDetailForm input[name=accountNm]').val(result.accountNm);
 		$('#orderDetailForm input[name=bankCd]').val(result.bankCd);
 		
-		// 반품처리
+		// 전체취소 처리
 		fnAllCancel();
 	}
+
+	// 상품권 현금영수증 신청 처리
+	var fnRequestCashReceipt = function(param) {
+		let url = '/mypage/cash/receipts/request';
+		let ordNo = $(param).attr('ordNo');
+
+		let data = {};
+		data.ordNo = ordNo;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+		});
+	}
 </script>
 
 </th:block>

+ 13 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -214,7 +214,7 @@ $(document).ready(function() {
 	
 	// 인피니티스크롤 초기화
 	//fnGoodsReviewInfiniteScrollInit();
-	
+
 	// AJAX 로드를 위한 변수 설정
 	jsonObj = {
 		"pageNo" 			: 0
@@ -231,12 +231,18 @@ $(document).ready(function() {
 	
 	// 마이페이지 메인화면일때 초기 1개월 조회
 	if (mypageMainYn == 'Y') {
+		// 타이틀명
+		$('#htopTitle').text('마이페이지');
+
 		jsonObj.pageSize = 1;
 		jsonObj.pageUnit = 1;
 		fnSetSearchPeriod(1);
 	}
 	// 마이페이지 주문목록화면일때
 	else {
+		// 타이틀명
+		$('#htopTitle').text('주문확인/배송조회');
+
 		// 전체페이지 구하기
 		totalPage 	= parseInt(totalCnt / 10);
 		remainList 	= totalCnt % 10; 
@@ -313,7 +319,7 @@ var fnGetInfiniteScrollDataList = function(pageNo) {
 			if (result != null) {
 				$("#listBox").css("display", "block");
 				$("#listBox").append(result);
-				
+				console.log(result);
 				scrollTemp = true;
 				
 				// 인피니티 스크롤 기억기능
@@ -465,6 +471,11 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 			$('#expiredSoonCouponCnt').text(result.expiredSoonCouponCnt);
 		});
 	}
+
+	// 등급혜택 보기 클릭 이벤트
+	var fnGoToCustomerBenefit = function() {
+		cfnGoToPage(_PAGE_CUSTOMER_GRADE_BENEFIT);
+	}
 </script>
 </th:block>
 </body>

+ 21 - 8
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -46,7 +46,8 @@
 							
 							<!-- 일반배송일때 -->
 							<th:block th:if="${ordDtl.giftPackYn} == 'N'">
-								<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+								<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+								<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
 							</th:block>
 							<!-- //일반배송일때 -->
 						</div>
@@ -63,7 +64,7 @@
 												<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
 													<em class="order_badge order_bullet_badge">총알배송</em>
 												</th:block>
-												<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
+												<th:block th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">
 													<em class="order_badge">STYLE24 일반배송</em>
 												</th:block>
 												<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
@@ -104,11 +105,23 @@
 						<!-- 버튼기능정리 -->
 						<!-- 일반배송 -->
 						<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
-							<!-- 입금대기 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+							<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
-								<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
+								<div class="goods_btn_wrap btn_group_flex">
+									<div>
+										<button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);">
+											<span>1:1 문의</span>
+										</button>
+									</div>
+									<div>
+										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+											<span>쇼핑백 담기</span>
+										</button>
+									</div>
+								</div>
 							</th:block>
-														
+							<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
 							<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 								<div class="goods_btn_wrap btn_group_flex">
@@ -119,7 +132,7 @@
 									</div>
 								</div>
 							</th:block>
-							<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+							<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
 							
 							<!-- 배송준비중-->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
@@ -151,10 +164,10 @@
 								
 								<!-- 리뷰사용가능, 리뷰등록전일때 -->
 								<div class="goods_btn_wrap btn_group_flex">
-									<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+									<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></div>
 									<!-- 리뷰사용가능, 리뷰등록전일때 -->
 									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 									</th:block>
 									<!-- //리뷰사용가능, 리뷰등록전일때 -->
 								</div>

+ 33 - 92
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -32,20 +32,6 @@
 	<!-- 고객정보 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="orderInfo" id="orderInfo">
 		<tbody>
-			<tr style="height:30px;">
-				<th>custNm</th>
-				<th>email</th>
-				<th>cellPhnno</th>
-				<th>recipNm</th>
-				<th>recipPhnno</th>
-				<th>recipZipcode</th>
-				<th>recipBaseAddr</th>
-				<th>recipDtlAddr</th>
-				<th>delvMemo</th>
-				<th>sexGb</th>
-				<th>birthYmd</th>
-				<th>giftPackYn</th>
-			</tr>
 			<tr style="height:30px;">
 				<td class="custNm"></td>
 				<td class="email"></td>
@@ -66,12 +52,6 @@
 	
 	<!-- 사은품정보 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo">
-		<tr style="height:30px;">
-			<th>freegiftValArr</th>
-			<th>freegiftUsePointArr</th>
-			<th>freegiftSqArr</th>
-			<th>freegiftGoodsArr</th>
-		</tr>
 		<tr style="height:30px;">
 			<td class="freegiftValArr"></td>
 			<td class="freegiftUsePointArr"></td>
@@ -83,41 +63,6 @@
 	
 	<!-- 주문상세금액 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="orderDetailInfo" id="orderDetailInfo">
-		<tr style="height:30px;">
-			<th>cartSq</th>
-			<th style="display:none">goodsNm</th>
-			<th>goodsCd</th>
-			<th>goodsType</th>
-			<th>itemCd</th>
-			<th>optCd</th>
-			<th style="display:none">optCd1</th>
-			<th style="display:none">optCd2</th>
-			<th style="display:none">itemQtyr</th>
-			<th>orgCurrPrice</th>
-			<th>cpn1CpnSq</th>
-			<th>cpn1DcAmt</th>
-			<th>optAddPrice</th>
-			<th>goodsQty</th>
-			<th>ordAmt</th>
-			<th>tmtb1Sq</th>
-			<th>tmtb1DcAmt</th>
-			<th>tmtb2Sq</th>
-			<th>tmtb2DcAmt</th>
-			<th>goodsCpnSq</th>
-			<th>goodsCpnDcAmt</th>
-			<th>cartCpnSq</th>
-			<th>cartCpnDcAmt</th>
-			<th>prePntDcAmt1</th>
-			<th>dcSumAmt</th>
-			<th>pntDcAmt1</th>
-			<th>gfcdUseAmt1</th>
-			<th>realOrdAmt1</th>
-			<th>savePntAmt1</th>
-			<th>shotDelvYn</th>
-			<th>foreignYn</th>
-			<th>orderMadeYn</th>
-			<th>delvFeeCd</th>
-		</tr>
 		<th:block th:each="delvAllCart, index : ${delvAllCartList}">
 			<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
 				<th:block th:each="goods, i : ${delvAllCart}">
@@ -162,11 +107,13 @@
 						<td class="pntDcAmt1">0</td>
 						<td class="gfcdUseAmt1">0</td>
 						<td class="realOrdAmt1">0</td>
-						<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
+						<td class="savePntAmt1">0</td>
 						<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
 						<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
 						<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
 						<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
+						<td class="pntPrate" 		th:text="${goods.pntPrate}"></td>
+						<td class="pntMrate" 		th:text="${goods.pntMrate}"></td>
 					</tr>
 				</th:block>
 			</th:block>
@@ -176,13 +123,6 @@
 	
 	<!-- 배송단위목록 -->
 	<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none; width:100%;" name="delvFeeCdInfo" id="delvFeeCdInfo">
-		<tr style="height:30px;">
-			<th>supplyCompCd</th>
-			<th>delvFeeCd</th>
-			<th>delvFee</th>
-			<th>delvCpnSq</th>
-			<th>delvCpnDcAmt</th>
-		</tr>
 		<th:block th:each="delvFeeCd, index : ${delvFeeCdList}">
 			<tr style="height:30px;">
 				<td class="supplyCompCd" th:text="${delvFeeCd.supplyCompCd}"></td>
@@ -197,25 +137,6 @@
 	
 	<!-- 주문금액합계 -->
 	<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none; width:100%;" name="orderSumAmtInfo" id="orderSumAmtInfo">
-		<tr style="height:30px;">
-			<th>orgGoodsSumAmt</th>
-			<th>delvSumAmt</th>
-			<th>freegiftUsePnt</th>
-			<th>cpn1DcSumAmt</th>
-			<th>ordSumAmt</th>
-			<th>tmtb1DcSumAmt</th>
-			<th>tmtb2DcSumAmt</th>
-			<th>tmtbDcSumAmt</th>
-			<th>goodsCpnDcSumAmt</th>
-			<th>cartCpnDcSumAmt</th>
-			<th>delvCpnDcSumAmt</th>
-			<th>cpnDcSumAmt</th>
-			<th>prePntDcAmt</th>
-			<th>pntDcSumAmt</th>
-			<th>gfcdUseSumAmt</th>
-			<th>realOrdSumAmt</th>
-			<th>savePntSumAmt</th>
-		</tr>
 		<tr style="height:30px;">
 			<td class="orgGoodsSumAmt">0</td>
 			<td class="delvSumAmt" th:text="${sumDelvFee}"></td>
@@ -1247,6 +1168,17 @@ var paymentInfoSet = function() {
 						,"giftMsg"				: giftMsg
 						,"custPayMeans"			: custPayMeans
 						,"cartSqArr"			: cartSqArr
+						,"orgGoodsSumAmt"		: $("#orderAmtForm .orgGoodsSumAmt").text()
+						,"cpn1DcSumAmt"			: $("#orderAmtForm .cpn1DcSumAmt").text()
+						,"tmtb1DcSumAmt"		: $("#orderAmtForm .tmtb1DcSumAmt").text()
+						,"tmtb2DcSumAmt"		: $("#orderAmtForm .tmtb2DcSumAmt").text()
+						,"goodsCpnDcSumAmt"		: $("#orderAmtForm .goodsCpnDcSumAmt").text()
+						,"cartCpnDcSumAmt"		: $("#orderAmtForm .cartCpnDcSumAmt").text()
+						,"prePntDcSumAmt"		: $("#orderAmtForm .prePntDcSumAmt").text()
+						,"pntDcSumAmt"			: $("#orderAmtForm .pntDcSumAmt").text()
+						,"gfcdUseSumAmt"		: $("#orderAmtForm .gfcdUseSumAmt").text()
+						,"realOrdSumAmt"		: $("#orderAmtForm .realOrdSumAmt").text()
+						,"delvSumAmt"			: $("#orderAmtForm .delvSumAmt").text()
 					};
 					
 					$.ajax( {
@@ -2261,11 +2193,11 @@ var custCpnSumAmtCal = function() {
 		var goodsCpnDcAmt	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
 		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
 		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
-		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
 		var dcSumAmt		= 0;
 		
 		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
-		orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
+		//orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
+		orgGoodsSumAmt		= orgGoodsSumAmt + orgCurrPrice;
 		cpn1DcSumAmt		= cpn1DcSumAmt + (cpn1DcAmt * goodsQty);
 		tmtb1DcSumAmt		= tmtb1DcSumAmt + tmtb1DcAmt;
 		tmtb2DcSumAmt		= tmtb2DcSumAmt + tmtb2DcAmt;
@@ -2282,14 +2214,8 @@ var custCpnSumAmtCal = function() {
 		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
 		if (prePntDcAmtYn == "Y") {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
-			
-			// 2021.04.29 선포인트사용포인트 적립포인트금액 0원처리
-			if (prePntDcAmt1 < 1) {
-				savePntSumAmt	= savePntSumAmt + savePntAmt1;
-			}
 		} else {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
-			savePntSumAmt	= savePntSumAmt + savePntAmt1;
 		}
 		
 		totDcSumAmt			= totDcSumAmt + dcSumAmt;
@@ -2297,17 +2223,19 @@ var custCpnSumAmtCal = function() {
 		// 주문금액설정
 		$(this).parent().find(".ordAmt").text(ordAmt);
 		$(this).parent().find(".dcSumAmt").text(dcSumAmt);
-		
-		//savePntSumAmt		= savePntSumAmt + savePntAmt1;
 	});
 	
 	// 포인트, 상품권 금액 분배
 	$("#orderAmtForm .cartSq").each(function(){
+		var pntPrate		= parseInt($(this).parent().find(".pntPrate").text());
+		var pntMrate		= parseInt($(this).parent().find(".pntMrate").text());
 		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
 		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
+		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
 		var pntDcAmt1 		= 0;
 		var gfcdUseAmt1		= 0;
+		var savePntAmt1		= 0;
 		
 		if (index == cartSqLenght) {
 			pntDcAmt1 		= leftPntAmt;
@@ -2322,9 +2250,22 @@ var custCpnSumAmtCal = function() {
 		var realOrdAmt1		= ordAmt - dcSumAmt - pntDcAmt1 - gfcdUseAmt1;
 		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
 		
+		// 2021.05.11 최종할인금액으로 적립포인트 적용
+		savePntAmt1			= parseInt(realOrdAmt1 * (pntPrate/100));
+		
+		// 선포인트사용여부 
+		if (prePntDcAmtYn == "Y") {
+			if (prePntDcAmt1 < 1) {
+				savePntSumAmt	= savePntSumAmt + savePntAmt1;
+			}
+		} else {
+			savePntSumAmt	= savePntSumAmt + savePntAmt1;
+		}
+		
 		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
 		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
 		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
+		$(this).parent().find(".savePntAmt1").text(savePntAmt1);
 		
 		index++;
 	});

+ 6 - 0
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -36,6 +36,12 @@
 									<div>
 										<input type="radio" name="shotDelvUseYn" id="blt_ship1" value="Y" th:checked="${order.shotDelvUseYn != null and order.shotDelvUseYn.equals('Y') and order.shotCartList.size() > 0}">
 										<label for="blt_ship1"><span><em class="tag primary_line">총알배송</em><span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span></span></label>
+										<div class="tip_wrap tip1">
+											<div class="tip_tit">?</div>
+											<div class="tip_contents">
+												<p class="tip_txt"></p><ul><li>총알배송 가능 지역인 경우에만 적용됩니다.</li></ul><p></p>
+											</div>
+										</div>
 									</div>
 									<div>
 										<input type="radio" name="shotDelvUseYn" id="blt_ship2" value="N" th:checked="${order.shotDelvUseYn == null or !order.shotDelvUseYn.equals('Y') or order.shotCartList.size() < 1}">

+ 12 - 1
src/main/webapp/WEB-INF/views/web/common/layout/MypageLayoutWeb.html

@@ -56,13 +56,24 @@
 <div class="modal fade exchange_pop" id="exchangePop" tabindex="-1" role="dialog" aria-labelledby="exchangeLabel" aria-hidden="true">
 	<div class="modal-dialog" role="document">
 		<div class="modal-content">
-			<!--교환상품 옵션변경 팝업 내용 -->
+			<!-- 교환상품 옵션변경 팝업 내용 -->
 		</div>
 	</div>
 	<a href="#close-modal" rel="modal:close" id="exchangePop_close" class="close-modal">Close</a>
 </div>
 <!-- //교환상품 옵션변경 팝업 -->
 
+<!-- 회수조회 팝업 -->
+<div class="modal fade reclaim_pop" id="reclaimPop" tabindex="-1" role="dialog" aria-labelledby="reclaimLabel" aria-hidden="true" style="display: none;">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<!-- 회수조회 팝업 내용 -->
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="reclaimPop_close" class="close-modal">Close</a>
+</div>
+<!-- //회수조회 팝업 -->
+
 <th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
 <script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
 

+ 9 - 6
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -453,30 +453,33 @@
 										}
 
 										function buy_nc_req(cartSqArr) {
-											alert(cartSqArr.length);
-											// buyList[0].backUrl = location.href;
+											let data = {  cartSqArr : cartSqArr
+														, backUrl : location.href
+														, goodsUrl : _PAGE_GOODS_DETAIL
+											};
+											let jsonData = JSON.stringify(data);
 
 											$.ajax( {
 												type		: "POST",
 												url 		: "/pg/nPayReq",
 												dataType 	: 'json',
-												data		: {cartSqArr : JSON.stringify(cartSqArr)},
+												data		: jsonData,
 												beforeSend : function(xhr, settings) {
 													xhr.setRequestHeader("AJAX"			, "true");
 													xhr.setRequestHeader('Accept'		, 'application/json');
 													xhr.setRequestHeader('Content-Type'	, 'application/json');
 												},
 												error: function(xhr, status, error) {
-													alert(status + '; ' + error);
+													mcxDialog.alert(status + '; ' + error);
 												},
 												success : function(result) {
 													if (result.state == "sucess") {
 														window.open('about:blank', 'popupView');
 														document.nPayForm.target = 'popupView';
-														document.nPayForm.action = "$!{NPAY_ORDER_URL}" + result.orderKey + "/" + result.resultNo;
+														document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
 														document.nPayForm.submit();
 													} else {
-														alert(result.message);
+														mcxDialog.alert(result.message);
 													}
 												}
 											});

+ 6 - 2
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html

@@ -553,9 +553,13 @@
 						fileGbClass = '';
 						if (reviewAttach.fileGb == "M") fileGbClass = "mov";
 				tag += '				<li>\n';
-				tag += '					<a href="javascript:void();" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">\n';
+				tag += '					<a href="javascript:void();" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\','+aIdx+');">\n';
 				tag += '						<div class="pic">\n';
-				tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+					if (reviewAttach.fileGb == "M") {
+				tag +='					<span class="thumb '+fileGbClass+'"><iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></span>\n';
+					}else{
+				tag +='					<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" >\n';
+					}
 				tag += '						</div>\n';
 				tag += '					</a>\n';
 				tag += '				</li>\n';		

+ 9 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsReviewDetailFormWeb.html

@@ -34,6 +34,7 @@
 <input type="hidden" name="bestYn" th:value="${review.bestYn}" />
 <input type="hidden" name="photoYn" th:value="${review.photoYn}" />
 <input type="hidden" name="reviewSq" th:value="${review.reviewSq}" />
+<input type="hidden" name="attachSq" th:value="${review.attachSq}" />
 </form>
 <a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_best')" class="close-modal">Close</a> 
 <script th:inline="javascript">
@@ -55,6 +56,7 @@
 		// 목록
 		if (result.reviewList != null && result.reviewList.length > 0) {
 			let fileGbClass = '';
+			let rdx = $('#reviewDetailForm input[name=attachSq]').val();
 			$.each(result.reviewList, function(idx, review) {
 				let tag = '';
 				tag +='<div class="pop_cont">\n';
@@ -185,19 +187,21 @@
 				tag +='	<div class="thumblist">\n';
 				tag +='		<ul>\n';
 					let activeClass = '';
+					
 					$.each(review.reviewAttachList, function(aIdx, reviewAttach){
 						activeClass = '';
-						if (aIdx == 0){
+						if (aIdx == rdx){
 							activeClass = 'active';
 						}
 						fileGbClass = '';
 						if (reviewAttach.fileGb == "M") fileGbClass = "mov";
 				tag +='			<li>\n';
 				tag +='				<div class="pic '+activeClass+'"> \n'; <!-- 활성화시 active 클래스 추가 -->
-				tag +='					<span class="thumb" class="'+fileGbClass+'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" >\n';<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+				
 					if (reviewAttach.fileGb == "M") {
-				tag +='					<iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>\n';
+				tag +='					<span class="thumb '+fileGbClass+'"><iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></span>\n';
 					}else{
+				tag +='					<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" >\n';
 				tag +='					<img src="'+ _imgUrl + reviewAttach.sysFileNm +'" alt="">\n';	
 					}
 				tag +='					</span>\n';
@@ -238,7 +242,8 @@
 				        $this.find('.thumblist ul').attr('style', 'width:' + thumbListWidth + 'px;');
 				        
 				    });
-
+				
+				$('.pd_photoreviewdetail_pop .thumblist ul li').eq(rdx).trigger("click");
 			});
 		}
 		

+ 1 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html

@@ -218,7 +218,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -410,11 +410,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

+ 1 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html

@@ -175,7 +175,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -284,11 +284,6 @@
 		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
 	});
 
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
-
 	// 회수지 정보 설정
 	var delvAddrSet = function(delvObj) {
 		let ordChgSq = oneData.ordChgSq;

+ 15 - 17
src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html

@@ -265,8 +265,8 @@
 									<td>
 										<div class="single_line">
 											<ul>
-												<li><span th:text="${deliveryAddrInfo.recipNm}">홍길동</span></li>
-												<li><span th:text="${deliveryAddrInfo.recipPhnno}">010-3456-7890</span></li>
+												<li><span th:text="${deliveryAddrInfo.recipNm}"></span></li>
+												<li><span th:text="${deliveryAddrInfo.recipPhnno}"></span></li>
 											</ul>
 										</div>
 									</td>
@@ -281,9 +281,7 @@
 								</tr>
 								<tr>
 									<th>배송 주소</th>
-									<td th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|">
-										경기도 시흥시 서울대학2로, 1120동 2204호
-									</td>
+									<td th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></td>
 								</tr>
 							</tbody>
 						</table>
@@ -297,20 +295,20 @@
 								<col width="25%">
 							</colgroup>
 							<thead>
-							<tr>
-								<th scope="col">시간</th>
-								<th scope="col">장소</th>
-								<th scope="col">유형</th>
-								<th scope="col">전화번호</th>
-							</tr>
+								<tr>
+									<th scope="col">시간</th>
+									<th scope="col">장소</th>
+									<th scope="col">유형</th>
+									<th scope="col">전화번호</th>
+								</tr>
 							</thead>
 							<tbody>
-							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
-								<td th:text="${sweetTrackerInfo.timeTrans}"></td>
-								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
-								<td th:text="${sweetTrackerInfo.details}"></td>
-								<td th:text="${sweetTrackerInfo.telno}"></td>
-							</tr>
+								<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+									<td th:text="${sweetTrackerInfo.timeTrans}"></td>
+									<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+									<td th:text="${sweetTrackerInfo.details}"></td>
+									<td th:text="${sweetTrackerInfo.telno}"></td>
+								</tr>
 							</tbody>
 						</table>
 					</div>

+ 7 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -333,9 +333,7 @@
 										<th>
 											선물 메세지
 										</th>
-										<!-- TODO -->
-										<!-- 선물 메세지 처리 -->
-										<td></td>
+										<td th:text="${orderInfo.giftMsg}" id="giftMsg"></td>
 									</tr>
 									<!-- 주문 -->
 									<tr th:unless="${oneData.giftPackYn == 'Y'}">
@@ -506,6 +504,7 @@
 	let orderAmtInfo = [[${orderAmtInfo}]];
 	let deliveryAddrInfo = [[${deliveryAddrInfo}]];
 	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let giftMsg = [[${orderInfo.giftMsg}]];
 	let jsonObj = {};
 
 	$(document).ready(function() {
@@ -514,6 +513,11 @@
 		
 		// 마이페이지 location 설정
 		fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+
+		// 선물메시지
+		if ($("#giftMsg").html() != null) {
+			$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+		}
 	});
 	
 	// 전체취소 버튼 클릭 이벤트

+ 1 - 6
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html

@@ -215,7 +215,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -407,11 +407,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

+ 1 - 6
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html

@@ -173,7 +173,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -282,11 +282,6 @@
 		fnSetNoMemberLocation('취소/반품/교환 내역', '반품 상세');
 	});
 
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
-
 	// 회수지 정보 설정
 	var delvAddrSet = function(delvObj) {
 		let ordChgSq = oneData.ordChgSq;

+ 2 - 2
src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html

@@ -154,7 +154,7 @@
 								<div>
 									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2" value="Y" checked> 
 									<label for="rdi-beforpoint2"><span>사용함</span></label> 
-									<span class="useable_point">(<em th:text="${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}"></em>&nbsp;사용 가능)</span>
+									<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}|"></em>&nbsp;사용 가능)</span>
 								</div>
 							</div>
 						</dd>
@@ -186,7 +186,7 @@
 								<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
 								<th:block th:if="${orgGoodsSumAmt} < ${pointUseEnvset.pointUseOrdMinAmt}">
 									<div class="input_wrap">
-										<input type="text" class="form_control" maxlength="" th:placeholder="|${#numbers.formatInteger(pointUseEnvset.pointUseOrdMinAmt, 1, 'COMMA')} 이상 결제시에만 포인트 사용이 가능합니다.|" disabled="">
+										<input type="text" class="form_control" maxlength="" th:placeholder="|${#numbers.formatInteger(pointUseEnvset.pointUseOrdMinAmt, 1, 'COMMA')} 이상 결제시에만 포인트 사용이 가능합니다.|" disabled="">
 									</div>
 								</th:block>
 								<!-- //스타일 포인트 3만원 미만 결제시 노출 -->

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

@@ -34,19 +34,6 @@
 	<!-- 주문자정보 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="orderInfo" id="orderInfo">
 		<tbody>
-			<tr style="height:30px;">
-				<th>custNm</th>
-				<th>email</th>
-				<th>cellPhnno</th>
-				<th>recipNm</th>
-				<th>recipPhnno</th>
-				<th>recipZipcode</th>
-				<th>recipBaseAddr</th>
-				<th>recipDtlAddr</th>
-				<th>delvMemo</th>
-				<th>sexGb</th>
-				<th>birthYmd</th>
-			</tr>
 			<tr style="height:30px;">
 				<td class="custNm"></td>
 				<td class="email"></td>
@@ -66,12 +53,6 @@
 	
 	<!-- 사은품정보 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo">
-		<tr style="height:30px;">
-			<th>freegiftValArr</th>
-			<th>freegiftUsePointArr</th>
-			<th>freegiftSqArr</th>
-			<th>freegiftGoodsArr</th>
-		</tr>
 		<tr style="height:30px;">
 			<td class="freegiftValArr"></td>
 			<td class="freegiftUsePointArr"></td>
@@ -83,41 +64,6 @@
 	
 	<!-- 주문상세금액 -->
 	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="orderDetailInfo" id="orderDetailInfo">
-		<tr style="height:30px;">
-			<th>cartSq</th>
-			<th style="display:none">goodsNm</th>
-			<th>goodsCd</th>
-			<th>goodsType</th>
-			<th>itemCd</th>
-			<th>optCd</th>
-			<th style="display:none">optCd1</th>
-			<th style="display:none">optCd2</th>
-			<th style="display:none">itemQtyr</th>
-			<th>orgCurrPrice</th>
-			<th>cpn1CpnSq</th>
-			<th>cpn1DcAmt</th>
-			<th>optAddPrice</th>
-			<th>goodsQty</th>
-			<th>ordAmt</th>
-			<th>tmtb1Sq</th>
-			<th>tmtb1DcAmt</th>
-			<th>tmtb2Sq</th>
-			<th>tmtb2DcAmt</th>
-			<th>goodsCpnSq</th>
-			<th>goodsCpnDcAmt</th>
-			<th>cartCpnSq</th>
-			<th>cartCpnDcAmt</th>
-			<th>prePntDcAmt1</th>
-			<th>dcSumAmt</th>
-			<th>pntDcAmt1</th>
-			<th>gfcdUseAmt1</th>
-			<th>realOrdAmt1</th>
-			<th>savePntAmt1</th>
-			<th>shotDelvYn</th>
-			<th>foreignYn</th>
-			<th>orderMadeYn</th>
-			<th>delvFeeCd</th>
-		</tr>
 		<th:block th:each="delvAllCart, index : ${delvAllCartList}">
 			<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
 				<th:block th:each="goods, i : ${delvAllCart}">
@@ -162,11 +108,13 @@
 						<td class="pntDcAmt1">0</td>
 						<td class="gfcdUseAmt1">0</td>
 						<td class="realOrdAmt1">0</td>
-						<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
+						<td class="savePntAmt1">0</td>
 						<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
 						<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
 						<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
 						<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
+						<td class="pntPrate" 		th:text="${goods.pntPrate}"></td>
+						<td class="pntMrate" 		th:text="${goods.pntMrate}"></td>
 					</tr>
 				</th:block>
 			</th:block>
@@ -176,13 +124,6 @@
 	
 	<!-- 배송단위목록 -->
 	<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none; width:100%;" name="delvFeeCdInfo" id="delvFeeCdInfo">
-		<tr style="height:30px;">
-			<th>supplyCompCd</th>
-			<th>delvFeeCd</th>
-			<th>delvFee</th>
-			<th>delvCpnSq</th>
-			<th>delvCpnDcAmt</th>
-		</tr>
 		<th:block th:each="delvFeeCd, index : ${delvFeeCdList}">
 			<tr style="height:30px;">
 				<td class="supplyCompCd" 	th:text="${delvFeeCd.supplyCompCd}"></td>
@@ -1229,6 +1170,17 @@ var paymentInfoSet = function() {
 						,"giftMsg"				: ""
 						,"custPayMeans"			: custPayMeans
 						,"cartSqArr"			: cartSqArr
+						,"orgGoodsSumAmt"		: $("#orderAmtForm .orgGoodsSumAmt").text()
+						,"cpn1DcSumAmt"			: $("#orderAmtForm .cpn1DcSumAmt").text()
+						,"tmtb1DcSumAmt"		: $("#orderAmtForm .tmtb1DcSumAmt").text()
+						,"tmtb2DcSumAmt"		: $("#orderAmtForm .tmtb2DcSumAmt").text()
+						,"goodsCpnDcSumAmt"		: $("#orderAmtForm .goodsCpnDcSumAmt").text()
+						,"cartCpnDcSumAmt"		: $("#orderAmtForm .cartCpnDcSumAmt").text()
+						,"prePntDcSumAmt"		: $("#orderAmtForm .prePntDcSumAmt").text()
+						,"pntDcSumAmt"			: $("#orderAmtForm .pntDcSumAmt").text()
+						,"gfcdUseSumAmt"		: $("#orderAmtForm .gfcdUseSumAmt").text()
+						,"realOrdSumAmt"		: $("#orderAmtForm .realOrdSumAmt").text()
+						,"delvSumAmt"			: $("#orderAmtForm .delvSumAmt").text()
 					};
 					
 					$.ajax( {
@@ -2161,10 +2113,10 @@ var custCpnSumAmtCal = function() {
 		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
 		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var dcSumAmt		= 0;
-		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
 		
 		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
-		orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
+		//orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
+		orgGoodsSumAmt		= orgGoodsSumAmt + orgCurrPrice;
 		cpn1DcSumAmt		= cpn1DcSumAmt + (cpn1DcAmt * goodsQty);
 		tmtb1DcSumAmt		= tmtb1DcSumAmt + tmtb1DcAmt;
 		tmtb2DcSumAmt		= tmtb2DcSumAmt + tmtb2DcAmt;
@@ -2181,14 +2133,8 @@ var custCpnSumAmtCal = function() {
 		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
 		if (prePntDcAmtYn == "Y") {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
-			
-			// 2021.04.29 선포인트사용포인트 적립포인트금액 0원처리
-			if (prePntDcAmt1 < 1) {
-				savePntSumAmt	= savePntSumAmt + savePntAmt1;
-			}
 		} else {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
-			savePntSumAmt	= savePntSumAmt + savePntAmt1;
 		}
 		
 		// 주문금액설정
@@ -2198,11 +2144,15 @@ var custCpnSumAmtCal = function() {
 	
 	// 포인트, 상품권 금액 분배
 	$("#orderAmtForm .cartSq").each(function(){
+		var pntPrate		= parseInt($(this).parent().find(".pntPrate").text());
+		var pntMrate		= parseInt($(this).parent().find(".pntMrate").text());
 		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
-		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
+		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text());
+		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
 		var pntDcAmt1 		= 0;
 		var gfcdUseAmt1		= 0;
+		var savePntAmt1		= 0;
 		
 		if (index == cartSqLenght) {
 			pntDcAmt1 		= leftPntAmt;
@@ -2217,9 +2167,22 @@ var custCpnSumAmtCal = function() {
 		var realOrdAmt1		= ordAmt - dcSumAmt - pntDcAmt1 - gfcdUseAmt1;
 		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
 		
+		// 2021.05.11 최종할인금액으로 적립포인트 적용
+		savePntAmt1			= parseInt(realOrdAmt1 * (pntPrate/100));
+		
+		// 선포인트사용여부 
+		if (prePntDcAmtYn == "Y") {
+			if (prePntDcAmt1 < 1) {
+				savePntSumAmt	= savePntSumAmt + savePntAmt1;
+			}
+		} else {
+			savePntSumAmt	= savePntSumAmt + savePntAmt1;
+		}
+		
 		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
 		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
 		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
+		$(this).parent().find(".savePntAmt1").text(savePntAmt1);
 		
 		index++;
 	});

+ 38 - 0
src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html

@@ -0,0 +1,38 @@
+<form class="form_wrap form_full" name="trackWithdrawForm" id="trackWithdrawForm">
+	<div class="modal-header">
+		<h5 class="modal-title" id="reclaimLabel">
+			회수 조회
+		</h5>
+	</div>
+	<div class="modal-body">
+		<div class="pop_cont">
+			<!-- 210506_수정 : 테이블 변경 -->
+			<div class="tbl type5">
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
+					<thead>
+						<tr>
+							<th scope="col">시간</th>
+							<th scope="col">장소</th>
+							<th scope="col">유형</th>
+							<th scope="col">전화번호</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>2020.10.05 09:10:22</td>
+							<td>시흥 대리점</td>
+							<td>집화 처리</td>
+							<td>010-1234-5678</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+</form>

+ 29 - 1
src/main/webapp/biz/mypage.js

@@ -316,7 +316,7 @@ var fnReceipt = function(param) {
 		receiptWin += '&tno=' + paymentInfo.pgTid;
 		receiptWin += '&order_no=' + ordNo;
 		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
-		
+		console.log(receiptWin);
 		// 팝업 크기 설정
 		option = 'width=455, height=815';
 	} else if (param == 'cash') {
@@ -446,3 +446,31 @@ var fnCrePayAddCost = function(param) {
 	$('#addPaymentForm input[name=ordNo]').val(ordNo);
 	document.addPaymentForm.submit();
 }
+
+// 회수조회 버튼 클릭 이벤트
+var fnGoToWithdrawDelivery = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	let wdInvoiceNo = $(param).attr('wdInvoiceNo');
+
+	let data = {}
+	data.shipCompCd = shipCompCd;
+	data.wdInvoiceNo = wdInvoiceNo;
+
+	let jsonData = JSON.stringify(data);
+
+	$.ajax( {
+		type		: "POST",
+		url 		: '/mypage/track/withdraw/popup/form',
+		data		: jsonData,
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+		},
+		success 	: function(result) {
+			$("#reclaimPop .modal-dialog .modal-content").html(result);
+			$("#reclaimPop").modal("show");
+		}
+	});
+}

+ 1 - 0
src/main/webapp/ux/mo/css/common_m.css

@@ -1304,6 +1304,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 /*alert confirm*/
 .dialog-mobile {
 	padding: 0;
+	margin-left: -45%;
 	text-align:center;
 	position: fixed;
 	top: 50%;

+ 22 - 9
src/main/webapp/ux/mo/css/layout_m.css

@@ -466,7 +466,7 @@
 .pd_detail .descript_box .btn_group_flex button{border:1px solid #fd4802; color:#fd4802; background: #fff;}
 /* 2 */
 .pd_detail .desc_status{padding:1.5rem 2rem; margin-bottom:-1.2rem; color: #fd4802; border-bottom:1px solid #dddddd;}
-.pd_detail .timer_box{position: relative;width: 30rem;top:-2.0rem;left: 50%;transform: translateX(-50%);z-index: 2;}
+.pd_detail .timer_box{position: absolute;width: 30rem;top:-2.4rem;left: 50%;transform: translateX(-50%);z-index: 2;}
 .pd_detail .timer_box::before{position: absolute;left: 0;bottom: 0;width: 100%;height: 3rem;background-color: rgba(255,255,255,.95);z-index: -1;} /* content: ''; */
 .pd_detail .timer_box p{padding: 0;text-align: center;background: #222;height: 3.6rem;}
 /* .pd_detail .timer_box::after{content:''; position:absolute; right:-1.2rem; bottom:-1.8rem; border:1.2rem solid transparent; border-top:1.2rem solid #fff; transform:rotate(-45deg);} */
@@ -480,14 +480,14 @@
 .pd_detail .timer_box p .timer em::before {content:':'; position:absolute; left:-1px; top:50%; transform:translateY(-50%);}
 .pd_detail .timer_box p .timer em:first-of-type {padding-left:0.8rem;}
 .pd_detail .timer_box p .timer em:first-of-type::before {display:none;}
-.pd_detail .descript_box {padding-top: 0rem;}
+.pd_detail .descript_box {padding-top: 2.4rem;}
 .pd_detail .option_box .opt_color{padding:3rem 0;}
 .pd_detail .option_box .opt_color ul {margin:0 -2rem; padding-left:2rem; overflow-x:auto; font-size:0; white-space:nowrap;}
 .pd_detail .option_box .opt_color ul::after {content:''; position: relative; display:inline-block; width:2rem; height:1px;}
 .pd_detail .option_box .opt_color ul li {margin-right:0.5rem; display:inline-block; width:5rem;}
 .pd_detail .option_box .opt_color ul li:last-child {margin-right:0;}
 .pd_detail .option_box .opt_color ul li a {position:relative; display:block; padding-bottom:150%; box-sizing:border-box; width:5rem;}
-.pd_detail .option_box .opt_color ul li a img {position:absolute; top:0; left:0; width:100%;}
+.pd_detail .option_box .opt_color ul li a img {position:absolute; top:50%; left:50%; width:100%; transform: translate(-50%, -50%);}
 .pd_detail .option_box .opt_color ul li a.on:after{display:block; content:''; position:absolute; left:0; right:0; top:0; bottom:0; border:1px solid #fd4802; box-sizing:border-box;}
 .pd_detail .option_box > [class^="opt_"] .opt_header {margin-bottom:0.5rem;}
 .pd_detail .option_box > [class^="opt_"] .opt_header .title {margin-right:1rem; font-weight:500; color:#222;}
@@ -820,7 +820,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .popup_box .button_list.clear button{width:100% !important;}
 .dp .open_categori a{display: inline-block;font-size: 1.2rem;font-weight: 300;padding-right: 1.4rem;background: url(/images/mo/ico_sort_arrow.png) no-repeat right center;background-size: 0.7rem 0.43rem;}
 .dp .Bulletship_foot .clear{background:#f5f5f5; margin:4rem -2rem; padding:4rem 0 0rem 2rem;}
-.dp .items_option{padding-top:0; margin:0 2rem;}
+.dp .items_option{padding-top:0; margin:0 -2.1rem;}
 .dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd; font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
 .dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
 .dp .dp_listItems_wrap .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
@@ -860,7 +860,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .brand_floormenu.soldout .prd_buy > .buying{display:none;}
 .brand_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
 .dp_lookbook ~ .popup_box .popup_con{margin-bottom:5rem}
-.dp_listItems_cont.type1 .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
+.dp_listItems_wrap.type1 .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
 /* 210423 */
 .br .brand_si{margin-top:0.1rem}
 .br .brand_si .swiper-wrapper{height:0;}
@@ -885,7 +885,8 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .pop_detail .review_list .review .info_box .writer span:first-child::after {display:none;}
 .pop_detail .review_list .review .response_box {margin-top:1.4rem;}
 .pop_detail .review_list .review .response_box > div:first-child {margin-top:0}
-.pop_detail .review_list .review .response_box > div dl div {display:flex; font-size:1.1rem;}
+.pop_detail .review_list .review .response_box > div dl{padding-top:2.3rem}
+.pop_detail .review_list .review .response_box > div dl div {display:flex; font-size:1.1rem; width:100%;}
 .pop_detail .review_list .review .response_box > div dl div dt {width:4.5rem; color:#888}
 .pop_detail .review_list .review .response_box > div dl div dd {margin-left:1.2rem; color:#fd4802}
 .pop_detail .review_list .review .response_box2 {margin-top:1.4rem;}
@@ -923,6 +924,18 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .br .br_inlookbook .ioBtn.active{display:block}
 .br .br_inlookbook .itemsOut{display:none}
 .br .br_inlookbook .itemsOut.active{display:block}
+/* 210510 */
+.pd_detail .pd_info .inner:nth-of-type(2){background:linear-gradient(to bottom,rgba(255, 255, 255, 0.93) 1%,rgba(255, 255, 255, 1) 25%,rgba(255, 255, 255, 1) 50%,rgba(255, 255, 255, 1) 75%,rgba(255, 255, 255, 1) 100%)}
+/* 210511 */
+.dp .promotion_visual.type2{padding-bottom:3.8rem}
+.dp .dp_hotdeal .inner:nth-of-type(1){margin-bottom:0; padding-bottom:4rem;}
+.dp .dp_review_cont{padding-bottom:4rem;}
+.dp .mid_banner{padding-bottom:3rem;}
+.dp .dp_listItems_cont.type1{padding-bottom:3rem;}
+.dp .dp_listItems_cont.type2{padding-bottom:3rem;}
+.dp .dp_listItems_wrap{padding-bottom:3rem;}
+.dp .other_promotion_slide{padding-top:0}
+.dp .dp_lookbook ~ .popup_box.nodata .popup_con{margin-bottom:0;}
 
 
 
@@ -1754,7 +1767,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp .dp_best .best_item .itemsGrp .item_prod:nth-child(2n) {margin-right: 0;}
 
 /* 핫딜 - dp_hotdeal */
-.dp_hotdeal .hotdeal {position: relative;height:49vw; margin-bottom:4rem; background: url(/images/mo/thumb/hotdeal_bg.png)no-repeat center center; background-size:cover;}
+.dp_hotdeal .hotdeal {position: relative;height:49vw; margin-bottom:0; background: url(/images/mo/thumb/hotdeal_bg.png)no-repeat center center; background-size:cover;}
 .dp_hotdeal .hotdeal #countdown{position: absolute; padding:0 6.1vw; height:10.1vw; line-height:10.1vw; border-radius:10.1vw;; border:1px solid #fff; white-space:nowrap; display:inline-block;  text-align: center; bottom:8.3vw; left:50%; transform: translateX(-50%);}
 .dp_hotdeal .hotdeal #countdown:before{content:''; display:inline-block; margin-right:1.8vw; width:5.1vw; height:5.1vw; background:url(/images/mo/icon_time_hotdeal.png) center center no-repeat; background-size:contain; vertical-align:middle;}
 .dp_hotdeal .hotdeal #countdown span{font-size:4vw; color:#fff; display:inline-block; vertical-align:middle;}
@@ -1773,7 +1786,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape span{position:relative; width:auto; left:0; top:0; text-indent:0; transform:translate(0);}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape:after{display:none;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
-.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 88;}
+.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 78;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod.sold_out .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size:1.4rem; color:#fff; font-weight:bold; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height:23.4rem;; z-index: 99; text-align: center;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape{position:absolute; left:17.6rem; top:3rem;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemBrand {margin:3rem 0 0.5rem;}
@@ -1807,7 +1820,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp .dp_exhibition .inner:first-child{padding-bottom:0; margin-bottom:0;}
 .dp .dp_exhibition .inner:last-child{padding-bottom: 4rem;}
 .dp .dp_exhibition .inner.bg_gray{background-color:#f5f5f5;}*/
-.dp .dp_listItems_wrap .items_option{padding-top:4rem;}
+.dp .dp_listItems_wrap .items_option{padding-top:0;}
 .dp .dp_listItems_wrap .items_option .select{display:block;}
 /*.dp .promotion_visual.type1{margin-bottom:-5.3rem;}*/
 .dp .promotion_visual.type1 .mid_banner{background-color:#fff;}

+ 3 - 8
src/main/webapp/ux/mo/css/style24_m.css

@@ -619,12 +619,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .survey_wrap .survey_con .survey_row {background: #fff; padding: 3rem 2rem; margin-bottom: 2rem;}
 .ev .survey_wrap .survey_con .survey_row:last-child {border-bottom: 0;}
 .ev .survey_wrap .survey_con .survey_row h4 {margin-bottom: 2rem; font-size: 1.33rem; line-height: 1.5; font-weight: 500; position: relative; padding-left: 2.5rem;}
-.ev .survey_wrap .survey_con .survey_row h4:before {position: absolute; top: 0; left: 0;}
-.ev .survey_wrap .survey_con .survey_row.q4  {margin-bottom: 0;}
-.ev .survey_wrap .survey_con .survey_row.q1 h4:before {content:'Q1.'}
-.ev .survey_wrap .survey_con .survey_row.q2 h4:before {content:'Q2.'}
-.ev .survey_wrap .survey_con .survey_row.q3 h4:before {content:'Q3.'}
-.ev .survey_wrap .survey_con .survey_row.q4 h4:before {content:'Q4.'}
+.ev .survey_wrap .survey_con .survey_row h4 span.question {position: absolute; top: 0; left: 0;}
 .ev .survey_wrap .survey_con .survey_row .answer ul {width: 100%;}
 
 .ev .survey_wrap .survey_con .survey_row ul li {position: relative; margin-bottom: 2rem;}
@@ -643,8 +638,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .ev .survey_wrap .survey_con .survey_row.q4 {padding-bottom: 0;}
 .ev .survey_wrap .survey_con .survey_row.q4 .q4_ans {width: 100%; height: 4.5rem; padding: 1rem; font-size: 1.3rem; line-height: 1.6; color: #222; font-weight: 300; resize:none;}
-.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff;}
-.ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto;} 
+.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff; margin-top: -2rem;}
+.ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto; } 
 
 /* ev_comment_1 */
 .dp {background: #f5f5f5;}

+ 3 - 2
src/main/webapp/ux/style24_link.js

@@ -641,10 +641,10 @@ function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
 * @access : public
 * @desc   : 상품평- 베스트 리뷰 보기
 * <pre>
-*		cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq);
+*		cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq, attachSq);
 * </pre>
 */
-function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq) {
+function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq, attachSq) {
 	var str = '<div class="modal fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="pdBestReviewLabel" aria-hidden="true"></div>';
 	if ("P" != _frontGb){
 		str = '<div class="modal pop_full fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
@@ -658,6 +658,7 @@ function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq) {
 	params += '&reviewSq=' + reviewSq;
 	params += '&bestYn=' + bestYn;
 	params += '&photoYn=' + photoYn;
+	if (typeof (attachSq) != 'undefined') params += "&attachSq=" + attachSq;
 	
 	cfOpenLayer(_PAGE_GOODS_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
 }