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

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
0a617fc2fd
27 измененных файлов с 340 добавлено и 151 удалено
  1. 10 0
      src/main/java/com/style24/front/biz/dao/TsfOrderDao.java
  2. 52 18
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  3. 4 3
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  4. 5 4
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  5. 11 2
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  6. 9 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  7. 14 8
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  8. 54 38
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  9. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  10. 6 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  11. 7 7
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  12. 15 15
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  13. 4 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html
  14. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  15. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  16. 5 3
      src/main/webapp/WEB-INF/views/mob/order/OrderCouponApplyPopMob.html
  17. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html
  18. 20 19
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  19. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html
  20. 42 2
      src/main/webapp/WEB-INF/views/mob/order/OrderPaymentInfoMob.html
  21. 2 5
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  22. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderCouponApplyPopWeb.html
  23. 3 4
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  24. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderListInfoWeb.html
  25. 41 2
      src/main/webapp/WEB-INF/views/web/order/OrderPaymentInfoWeb.html
  26. 1 1
      src/main/webapp/biz/mypage.js
  27. 27 11
      src/main/webapp/ux/style24_link.js

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -146,4 +146,14 @@ public interface TsfOrderDao {
 	 * @since 2021. 05. 10
 	 */
 	Collection<Order> getGoodsInfoForInsurance(Order order);
+
+	/**
+	 * 비회원 주문 여부 정보 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 05. 26
+	 */
+	int getNoMemberOrderInfo(Order order);
 }

+ 52 - 18
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -6,14 +6,17 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
 
 import javax.net.ssl.HttpsURLConnection;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.style24.persistence.domain.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -35,6 +38,16 @@ import com.style24.front.biz.dao.TsfGoodsDao;
 import com.style24.front.biz.dao.TsfOrderDao;
 import com.style24.front.biz.dao.TsfRendererDao;
 import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.Cart;
+import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.Delivery;
+import com.style24.persistence.domain.GiftCard;
+import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsStock;
+import com.style24.persistence.domain.KakaoPay;
+import com.style24.persistence.domain.NaverPay;
+import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Payment;
 import com.usafe.guarantee.InsuranceInfo;
 import com.usafe.guarantee.InsuranceManager;
 
@@ -1139,7 +1152,7 @@ public class TsfOrderService {
 			int totPrice			= 0;												// 전체 주문 금액
 
 			// 네이버페이 송부용 xml 작성
-			StringBuffer sb = new StringBuffer();
+			StringBuilder sb = new StringBuilder();
 			sb.append("<order>\n");
 			sb.append("\t<merchantId>").append(shopId).append("</merchantId>\n");								//<!-- 상점ID -->
 			sb.append("\t<certiKey>").append(certificationKey).append("</certiKey>\n");	//<!-- 인증키 -->
@@ -1284,6 +1297,7 @@ public class TsfOrderService {
 
 			sb.append("</order>");
 
+			log.info("CHECK NAVER PAY SB_LENGTH ::::: \n{}", sb.length());
 			log.info("CHECK NAVER PAY SB ::::: \n{}", sb.toString());
 
 			result = sendOrderInfoToNC(sb);
@@ -1319,6 +1333,8 @@ public class TsfOrderService {
 		sb.append("\t\t\t\t<stockQuantity>").append(stockQty).append("</stockQuantity>\n");
 		sb.append("\t\t\t\t<status>true</status>\n");
 
+		log.info("CHECK size / optCd.length / optCd ::::: {} / {} / {}", size, optCd.length, Arrays.toString(optCd));
+
 		// 옵션 옵션조합정보 색상
 		for(int i = 0 ; i < size ; i++) {
 			sb.append("\t\t\t\t<options>\n");
@@ -1338,7 +1354,7 @@ public class TsfOrderService {
 	 * @author xodud1202
 	 * @since 2021. 05. 12
 	 */
-	private GagaMap sendOrderInfoToNC(StringBuffer sb) throws IOException {
+	private GagaMap sendOrderInfoToNC(StringBuilder sb) throws IOException {
 		GagaMap resultMap = new GagaMap();
 
 		// 1.0, 2.0  일때 구분값 처리
@@ -1414,7 +1430,7 @@ public class TsfOrderService {
 	 * @since 2021. 05. 12
 	 */
 	public void createNpayGoodsXml50(HttpServletRequest request, HttpServletResponse response) throws Exception {
-		StringBuffer sb = new StringBuffer();
+		StringBuilder sb = new StringBuilder();
 		// http://ldfront.style24.com/pg/create/npay/goodsxml?product%5B0%5D%5Bid%5D=A83F-DP568S&product%5B0%5D%5BoptionManageCodes%5D=14019445-2&supplementSearch=true&optionSearch=true
 		// product%5B0%5D%5Bid%5D=A83F-DP568S&product%5B0%5D%5BoptionManageCodes%5D=14019445-2&supplementSearch=true&optionSearch=true
 		// 이스케이프코드 : %5B = [  ,   %5D = ]
@@ -1550,7 +1566,7 @@ public class TsfOrderService {
 						String[] colorNms = comps.getColorNm().split(",");
 						combCnt *= optCds.length;
 
-						for(int j = 0 ; j < optCds.length ; i++) {
+						for(int j = 0 ; j < optCds.length ; j++) {
 							if(comps.getGoodsNm().length() > 24)	{comps.setGoodsNm(comps.getGoodsNm().substring(0, 21) + "..");}
 							if(optCd2s[j].length() > 12)	{optCd2s[j] = optCd2s[j].substring(0, 9)  + "..";}
 							if(colorNms[j].length() > 12)	{colorNms[j] = colorNms[j].substring(0, 9) + "..";}
@@ -1578,8 +1594,9 @@ public class TsfOrderService {
 								StringBuilder manageCode = new StringBuilder(goods1optCds[g1]);	// 옵션코드 조합
 								int addPrice = Integer.parseInt(goods1addPrices[g1]);		// 추가금액 합계
 								int stockQty = Integer.parseInt(goods1stockQty[g1]);		// 상품 주문 최소 재고(구성상품 최소)
-
-								if(compsInfoList.size() == 2) {		// 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+								log.info("MAKE new StringBuilder(goods1optCds[g1]) :::: {}", goods1optCds[g1]);
+								log.info("MAKE MANAGECODE :::: {}", manageCode);
+								if(compsInfoList.size() > 1) {		// 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
 									for (Goods comps2 : compsInfoList) {
 										if(comps2.getRnum() == 2) {
 											// 구성상품별 옵션 정보
@@ -1588,7 +1605,7 @@ public class TsfOrderService {
 											String[] goods2stockQty = comps2.getItemStockQty().split(",");
 
 											// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
-											String manageCodeSave2 = goods1optCds[g1];
+											String manageCodeSave2 = manageCode.toString();
 											int addPriceSave2 = Integer.parseInt(goods1addPrices[g1]);
 											int stockQtySave2 = Integer.parseInt(goods1stockQty[g1]);
 
@@ -1597,8 +1614,10 @@ public class TsfOrderService {
 												manageCode.append("/").append(goods2optCds[g2]);
 												addPrice = addPriceSave2 + Integer.parseInt(goods2addPrices[g2]);
 												if(stockQtySave2 < Integer.parseInt(goods2stockQty[g2])) stockQty = Integer.parseInt(goods2stockQty[g2]);
+												log.info("MAKE new StringBuilder(manageCodeSave2); :::: {}", manageCodeSave2);
+												log.info("MAKE MANAGECODE :::: {}", manageCode);
 
-												if(compsInfoList.size() == 3) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+												if(compsInfoList.size() > 2) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
 													for (Goods comps3 : compsInfoList) {
 														if (comps3.getRnum() == 3) {
 															// 구성상품별 옵션 정보
@@ -1607,7 +1626,7 @@ public class TsfOrderService {
 															String[] goods3stockQty = comps3.getItemStockQty().split(",");
 
 															// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
-															String manageCodeSave3 = manageCodeSave2;
+															String manageCodeSave3 = manageCode.toString();
 															int addPriceSave3 = addPriceSave2;
 															int stockQtySave3 = stockQtySave2;
 
@@ -1616,8 +1635,10 @@ public class TsfOrderService {
 																manageCode.append("/").append(goods3optCds[g3]);
 																addPrice = addPriceSave3 + Integer.parseInt(goods3addPrices[g3]);
 																if(stockQtySave3 < Integer.parseInt(goods3stockQty[g3])) stockQty = Integer.parseInt(goods3stockQty[g3]);
+																log.info("MAKE new StringBuilder(manageCodeSave3); :::: {}", manageCodeSave3);
+																log.info("MAKE MANAGECODE :::: {}", manageCode);
 
-																if(compsInfoList.size() == 4) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+																if(compsInfoList.size() > 3) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
 																	for (Goods comps4 : compsInfoList) {
 																		if (comps4.getRnum() == 4) {
 																			// 구성상품별 옵션 정보
@@ -1626,7 +1647,7 @@ public class TsfOrderService {
 																			String[] goods4stockQty = comps4.getItemStockQty().split(",");
 
 																			// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
-																			String manageCodeSave4 = manageCodeSave3;
+																			String manageCodeSave4 = manageCode.toString();
 																			int addPriceSave4 = addPriceSave3;
 																			int stockQtySave4 = stockQtySave3;
 
@@ -1636,7 +1657,7 @@ public class TsfOrderService {
 																				addPrice = addPriceSave4 + Integer.parseInt(goods4addPrices[g4]);
 																				if(stockQtySave4 < Integer.parseInt(goods4stockQty[g4])) stockQty = Integer.parseInt(goods4stockQty[g4]);
 
-																				if(compsInfoList.size() == 5) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+																				if(compsInfoList.size() > 4) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
 																					for (Goods comps5 : compsInfoList) {
 																						if (comps5.getRnum() == 5) {
 																							// 구성상품별 옵션 정보
@@ -1645,7 +1666,7 @@ public class TsfOrderService {
 																							String[] goods5stockQty = comps5.getItemStockQty().split(",");
 
 																							// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
-																							String manageCodeSave5 = manageCodeSave4;
+																							String manageCodeSave5 = manageCode.toString();
 																							int addPriceSave5 = addPriceSave4;
 																							int stockQtySave5 = stockQtySave4;
 
@@ -1925,7 +1946,8 @@ public class TsfOrderService {
 			e.printStackTrace();
 		} finally {
 			log.info("CHECK CREATE NAVERPAY GOODS XML ::::: \n{}", sb.toString());
-			write(response, sb.toString());
+			// log.info("CHECK NAVERPAY XML LENGTH ::::: {}", sb.length());
+			write(response, sb);
 		}
 	}
 
@@ -1936,7 +1958,7 @@ public class TsfOrderService {
 	 * @author xodud1202
 	 * @since 2021. 05. 13
 	 */
-	public void write(HttpServletResponse response, String result) throws Exception {
+	public void write(HttpServletResponse response, StringBuilder result) throws Exception {
 		Writer writer = null;
 
 		try {
@@ -1944,7 +1966,7 @@ public class TsfOrderService {
 			response.setHeader("Cache-Control", "no-cache");
 
 			writer = response.getWriter();
-			writer.write(result);
+			writer.write(result.toString());
 			writer.flush();
 		} catch(Exception e) {
 			e.printStackTrace();
@@ -2062,4 +2084,16 @@ public class TsfOrderService {
 
 		return "SUCCESS";
 	}
+
+	/**
+	 * 비회원 주문 여부 정보 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 05. 26
+	 */
+	public int getNoMemberOrderInfo(Order order) {
+		return orderDao.getNoMemberOrderInfo(order);
+	}
 }

+ 4 - 3
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -1398,7 +1398,7 @@ public class TsfGoodsController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
 		setGoods(paramsGoods);
-
+		paramsGoods.setAdminYn("Y"); //20210526 soldout된 상품도 정보 조회는 가능해야함
 		Goods goods = goodsService.getGoodsInfo(paramsGoods);
 
 		// 배송업체명, 반품비, 교환비, 주소
@@ -1446,6 +1446,7 @@ public class TsfGoodsController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
 		setGoods(paramsGoods);
+		paramsGoods.setAdminYn("Y"); //20210526 soldout된 상품도 정보 조회는 가능해야함
 		Goods goods = goodsService.getGoodsInfo(paramsGoods);
 
 		// 상품 기본정보
@@ -1461,7 +1462,7 @@ public class TsfGoodsController extends TsfBaseController {
 		Review review = new Review();
 		review.setGoodsCd(goods.getGoodsCd());
 		review.setGoodsType(goods.getGoodsType());
-		log.info("review {}", review);
+		//log.info("review {}", review);
 		mav.addObject("reviewCount", reviewService.getReviewTotalCount(review));	// 전체상품평 건수
 
 		review.setRownum(1);
@@ -1484,7 +1485,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		// 키전체 
 		Collection<CommonCode> reviewHeightList = new ArrayList<CommonCode>();
-		log.info("goods.getItemkindCd().substring(0, 2) => {} ", goods.getItemkindCd().substring(0, 2));
+		//log.info("goods.getItemkindCd().substring(0, 2) => {} ", goods.getItemkindCd().substring(0, 2));
 		if (itemList.contains(goods.getItemkindCd().substring(0, 2))) {
 			reviewHeightList = rendererService.getAvailCommonCodeList("G091");
 		} else {

+ 5 - 4
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -310,7 +310,7 @@ public class TsfNoMemberController extends TsfBaseController {
 		if (!order.getOrdPhnno().contains("-")) {
 			order.setOrdPhnno(order.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
 		}
-		boolean isFind = orderService.getPagingOrdNoListCount(order) > 0;
+		boolean isFind = orderService.getNoMemberOrderInfo(order) > 0;
 
 		if (isFind) {
 			TsfSession.setAttribute("noMemberOrdNm",order.getOrdNm());
@@ -349,10 +349,10 @@ public class TsfNoMemberController extends TsfBaseController {
 		}
 
 		// 2. 환불 사전 정보 조회
-		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
+		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo2(orderChange);
 		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 
-		return coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
+		return coreOrderRefundService.cnclRtnRefundAmt2(cnclReqList);
 	}
 
 	/**
@@ -552,7 +552,8 @@ public class TsfNoMemberController extends TsfBaseController {
 
 		// 1. 취소완료 처리
 		orderChange.setCustNo(0);
-		GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange, 0);
+		// GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange, 0);
+		GagaMap result = coreOrderChangeService.orderCancelPreInfoTemp(orderChange, 0);
 
 		// TODO
 		// 취소 완료 알림톡 발송 에정

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

@@ -142,7 +142,6 @@ public class TsfOrderController extends TsfBaseController {
 	public ModelAndView orderForm(HttpServletRequest request, Order order) {
 		ModelAndView mav = new ModelAndView();
 
-		
 		// 1.1 referer 체크 (order/noMember)
 		String refererStr = "";
 		if (request.getHeader("referer") != null) {
@@ -165,7 +164,7 @@ public class TsfOrderController extends TsfBaseController {
 		// 선물받기여부
 		String giftPackYn = "N";
 		
-		// 1.3. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
+		// 1.3. 선물하기주문 체크 후 비로그인 상태면 장바구니로 강제 이동
 		if (coreOrderService.getGiftOrderCheck(order) > 0) {
 			// 비 로그인 상태면 장바구니로 강제 이동
 			if (TsfSession.isLogin() == false) {
@@ -699,11 +698,21 @@ public class TsfOrderController extends TsfBaseController {
 		}
 		
 		// 2. TODO 로그인체크 후 정보 설정 자주사용하는 결제정보조회
+		String payMeans 	= "";
+		String pgGb 		= "";
+		
 		if (TsfSession.isLogin()) {
+			Order vo = coreOrderService.getCustPaymeans(order);
 			
+			if (vo != null) {
+				payMeans 	= vo.getPayMeans();
+				pgGb 		= vo.getPgGb();
+			}
 		}
 
 		ModelAndView mav = new ModelAndView();
+		mav.addObject("payMeans" 		, payMeans);				// 결제수단
+		mav.addObject("pgGb" 			, pgGb);					// PG구분
 		mav.addObject("order" 			, order);					// 파라미터
 		mav.addObject("isLogin"			, TsfSession.isLogin());	// 로그인여부
 		mav.setViewName(super.getDeviceViewName("order/OrderPaymentInfo"));

+ 9 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -608,6 +608,15 @@
 		AND    INS.ORD_NO = #{ordNo}
 	</select>
 	
+	<!-- 비회원 주문 여부 정보 조회 -->
+	<select id="getNoMemberOrderInfo" parameterType="Order" resultType="int">
+		/* TsfOrder.getNoMemberOrderInfo */
+		SELECT COUNT(*)
+		  FROM TB_ORDER
+		 WHERE ORD_NO = #{ordNo}
+		   AND ORD_NM = #{ordNm}
+		   AND ORD_PHNNO = #{ordPhnno}
+	</select>
 
 
 </mapper>

+ 14 - 8
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -507,9 +507,9 @@
 		<div class="inner wide">
 			<div class="od_recommend">
 				<h3>추천상품</h3>
-				<div class="swiper-container item_list">
-					<div class="swiper-wrapper">
-						<div class="swiper-slide">
+				<div class="swiper-container item_list swiper-container-initialized swiper-container-horizontal swiper-container-android">
+					<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
+						<div class="swiper-slide swiper-slide-active" style="width: 176px; margin-right: 8px;">
 							<div class="item_prod"> <!-- item_prod ranker d_detail -->
 								<div class="item_state"> <!-- item_state AD soldout -->
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -537,7 +537,7 @@
 								</div>
 							</div>
 						</div>
-						<div class="swiper-slide">
+						<div class="swiper-slide swiper-slide-next" style="width: 176px; margin-right: 8px;">
 							<div class="item_prod"> <!-- item_prod ranker d_detail -->
 								<div class="item_state"> <!-- item_state AD soldout -->
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -565,7 +565,7 @@
 								</div>
 							</div>
 						</div>
-						<div class="swiper-slide">
+						<div class="swiper-slide" style="width: 176px; margin-right: 8px;">
 							<div class="item_prod"> <!-- item_prod ranker d_detail -->
 								<div class="item_state"> <!-- item_state AD soldout -->
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -593,7 +593,7 @@
 								</div>
 							</div>
 						</div>
-						<div class="swiper-slide">
+						<div class="swiper-slide" style="width: 176px; margin-right: 8px;">
 							<div class="item_prod"> <!-- item_prod ranker d_detail -->
 								<div class="item_state"> <!-- item_state AD soldout -->
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -621,7 +621,7 @@
 								</div>
 							</div>
 						</div>
-						<div class="swiper-slide">
+						<div class="swiper-slide" style="width: 176px; margin-right: 8px;">
 							<div class="item_prod"> <!-- item_prod ranker d_detail -->
 								<div class="item_state"> <!-- item_state AD soldout -->
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -650,7 +650,7 @@
 							</div>
 						</div>
 					</div>
-				</div>
+					<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
 			</div>
 			<div class="od_calc_wrap" id="bottomOrderArea">
 				<button type="button" class="btn btn_dark"><span>합계 <em class="realOrderAmtText" th:text="${#numbers.formatInteger(order.sumRealPayAmt + order.totDelvFee, 1, 'COMMA')}">0</em>원</span></button>
@@ -713,6 +713,12 @@
 			};
 
 			$(document).ready(function() {
+				var od_recommend_slide = new Swiper('.od_recommend .swiper-container', {
+					slidesPerView: 2,
+					spaceBetween: 8,
+					centerMode: true,
+				});
+
 				setLoginInfo();
 
 				if([[${!order.shotCanYn.equals('Y')}]]) {

+ 54 - 38
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -167,7 +167,7 @@
 									<div class="form_field">
 										<div class="select_custom option_open">
 											<div class="combo">
-												<div class="select">옵션을 선택해주세요</div>
+												<div class="select">옵션을 선택해주세요.</div>
 											</div>
 										</div>
 									</div>
@@ -208,10 +208,10 @@
 										</div>
 									</div>
 									<div class="form_wrap">
-										<div class="form_field mb20" id="form_field_item_Up">
+										<div class="form_field mb10" id="form_field_item_Up">
 											<div class="select_custom deal_opt_item"> <!-- active -->
 												<div class="combo">
-													<div class="select">상품선택</div>
+													<div class="select">선택</div>
 													<ul class="list">
 														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
 														<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
@@ -224,7 +224,6 @@
 																		<div class="itemPic">
 																			<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=44'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																		</div>
-																		<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 																		<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
 																		<p class="itemPrice">
 																			<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">89,000</span>
@@ -243,7 +242,7 @@
 										<div class="form_field" id="form_field1_Up">
 											<div class="select_custom item_opt1" disabled>
 												<div class="combo">
-													<div class="select">옵션1선택</div>
+													<div class="select">선택</div>
 													<ul class="list" id="goodsDealOptUp1">
 														<!--  옵션 1 -->
 													</ul>
@@ -253,7 +252,7 @@
 										<div class="form_field"  id="form_field2_Up">
 											<div class="select_custom item_opt2" disabled>
 												<div class="combo">
-													<div class="select">옵션2선택</div>
+													<div class="select">선택</div>
 													<ul class="list" id="goodsDealOptUp2">
 														<!--  옵션 2 -->
 													</ul>
@@ -303,7 +302,7 @@
 	<div class="product_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
 		<div class="share_like">
 			<button type="button" class="share">공유하기</button>
-			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  
+			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  
 					onclick="cfnPutWishList(this);" 
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
@@ -848,7 +847,7 @@
 	}
 	
 	//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업	
-	var fnGoodsDealOptionOpen = function(goodsCd){
+	var fnGoodsDealSaleOpen = function(goodsCd){
 		$("#pdDescrpPop .close-modal ").click();
 		$('.container').addClass('btPop_open');
 		$(".Purchase_pop .pop_option_select").show();
@@ -862,7 +861,24 @@
 		});
 		
 		$('.Purchase_pop .pop_option_select').find('#form_field_item_Up .list li').eq(selIdx).trigger("click");
-        return false;
+		return false;
+	}	
+	
+	//팝업 - 딜상세정보 옵션선택 > 옵션셀렉트팝업
+	var fnGoodsDealOptionOpen = function(goodsCd){
+		$('.container').addClass('btPop_open');
+		$(".Purchase_pop .pop_option_select").show();
+		popOpenScroll();
+		let selIdx = 0;
+		$('.Purchase_pop .pop_option_select').find('#form_field_item_Up .list li').each(function() { 
+			if (goodsCd == $(this).find('.item_prod').attr('goodscd')){
+				return false;
+			}
+			selIdx ++;
+		});
+		
+		$('.Purchase_pop .pop_option_select').find('#form_field_item_Up .list li').eq(selIdx).trigger("click");
+		return false;
 	}	
 	
 	// pop open
@@ -1140,15 +1156,15 @@
 			 $(".Purchase_pop .pop_option_select").hide();
 			 return false;
 		 })
-			//팝업 - 딜상세정보 옵션선택 > 옵션셀렉트팝업
-		$(document).on('click','.pd_dealitem .item_prod .btn_default',function(e){
-				$('.container').addClass('btPop_open');
-				$(".Purchase_pop .pop_option_select").show();
-				popOpenScroll();
-			 return false;
-		 });
+//			//팝업 - 딜상세정보 옵션선택 > 옵션셀렉트팝업 ==> fnGoodsDealOptionOpen()대체
+//		$(document).on('click','.pd_dealitem .item_prod .btn_default',function(e){
+//				$('.container').addClass('btPop_open');
+//				$(".Purchase_pop .pop_option_select").show();
+//				popOpenScroll();
+//			 return false;
+//		 });
 
-		//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업  ==> fnGoodsDealOptionOpen()대체
+		//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업  ==> fnGoodsDealSaleOpen()대체
 //		$(document).on('click','#pdDescrpPop .modal-footer button',function(e){
 //			$("#pdDescrpPop .close-modal ").click();
 //			$('.container').addClass('btPop_open');
@@ -1164,27 +1180,27 @@
 		// =============딜리스트팝업========================================================
 			//팝업 - 딜리뷰상품 리스트팝업
 			$(document).on('click','.deal_listReview_open',function(e){
-                $("#listReviewPop").show();
-                return false;
-            }).on('click','#listReviewPop .close, #listReviewPop .deal_list_select ul > li',function(e){
+				$("#listReviewPop").show();
+				return false;
+			}).on('click','#listReviewPop .close, #listReviewPop .deal_list_select ul > li',function(e){
 				$("#listReviewPop").hide(); 
 				return false;
 			});
 
 			//팝업 - 딜문의상품 리스트팝업
 			$(document).on('click','.deal_listQna_open',function(e){
-                $("#listQnaPop").show();
-                return false;
-            }).on('click','#listQnaPop .close, #listQnaPop .deal_list_select ul > li',function(e){
+				$("#listQnaPop").show();
+				return false;
+			}).on('click','#listQnaPop .close, #listQnaPop .deal_list_select ul > li',function(e){
 				$("#listQnaPop").hide(); 
 				return false;
 			});
 
 			//팝업 - 딜배송상품 리스트팝업
 			$(document).on('click','.deal_listDelivery_open',function(e){
-                $("#listDeliveryPop").show();
-                return false;
-            }).on('click','#listDeliveryPop .close, #listDeliveryPop .deal_list_select ul > li',function(e){
+				$("#listDeliveryPop").show();
+				return false;
+			}).on('click','#listDeliveryPop .close, #listDeliveryPop .deal_list_select ul > li',function(e){
 				$("#listDeliveryPop").hide(); 
 				return false;
 			});
@@ -1192,9 +1208,9 @@
 			//팝업 - 딜상세정보 리스트팝업
 			$(document).on('click','#pdDescrpPop .deal_listDescrp_open',function(e){
 				$(this).toggleClass("active");
-                $("#listDescrpPop").toggle();
-                return false;
-            }).on('click','#listDescrpPop .deal_list_select ul > li',function(e){
+				$("#listDescrpPop").toggle();
+				return false;
+			}).on('click','#listDescrpPop .deal_list_select ul > li',function(e){
 				$("#pdDescrpPop .deal_listDescrp_open").removeClass("active");
 				$("#listDescrpPop").hide(); 
 				return false;
@@ -1235,14 +1251,14 @@
 		});
 			
 
-	      //관심상품 등록
-        $(document).on('click','.pd .itemLike',function(e){
-            $(this).toggleClass('active');
-            return false;
-        });   
-      
-	      
-      //pd전용 - 썸네일/헤더 블라인드 생성 : 210520_ 추가
+		  //관심상품 등록
+		$(document).on('click','.pd .itemLike',function(e){
+			$(this).toggleClass('active');
+			return false;
+		});   
+	  
+		  
+	  //pd전용 - 썸네일/헤더 블라인드 생성 : 210520_ 추가
 		$('.pd .thumb_box .thumb_list .swiper-slide').prepend('<span></span>');
 		// pd전용 - 스크롤 스크립트
 		//탭 - 딜상품 > 상세정보 탭 고정
@@ -1285,7 +1301,7 @@
 				lastScrollTop = st;
 			}
 		});
-	      
+		  
 			// 광고 스크립트용
 			var goodsNavigation = [[${goodsNavigation}]];
 			var cate1Nm = "";

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -1093,7 +1093,7 @@
 		<div class="share_like">
 			<button type="button" class="share">공유하기</button>
 			<!-- <th:block th:include="~{web/goods/GoodsIncludeFormMob :: goodsSnsForm}"></th:block> -->
-			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  
+			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  
 					onclick="cfnPutWishList(this);" 
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
@@ -2322,7 +2322,7 @@
 		$(document).on('click','.pd_qnawrite_pop .close-modal',function(e){
 			if(qnaCount === 2){
 				$('#layer_goods_qna').modal('show');
-				setTimeout(fnGoodsQnaList, 100);
+				setTimeout(fnGoodsQnaList, 100);    //일반상품상세 용
 				qnaCount = 1;
 			}
             return false;

+ 6 - 1
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -672,11 +672,16 @@
 			tag += '			<dl>\n';
 			tag += '				<div>\n';
 			tag += '					<dt>구매옵션</dt>\n';
+			tag += '					<dd>\n';
 			if (item.goodsOptionList != null && item.goodsOptionList.length > 0){
 				$.each(item.goodsOptionList, function(gIdx, goodsOption){
-			tag += '					<dd>'+ goodsOption.optCd1 +' / '+ goodsOption.optCd2 +'</dd>\n';		
+			tag += '					'+ goodsOption.optCd1Nm +' / '+ goodsOption.optCd2;
+				if (item.goodsOptionList.length != (gIdx+1)){
+			tag += '					,';
+				}
 				});
 			}
+			tag += '					</dd>\n';
 			tag += '				</div>\n';
 			tag += '				<div>\n';
 			tag += '					<dt>키/몸무게</dt>\n';

+ 7 - 7
src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html

@@ -61,7 +61,7 @@
 								<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">10%</span>
 							</p>
 						</a>
-					<button type="button" class="btn btn_default">옵션 선택</button>
+						<button type="button" class="btn btn_default" th:onclick="fnGoodsDealOptionOpen([[${goodsInfo.compsGoodsCd}]])">옵션 선택</button>
 					</div>
 				</div>
 			</div>
@@ -151,7 +151,6 @@
 			<div class="deal_list_select">
 				<ul class="list">
 					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 						th:onclick="fnSelGoodsDealReview([[${goodsInfo.compsGoodsCd}]])">
 						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
 							<div class="item_state active">
@@ -186,7 +185,6 @@
 			<div class="deal_list_select">
 				<ul class="list">
 					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 						th:onclick="fnSelGoodsDealQna([[${goodsInfo.compsGoodsCd}]])">
 						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
 							<div class="item_state active">
@@ -221,7 +219,6 @@
 			<div class="deal_list_select">
 				<ul class="list">
 					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 						th:onclick="fnSelGoodsDealDelivery([[${goodsInfo.compsGoodsCd}]])">
 						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
 							<div class="item_state active">
@@ -282,7 +279,6 @@
 							<div class="deal_list_select">
 								<ul class="list">
 									<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-										th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 										th:onclick="fnOpenGoodsDealDetail([[${goodsInfo.goodsCd}]], [[${goodsInfo.compsGoodsCd}]])"
 										 class="selected">
 										<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
@@ -439,15 +435,19 @@
 		params.adminYn = "Y";
 		gagajf.ajaxSubmit("/goods/deal/detail/info/frame", "html", "goodsDealDetail", params);
 		$("#pdDescrpPop").modal("show");
+		
+		//개별 상품 상세에서 상품 선택 Select가 펼쳐진 상태에서 팝업을 닫은 다음 재진입한 경우 상품 선택 Select가 닫힌 상태로 노출
+		$("#pdDescrpPop .deal_listDescrp_open").removeClass("active");
+		$("#listDescrpPop").hide(); 
 	}
 	
 	//팝업 - 딜상세팝업 구매하기버튼
 	$(document).on('click','#btn_deal_purchase',function(e){
 		let selGoodsCd = $('#pdDescrpPop').find('input[name=selectGoods]').val();
-		fnGoodsDealOptionOpen(selGoodsCd);
+		fnGoodsDealSaleOpen(selGoodsCd);
 	});
 	
-	
+
 	$(document).ready( function() {
 		
 	});

+ 15 - 15
src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html

@@ -33,10 +33,10 @@
 				<div class="form_field">
 					<div class="input_box">
 						<div class="input_wrap">
-							<textarea name="questContent" cols="30" rows="10"  maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+							<textarea id="exchange2" name="questContent" maxlength="500" style="resize: none;" placeholder="내용을 입력해 주세요 (필수)"></textarea>
 							<p class="txt_cnt">
-								<span id="itemqna_cnt" class="itemqna_cnt" ><em class="c_primary">0</em>/500자</span>
-							</p>   
+								<span id="exchange2-counter" class="c_primary">12</span> / 500
+							</p>
 						</div>           
 						<div class="secret_box">
 							<input id="wr_secret" type="checkbox" name="secretYn" value="Y"><label for="wr_secret"><span>비밀글설정</span></label>
@@ -74,18 +74,18 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 
-	// 상품문의 작성 > 글자수 체크
-	$('.pd_qnawrite_pop .doc_itemqna').keyup(function (e){
-		let contentQna = $(this).val();
-		$('.itemqna_cnt').html("(<em class='c_primary'>"+contentQna.length+"</em>/500자)");
-		
-		if (contentQna.length > 500){
-			$(this).val(contentQna.substring(0, 500));
-			$('.itemqna_cnt').html("(<em class='c_primary'>500</em>/500자)");
-			//mcxDialog.alert("최대 500자까지 입력 가능합니다.");
-			return false;
-		}
+	$('#exchange2').keyup(function (e){
+		var content = $(this).val();
+		$('#exchange2-counter').html(content.length);
 	});
+	$('#exchange2').keyup();
+
+	$('#exchange2').focus(function(){
+		$(this).parent('.input_wrap').css('outline', '1px auto rgb(229, 151, 0)');
+	})
+	$('#exchange2').blur(function(){
+		$(this).parent('.input_wrap').css('outline', 'none');
+	})
 	
 	// 저장
 	var fnGoodsQnaSave = function() {
@@ -115,7 +115,7 @@
 	var btnGoodsQnaSaveCallBack = function(){
 		$('#layer_goods_qna_reg').find('.close-modal').trigger("click");
 		//$('#layer_goods_qna').modal('show');
-		//setTimeout(fnGoodsQnaList, 100);
+		setTimeout(fnGoodsQnaList, 100);  //딜상품상세 용
 	}
 	
 	

+ 4 - 1
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html

@@ -81,9 +81,12 @@
 													<dl>
 														<div th:if="${review.goodsOptionList != null and !review.goodsOptionList.empty}" >
 															<dt >구매옵션</dt>
+															<dd> 
 															<th:block th:each="reviewGoods, goodsStatus : ${review.goodsOptionList}">
-															<dd th:text="${reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2}">베이지 / 100</dd>
+															<th:block th:text="${reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2}">베이지 / 100</th:block>
+															<th:block th:if="${not goodsStatus.last}" th:text="${','}"></th:block>
 															</th:block>
+															</dd>
 														</div>
 														<div>
 															<dt>키/몸무게</dt>

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html

@@ -211,6 +211,7 @@
 let oneData = [[${oneData}]];
 var isLogin = [[${isLogin}]];
 let kcpReceiptUrl = [[${kcpReceiptUrl}]];
+let refundYn = [[${refundYn}]];
 
 $(document).ready(function() {
 	// 타이틀명

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

@@ -774,7 +774,7 @@
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+			cfnGoToPage(_PAGE_NOMEMBER_ORDER_DETAIL);
 		});
 	}
 </script>

+ 5 - 3
src/main/webapp/WEB-INF/views/mob/order/OrderCouponApplyPopMob.html

@@ -14,14 +14,16 @@
 					<th:block th:if="${goodsApplyCpnList.size() > 0}">
 						<h6>상품쿠폰</h6>
 						<div class="area_item_coupon">
-							<th:block th:each="goods, i : ${goodsApplyCpnList}">
+							<th:block th:each="goods, i : ${goodsApplyCpnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 								<th:block th:if="${goods.goodsCpnList.size() > 0}">
 									<div th:id="|item${i.index}|" class="apply_item goodsCpn goodsCartCpn" th:value="${i.index}+1">
 										<div class="item_gd">
 											<figure>
-												<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
+												<span class="thumb">
+													<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
+												</span>
 												<figcaption>
-													<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
+													<div class="brand" th:text="${goods.brandGroupNm}"></div>
 													<div class="name" th:text="${goods.goodsNm}"></div>
 													<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
 												</figcaption>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html

@@ -28,7 +28,7 @@
 							<div class="form_field">
 								<input id="chk-maxdisc" type="checkbox" checked>
 								<label for="chk-maxdisc">
-									<span>최대 할인혜택 바로 적용하세요!</span>
+									<span>최대 할인혜택 바로 적용</span>
 									<br>
 									<span class="maxdisc_amount">(<em class="cpnDcAmt">0</em>원 할인)</span>
 								</label>

+ 20 - 19
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -225,12 +225,12 @@
 												<dd><div><span class="orgGoodsSumAmt" th:text="${#numbers.formatInteger(orgGoodsSumAmt, 1, 'COMMA')}"></span>원</div></dd>
 											</div>
 											<div>
-												<dt>배송비</dt>
-												<dd><div><span class="delvSumAmt" th:text="${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}"></span>원</div></dd>
+												<dt>할인금액</dt>
+												<dd><div><span class="dcSumAmt"></span>원</div></dd>
 											</div>
 											<div>
-												<dt>할인금액</dt>
-												<dd><div><span class="dcSumAmt disc_amount"></span>원</div></dd>
+												<dt>배송비</dt>
+												<dd><div><span class="delvSumAmt" th:text="${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}"></span>원</div></dd>
 											</div>
 										</dl>
 									</td>
@@ -323,7 +323,6 @@
 								</div>
 							</div>
 						</div>
-						
 					</div>
 					
 					<div class="agree_payment">
@@ -331,14 +330,16 @@
 					</div>
 				</div>
 			</div>
-
+			
 			<!-- //결제 정보 -->
 			<div class="inner wide">
-				<div class="btn_group btn_group_flex">
-					<div>
-						<button type="button" class="btn btn_primary" id="btn_payment">
+				<div class="area_paybtn">
+					<div class="btn_group btn_group_flex">
+						<div>
+							<button type="button" id="btn_payment" class="btn btn_primary">
 							동의 후 <span class="total_price">0</span>원 결제하기
-						</button>
+							</button>
+						</div> <!-- 210406_ID추가 -->
 					</div>
 				</div>
 			</div>
@@ -911,7 +912,7 @@ var paymentInfoSet = function() {
 				$("#paymentInfo").css("display", "block");
 				$("#paymentInfo").html(result);
 				
-				var payTeyp = "";
+				var payType = "";
 
 				// 결제타입명칭 설정
 				$("#orderForm .area_paymethod .paymethod_box ul li").on("click", function(){
@@ -932,9 +933,9 @@ var paymentInfoSet = function() {
 					}
 					
 					if (delvCnt > 0) {
-						$("#orderForm .area_paymentinfo").show();
+						$("#orderForm .area_paymentinfo .paymentinfo").show();
 					} else {
-						$("#orderForm .area_paymentinfo").hide();
+						$("#orderForm .area_paymentinfo .paymentinfo").hide();
 					}
 				});
 				
@@ -945,7 +946,7 @@ var paymentInfoSet = function() {
 					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
 						if ($(this).is(":checked")) {
 							$("#orderForm .area_paymethod .agree_insurance").show();
-							$("#orderForm .area_paymentinfo").show();
+							$("#orderForm .area_paymentinfo .paymentinfo").show();
 							$("#orderForm .area_paymentinfo .agree1").show();
 						} else {
 							displayTemp = false;
@@ -958,9 +959,9 @@ var paymentInfoSet = function() {
 						$("#orderForm .area_paymentinfo .agree1").hide();
 						
 						if (delvCnt > 0) {
-							$("#orderForm .area_paymentinfo").show();
+							$("#orderForm .area_paymentinfo .paymentinfo").show();
 						} else {
-							$("#orderForm .area_paymentinfo").hide();
+							$("#orderForm .area_paymentinfo .paymentinfo").hide();
 						}
 					}
 				});
@@ -969,9 +970,9 @@ var paymentInfoSet = function() {
 				$("#orderForm .area_paymethod .agree_insurance").hide();
 				$("#orderForm .area_paymentinfo .agree1").hide();
 				if (delvCnt > 0) {
-					$("#orderForm .area_paymentinfo").show();
+					$("#orderForm .area_paymentinfo. paymentinfo").show();
 				} else {
-					$("#orderForm .area_paymentinfo").hide();
+					$("#orderForm .area_paymentinfo .paymentinfo").hide();
 				}
 				
 				// 결재하기
@@ -1969,7 +1970,7 @@ var custCpnApply = function(obj, idx, cpnType) {
 				$('#orderForm .'+payType).attr("disabled", false);
 			});
 		} else {
-			$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
+			//$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
 		}
 		
 		// 선택안함

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

@@ -64,7 +64,7 @@
 												</div>
 												<div class="info_box">
 													<div class="od_name">
-														<div class="brand"><span th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></span></div>
+														<div class="brand"><span th:text="${goods.brandGroupNm}"></span></div>
 														<div class="name" th:text="${goods.goodsNm}"></div>
 													</div>
 													<div class="od_opt" >

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

@@ -109,7 +109,9 @@
 
 
 <script th:inline="javascript">
-var dispYn = [[${order.dispYn}]]; // 노출여부
+var dispYn 		= [[${order.dispYn}]]; 	// 노출여부
+var payMeans 	= [[${payMeans}]]; 		// 결제타입
+var pgGb 		= [[${pgGb}]]; 			// PG구분
 
 //화면노출
 var paymentInfoDispYn = function(temp) {
@@ -124,8 +126,46 @@ var paymentInfoDispYn = function(temp) {
 
 //컨텐츠 호출
 $(document).ready( function() {
+	
 	// 화면펼침
-	paymentInfoDispYn(dispYn);
+	if (pgGb == null || pgGb == "") {
+		paymentInfoDispYn("Y");
+	} else {
+		paymentInfoDispYn(dispYn);
+	}
+
+	// 2021.05.26 자주쓰는결제타입설정
+	if (pgGb == "KCP") {
+		if (payMeans == "G014_30") {
+			$("#payCreditCard").attr("checked", true);
+			$("#orderForm .payTypeNm").text("신용카드");
+			$("#orderForm .area_paymethod .agree_insurance").hide();
+		} else if (payMeans == "G014_60") {
+			$("#payCellphone").attr("checked", true);
+			$("#orderForm .payTypeNm").text("휴대폰 결제");
+			$("#orderForm .area_paymethod .agree_insurance").hide();
+		} else if (payMeans == "G014_10") {
+			$("#payRealBank").attr("checked", true);
+			$("#orderForm .payTypeNm").text("실시간계좌이체");
+			$("#orderForm .area_paymethod .agree_insurance").show();
+		} else if (payMeans == "G014_20") {
+			$("#payVirtualBank").attr("checked", true);
+			$("#orderForm .payTypeNm").text("무통장입금");
+			$("#orderForm .area_paymethod .agree_insurance").show();
+		}
+	} else if (pgGb == "KAKAO") {
+		$("#payKakao").attr("checked", true);
+		$("#orderForm .payTypeNm").text("카카오페이 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	} else if (pgGb == "NAVER") {
+		$("#payNaver").attr("checked", true);
+		$("#orderForm .payTypeNm").text("네이버페이 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	} else if (pgGb == "PAYCO") {
+		$("#payPayco").attr("checked", true);
+		$("#orderForm .payTypeNm").text("페이코 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	}
 });
 
 

+ 2 - 5
src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html

@@ -140,7 +140,6 @@
 									</div>
 									<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
 										<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-											th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 											th:onclick="fnSelGoodsDealReview([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
@@ -190,7 +189,6 @@
 									</div>
 									<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
 										<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-											th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 											th:onclick="fnSelGoodsDealQna([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
@@ -240,7 +238,6 @@
 									</div>
 									<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
 										<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
-											th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
 											th:onclick="fnSelGoodsDealDelivery([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
@@ -393,8 +390,8 @@
 									</div>
 							</div>
 							<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
-								<li class="selected" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
-									<div class="item_prod"  th:classappend="${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'soldout':'' }">
+								<li class="selected" th:each="goodsInfo, status : ${goodsDealComposeList}" >
+									<div class="item_prod" >
 										<div class="item_state">
 											<a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]], [[${goodsInfo.currPrice}]], [[${goodsInfo.selfGoodsYn}]], [[${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'Y':'N' }]])">
 												<div class="itemPic">

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

@@ -24,7 +24,7 @@
 												</span>
 												
 												<figcaption>
-													<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
+													<div class="brand" th:text="${goods.brandGroupNm}"></div>
 													<div class="name" th:text="${goods.goodsNm}"></div>
 													<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
 												</figcaption>

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

@@ -923,7 +923,7 @@ var paymentInfoSet = function() {
 				$("#paymentInfo").css("display", "block");
 				$("#paymentInfo").html(result);
 				
-				var payTeyp = "";
+				var payType = "";
 				
 				// 결제타입명칭 설정
 				$("#orderForm .area_paymethod .paymethod_box ul li").on("click", function(){
@@ -940,7 +940,7 @@ var paymentInfoSet = function() {
 					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
 						$("#orderForm .area_paymethod .agree_insurance").show();
 					} else {
-						$("#orderForm .area_paymethod .agree_insurance").hide();	
+						$("#orderForm .area_paymethod .agree_insurance").hide();
 					}
 					
 					if (delvCnt > 0) {
@@ -978,7 +978,6 @@ var paymentInfoSet = function() {
 				});
 
 				// 2021.05.16 초기값설정
-				$("#orderForm .area_paymethod .agree_insurance").hide();
 				$("#orderForm .area_paymentinfo .agree1").hide();
 				if (delvCnt > 0) {
 					$("#orderForm .area_paymentinfo").show();
@@ -1879,7 +1878,7 @@ var custCpnApply = function(obj) {
 				$('#orderForm .'+payType).attr("disabled", false);
 			});
 		} else {
-			$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
+			//$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
 		}
 		
 		// 2021.04.25 실시간계좌이체, 무통장입금시 보증보험 신청 약관 노출 감추는기능

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

@@ -50,7 +50,7 @@
 									<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
 								</span>
 								<figcaption>
-									<div class="brand" th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></div>
+									<div class="brand" th:text="${goods.brandGroupNm}"></div>
 									<div class="name" th:text="${goods.goodsNm}"></div>									
 									<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
 										<span th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></span> 

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

@@ -107,7 +107,9 @@
 
 
 <script th:inline="javascript">
-var dispYn = [[${order.dispYn}]]; // 노출여부
+var dispYn 		= [[${order.dispYn}]]; 	// 노출여부
+var payMeans 	= [[${payMeans}]]; 		// 결제타입
+var pgGb 		= [[${pgGb}]]; 			// PG구분
 
 //화면노출
 var paymentInfoDispYn = function(temp) {
@@ -123,7 +125,44 @@ var paymentInfoDispYn = function(temp) {
 //컨텐츠 호출
 $(document).ready( function() {
 	// 화면펼침
-	paymentInfoDispYn(dispYn);
+	if (pgGb == null || pgGb == '') {
+		paymentInfoDispYn("Y");
+	} else {
+		paymentInfoDispYn(dispYn);
+	}
+	
+	// 2021.05.26 자주쓰는결제타입설정
+	if (pgGb == "KCP") {
+		if (payMeans == "G014_30") {
+			$("#payCreditCard").attr("checked", true);
+			$("#orderForm .payTypeNm").text("신용카드");
+			$("#orderForm .area_paymethod .agree_insurance").hide();
+		} else if (payMeans == "G014_60") {
+			$("#payCellphone").attr("checked", true);
+			$("#orderForm .payTypeNm").text("휴대폰 결제");
+			$("#orderForm .area_paymethod .agree_insurance").hide();
+		} else if (payMeans == "G014_10") {
+			$("#payRealBank").attr("checked", true);
+			$("#orderForm .payTypeNm").text("실시간계좌이체");
+			$("#orderForm .area_paymethod .agree_insurance").show();
+		} else if (payMeans == "G014_20") {
+			$("#payVirtualBank").attr("checked", true);
+			$("#orderForm .payTypeNm").text("무통장입금");
+			$("#orderForm .area_paymethod .agree_insurance").show();
+		}
+	} else if (pgGb == "KAKAO") {
+		$("#payKakao").attr("checked", true);
+		$("#orderForm .payTypeNm").text("카카오페이 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	} else if (pgGb == "NAVER") {
+		$("#payNaver").attr("checked", true);
+		$("#orderForm .payTypeNm").text("네이버페이 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	} else if (pgGb == "PAYCO") {
+		$("#payPayco").attr("checked", true);
+		$("#orderForm .payTypeNm").text("페이코 결제");
+		$("#orderForm .area_paymethod .agree_insurance").hide();
+	}
 });
 
 

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

@@ -242,7 +242,7 @@ var fnDeleteOrder = function(noMember) {
 
 			gagajf.ajaxJsonSubmit(url, jsonData, function() {
 				if (noMember == 'noMember') {
-					cfnGoToPage(_PAGE_NOMEMBER_MAIN);
+					cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
 				} else {
 					cfnGoToPage(_PAGE_MYPAGE);
 				}

+ 27 - 11
src/main/webapp/ux/style24_link.js

@@ -135,9 +135,11 @@ const _PAGE_LOOKBOOK_DETAIL = _frontUrl + "/display/lookbook/detail/form";		// 
  * @since  : 2020/02/21
  */
 var cfnGoToPage = function(page, ithrCd) {
-	var params = page;
-	if (ithrCd) params += "&ithrCd=" + ithrCd;
-	document.location.href = params;
+	if (!gagajf.isNull(page)) {
+		var params = page;
+		if (ithrCd) params += "&ithrCd=" + ithrCd;
+		document.location.href = params;
+	}
 }
 
 /**
@@ -281,18 +283,32 @@ function cfnAddCart(cartList) {
 					// 룩북 및 이벤트 페이지에서 여러 타입의 상품이 들어 올 수 있음. 반복문으로 들어오므로 cartList[0].multiGoodsGb == O면 confirm 창 안띄움.
 					// 일반적인 장바구니 담기를 위해 공백이나 O가 아닌 값일때 confirm 처리
 					if(!(cartList != null && cartList[0].multiGoodsGb != null && cartList[0].multiGoodsGb == "O")) {
-						mcxDialog.confirm("<div class=" + "dialog-title" + ">" + "상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
-							cancelBtnText: "계속 쇼핑하기",
-							sureBtnText  : "쇼핑백 가기",
-							sureBtnClick : function () {
-								location.href = '/cart/list/form'; 	//내 쇼핑백 이동url
-							}
-						});
-						
 						// PC버전에서만 동작해야함(퀵메뉴)
 						if (navigator.userAgent.indexOf('Mobile') == -1) {
+							mcxDialog.confirm("<div class=" + "dialog-title" + ">" + "상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
+								cancelBtnText: "계속 쇼핑하기",
+								sureBtnText  : "쇼핑백 가기",
+								sureBtnClick : function () {
+									location.href = '/cart/list/form'; 	//내 쇼핑백 이동url
+								}
+							});
+
 							fnGetCartGoodsList();
 						} else {
+							mcxDialog.confirm("<span class='trans'></span><div class="+"dialog-title"+">"+"쇼핑백에 상품을 담았습니다.</div>", {
+								sureBtnText: "쇼핑백 가기",
+								sureBtnClick: function(){
+									location.href='/cart/list/form'; //내 쇼핑백 이동url
+								}
+							});
+							if($('.dialog-content').find('.trans')){
+								$('.dialog-content').closest(".dialog-mobile").addClass("trans");
+								$('.dialog-mobile').children(".dialog-cancel-button").css("display", "none");
+								$(document).find(".dialog-mobile-bg").css("display", "none");
+							};
+
+							$("body>.trans").delay(3000).fadeOut();
+
 							if($("header #htopSub .button_wrap .store>span")) {
 								// 장바구니 수량 조회
 								$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {