Explorar o código

Merge branch 'develop' into bin2107

bin2107 %!s(int64=5) %!d(string=hai) anos
pai
achega
99e3a174bc
Modificáronse 50 ficheiros con 1851 adicións e 966 borrados
  1. 28 19
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 487 249
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  3. 0 1
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  4. 16 0
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  5. 16 0
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  6. 24 2
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  7. 5 2
      src/main/java/com/style24/persistence/domain/Goods.java
  8. 1 0
      src/main/java/com/style24/persistence/domain/Social.java
  9. 6 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  10. 82 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  11. 4 12
      src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml
  12. 1 0
      src/main/resources/config/application-tsit.yml
  13. 9 0
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  14. 39 0
      src/main/webapp/WEB-INF/views/mob/error/PaymentFailMob.html
  15. 53 32
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  16. 49 5
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  17. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  18. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  19. 8 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  20. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  21. 91 86
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html
  22. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  23. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  24. 61 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  25. 10 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  26. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  27. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  28. 4 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  29. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  30. 7 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  31. 151 151
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  32. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCancelFormMob.html
  33. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  34. 60 2
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html
  35. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  36. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  37. 3 10
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  38. 45 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  39. 42 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  40. 43 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html
  41. 5 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  42. 35 0
      src/main/webapp/WEB-INF/views/mob/popup/TrackWithdrawPopupFormMob.html
  43. 43 2
      src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html
  44. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  45. 2 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  46. 279 282
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  47. 5 5
      src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html
  48. 68 31
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  49. 1 1
      src/main/webapp/biz/mypage.js
  50. 51 48
      src/main/webapp/ux/style24_link.js

+ 28 - 19
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -3,25 +3,7 @@ package com.style24.front.biz.dao;
 import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.CardPromotion;
-import com.style24.persistence.domain.Cate4Srch;
-import com.style24.persistence.domain.Delivery;
-import com.style24.persistence.domain.Freegift;
-import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.GoodsCompose;
-import com.style24.persistence.domain.GoodsDesc;
-import com.style24.persistence.domain.GoodsImg;
-import com.style24.persistence.domain.GoodsNotiInfo;
-import com.style24.persistence.domain.GoodsSafeNo;
-import com.style24.persistence.domain.GoodsSearch;
-import com.style24.persistence.domain.GoodsStock;
-import com.style24.persistence.domain.GoodsVideo;
-import com.style24.persistence.domain.GoodsViewHst;
-import com.style24.persistence.domain.Measurement;
-import com.style24.persistence.domain.Notice;
-import com.style24.persistence.domain.ReinboundInform;
-import com.style24.persistence.domain.SizeInfo;
-import com.style24.persistence.domain.Tmtb;
+import com.style24.persistence.domain.*;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
 /**
@@ -82,6 +64,24 @@ public interface TsfGoodsDao {
 	 */
 	Goods getGoodsInfo(Goods goods);
 
+	/**
+	 * 상품 간단 조회
+	 * @param goods
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 05. 24
+	 */
+	Goods getGoodsSimpleInfo(Goods goods);
+
+	/**
+	 * 세트상품 구성 상품 정보 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 05. 24
+	 */
+	Collection<Goods> getOrderGoodsOptionList(Goods param);
+
 	/**
 	 * 사은품 구성 상품 정보 조회
 	 * @param goods
@@ -428,4 +428,13 @@ public interface TsfGoodsDao {
 	 * @since 2020. 05. 20
 	 */
 	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
+
+	/**
+	 * 구성 상품 목록
+	 * @param goods
+	 * @return
+	 * @author xodud1202
+	 * @since 2020. 05. 25
+	 */
+	Collection<Goods> getCompsGoodsList(Goods goods);
 }

+ 487 - 249
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -6,17 +6,14 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
 
 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;
@@ -38,16 +35,6 @@ 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;
 
@@ -1170,64 +1157,51 @@ public class TsfOrderService {
 				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("<![CDATA[").append(item.getGoodsNm()).append("]]>").append("</name>\n");	//<!-- 상품명 -->
-				sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n");		//<!-- 상품금액 -->
+				sb.append("\t\t<basePrice>").append(item.getCurrPrice()).append("</basePrice>\n");				//<!-- 상품금액 -->
 				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
-				sb.append("\t\t<infoUrl>").append("<![CDATA[https:").append(param.getGoodsUrl()).append(item.getGoodsCd()).append("]]>").append("</infoUrl>\n");	//<!-- 상품상세페이지 URL -->
+				sb.append("\t\t<infoUrl>").append("<![CDATA[https:").append(param.getGoodsUrl()).append(item.getGoodsCd()).append("]]>").append("</infoUrl>\n");		//<!-- 상품상세페이지 URL -->
 				sb.append("\t\t<imageUrl>").append("<![CDATA[https:").append(goodsImgUrl).append("/").append(item.getSysImgNm()).append("]]>").append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
+
 				if(TscConstants.GoodsType.SET.value().equals(item.getGoodsType())) {		// 세트상품
-					// 구성상품 옵션정보 split
-					String[] itemNms  = item.getItemNm().split("!@!");		// 구성상품명
-					String[] optCds   = item.getOptCd().split(",");			// 옵션코드
-					String[] colorNms = item.getColorNm().split(",");			// 컬러명
-					String[] optCd1s  = item.getOptCd1().split(",");			// 칼라코드
-					String[] optCd2s  = item.getOptCd2().split(",");			// 사이즈
-					String[] itemCds  = item.getItemCd().split(",");			// 상품코드
-
-					// 상품명, 컬러, 사이즈 확인 ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
-					// 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
-					for(int i = 0 ; i < itemNms.length ; i++) {
-						if(itemNms[i].length() > 50)	{itemNms[i]  = itemNms[i].substring(0, 47) + "..";}
-						/*if(optCd2s[i].length() > 12)	{optCd2s[i]  = optCd2s[i].substring(0, 9)  + "..";}
-						if(colorNms[i].length() > 12)	{colorNms[i] = colorNms[i].substring(0, 9) + "..";}*/
-
-						// 옵션 정보
-						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(itemCds[i]).append("_").append(optCds[i]).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(itemCds[i]).append("</id>\n");//<!-- 옵션 -->
-						sb.append("\t\t\t\t\t<text>").append(itemNms[i]).append("</text>\n");//<!-- 옵션명 -->
-						sb.append("\t\t\t\t</value>\n");
-						sb.append("\t\t\t</selectedItem>\n");
+					// 세트상품 manageCode 정렬 (optCd ASC)
+					Goods option = new Goods();
+					option.setArrGoodsCd(item.getItemCd().split(","));
+					option.setSizeArr(item.getOptCd().split(","));
+					List<Goods> optionList = (ArrayList<Goods>) goodsDao.getOrderGoodsOptionList(option);
+
+					StringBuilder manageCode = new StringBuilder();
+					int k = 0;
+					for(Goods opt : optionList) {
+						if(k++ > 0) manageCode.append("/");
+						manageCode.append(opt.getOptCd());
+					}
 
-						// 칼라코드
-						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(optCd1s[i]).append("</id>\n");//<!-- 옵션 -->
-						sb.append("\t\t\t\t\t<text>").append(colorNms[i]).append("</text>\n");//<!-- 옵션명 -->
-						sb.append("\t\t\t\t</value>\n");
-						sb.append("\t\t\t</selectedItem>\n");
+					// 옵션 정보
+					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(manageCode).append("</manageCode>\n");		//<!-- 옵션관리코드 -->
+
+					// 구성상품별 옵션 세팅
+					int i = 1;
+					for(Goods opt : optionList) {
+						// 상품명, 컬러, 사이즈 확인(최대 50자) ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
+						// 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
+						if(opt.getGoodsNm().length() > 24)	{opt.setGoodsNm(opt.getGoodsNm().substring(0, 21) + "..");}
+						if(opt.getOptCd2().length() > 12)	{opt.setOptCd2(opt.getOptCd2().substring(0, 9)  + "..");}
+						if(opt.getColorNm().length() > 12)	{opt.setColorNm(opt.getColorNm().substring(0, 9) + "..");}
 
-						// 사이즈
 						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<type>SELECT</type>\n");								//<!-- 옵션유형 -->
+						sb.append("\t\t\t\t<name>구성상품").append(i++).append("</name>\n");		//<!-- 옵션명 -->
 						sb.append("\t\t\t\t<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(optCd2s[i]).append("</id>\n");//<!-- 옵션 -->
-						sb.append("\t\t\t\t\t<text>").append(optCd2s[i]).append("</text>\n");//<!-- 옵션명 -->
+						sb.append("\t\t\t\t\t<id>").append(opt.getOptCd()).append("</id>\n");	//<!-- 옵션 -->
+						sb.append("\t\t\t\t\t<text>").append(opt.getGoodsNm()).append("/").append(opt.getColorNm()).append("/").append(opt.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");
 					}
+
+					sb.append("\t\t</option>\n");
 				} else if("Y".equals(item.getSelfGoodsYn())) {								// 세트상품 제외 자사상품
 					// 옵션 정보
 					sb.append("\t\t<option>\n");
@@ -1336,6 +1310,28 @@ public class TsfOrderService {
 		return result;
 	}
 
+	private String getCombinationXml(String manageCode, int addPrice, int stockQty, int size) {
+		String[] optCd = manageCode.split("/");
+		StringBuilder sb = new StringBuilder();
+		sb.append("\t\t\t<combination>\n");
+		sb.append("\t\t\t\t<manageCode>").append(manageCode).append("</manageCode>\n");
+		sb.append("\t\t\t\t<price>").append(addPrice).append("</price>\n");
+		sb.append("\t\t\t\t<stockQuantity>").append(stockQty).append("</stockQuantity>\n");
+		sb.append("\t\t\t\t<status>true</status>\n");
+
+		// 옵션 옵션조합정보 색상
+		for(int i = 0 ; i < size ; i++) {
+			sb.append("\t\t\t\t<options>\n");
+			sb.append("\t\t\t\t\t<name>구성상품").append(i + 1).append("</name>\n");
+			sb.append("\t\t\t\t\t<id>").append(optCd[i]).append("</id>\n");
+			sb.append("\t\t\t\t</options>\n");
+		}
+
+		sb.append("\t\t\t</combination>\n");
+
+		return sb.toString();
+	}
+
 	/**
 	 * 네이버페이 주문 정보 송부
 	 * @param sb
@@ -1472,213 +1468,455 @@ public class TsfOrderService {
 
 			for (int i=0; i<goodsCdArr.length; i++) {
 				Order item = new Order();
+				item.setGoodsCd(goodsCdArr[i]);		// 상품코드
+				String optionManageCode = coreOrderService.simpleDecode(optionManageCodesArr[i]);
+				item.setOptCd(optionManageCode);	// 상품 옵션
+
+				// 이 포인트에서 세트상품, 일반 상품 분리 조회 필요 (재고 파악 로직이 다름)
+				Goods simpleInfo = new Goods();
+				simpleInfo.setGoodsCd(item.getGoodsCd());
+				simpleInfo = goodsDao.getGoodsSimpleInfo(simpleInfo);
+
+				// 세트상품일 경우
+				if(TscConstants.GoodsType.SET.value().equals(simpleInfo.getGoodsType())) {
+					// 주문 상품 정보 조회
+					Goods goods = new Goods();
+					goods.setGoodsCd(item.getGoodsCd());
+					goods.setOptCd(item.getOptCd());
+					goods.setFrontGb(TsfSession.getFrontGb());
+					goods.setSiteCd(TscConstants.Site.STYLE24.value());
+					goods.setAdminYn("Y");			// 상품 상태에 관계 없이 조회하기 위함
+					goods = goodsDao.getGoodsInfo(goods);
+
+					// 상품 상태 확인
+					String goodsStat = "";
+					if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
+						goodsStat = "ON_SALE";		// 판매중
+					} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
+						goodsStat = "SOLD_OUT";		// 품절
+					} else {
+						goodsStat = "NOT_SALE";		// 구매불가
+					}
 
-				item.setGoodsCd(goodsCdArr[i]);
+					// 반송지 정보
+					Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
+
+					sb.append("\t<product>\n");
+					sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n");
+					sb.append("\t\t<merchantProductId>").append(item.getGoodsCd()).append("</merchantProductId>\n");
+					sb.append("\t\t<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>\n");
+					sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
+					sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
+					sb.append("\t\t<basePrice>").append(goods.getCurrPrice()).append("</basePrice>\n");
+					// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
+					sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
+					sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
+
+					// 12.반품주소
+					if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
+						// 2.1 반품정보
+						sb.append("\t\t<returnInfo>\n");
+						sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
+						sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
+						sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
+						sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
+						sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
+						sb.append("\t\t</returnInfo>\n");
+
+						// 반품배송비, 교환배송비
+						sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
+						sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
+					}
 
-				// 9.상품 옵션
-				String optionManageCode = coreOrderService.simpleDecode(optionManageCodesArr[i]);
-				item.setOptCd(optionManageCode);
-
-				// 주문 상품 옵션 정보 조회
-				GoodsStock opt = new GoodsStock();
-				opt.setGoodsCd(item.getGoodsCd());
-				opt.setOptCd(item.getOptCd());
-				opt = goodsDao.getGoodsStockInfo(opt);
-
-				// 주문 상품 정보 조회
-				Goods goods = new Goods();
-				goods.setGoodsCd(item.getGoodsCd());
-				goods.setOptCd(item.getOptCd());
-				goods.setColorCd(opt.getOptCd1());
-				goods.setFrontGb(TsfSession.getFrontGb());
-				goods.setSiteCd(TscConstants.Site.STYLE24.value());
-				goods.setAdminYn("Y");			// 상품 상태에 관계 없이 조회하기 위함
-				goods = goodsDao.getGoodsInfo(goods);
-
-				// 상품 상태 확인
-				String goodsStat = "";
-				if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
-					goodsStat = "ON_SALE";		// 판매중
-				} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
-					goodsStat = "SOLD_OUT";		// 품절
-				} else {
-					goodsStat = "NOT_SALE";		// 주매불가
-				}
+					// 옵션정보 지원여부 true
+					sb.append("\t\t<optionSupport>true</optionSupport>\n");
 
-				// 반송지 정보
-				Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
+					// 세트상품 정보  getGoodsSetComposeList
+					goods.setSiteCd(TscConstants.Site.STYLE24.value());
+					Collection<Goods> compsInfoList = goodsDao.getCompsGoodsList(goods);
 
-				sb.append("\t<product>\n");
-				sb.append("\t\t<id>").append(goodsCdArr[i]).append("</id>\n");
-				sb.append("\t\t<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>\n");
-				sb.append("\t\t<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>\n");
-				sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
-				sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
-				sb.append("\t\t<basePrice>").append(goods.getCurrPrice() + opt.getAddPrice()).append("</basePrice>\n");
-				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
-				sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
-				sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
-
-				// 12.반품주소
-				if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
-					// 2.1 반품정보
-					sb.append("\t\t<returnInfo>\n");
-					sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
-					sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
-					sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
-					sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
-					sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
-					sb.append("\t\t</returnInfo>\n");
-
-					// 반품배송비, 교환배송비
-					sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
-					sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
-				}
+					// 옵션 정보
+					sb.append("\t\t<option>\n");
+					int combCnt = 0;		// 옵션 조합 총 수량
+					// 옵션 아이템정보 구성상품
+					for (Goods comps : compsInfoList) {
+						sb.append("\t\t\t<optionItem>\n");
+						sb.append("\t\t\t\t<type>SELECT</type>\n");
+						sb.append("\t\t\t\t<name>구성상품").append(comps.getRnum()).append("</name>\n");
+
+						// 구성상품별 옵션 정보
+						String[] optCds = comps.getOptCd().split(",");
+						String[] optCd2s = comps.getOptCd2().split(",");
+						String[] colorNms = comps.getColorNm().split(",");
+						combCnt *= optCds.length;
+
+						for(int j = 0 ; j < optCds.length ; i++) {
+							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) + "..";}
+
+							sb.append("\t\t\t\t<value>\n");
+							sb.append("\t\t\t\t\t<id>").append(optCds[j]).append("</id>\n");
+							sb.append("\t\t\t\t\t<text>").append(comps.getGoodsNm()).append("/").append(colorNms[j]).append("/").append(optCd2s[j]).append("</text>\n");//<!-- 옵션명 -->
+							sb.append("\t\t\t\t</value>\n");
+						}
 
-				// 옵션정보 지원여부 true
-				sb.append("\t\t<optionSupport>true</optionSupport>\n");
-
-				// 상품 옵션 전체 정보 조회
-				Collection<GoodsStock> optList = goodsDao.getGoodsOptionInfoList(opt);
-
-				String[] colorNmList = new String[optList.size()];
-				String[] colorList = new String[optList.size()];
-				String[] sizeList = new String[optList.size()];
-				int count = 0;
-				for(GoodsStock optInfo : optList) {
-					colorNmList[count] = optInfo.getColorNm();
-					colorList[count] = optInfo.getOptCd1();
-					sizeList[count] = optInfo.getOptCd2();
-					count++;
-				}
+						sb.append("\t\t\t</optionItem>\n");
+					}
 
-				colorNmList = new HashSet<String>(Arrays.asList(colorNmList)).toArray(new String[0]);
-				colorList = new HashSet<String>(Arrays.asList(colorList)).toArray(new String[0]);
-				sizeList = new HashSet<String>(Arrays.asList(sizeList)).toArray(new String[0]);
-
-				// 옵션 정보
-				sb.append("\t\t<option>\n");
-
-				if(TscConstants.GoodsType.SET.value().equals(goods.getGoodsType())) {
-					// 세트상품 정보
-					// 세트 구성 상품 조회 후 로직 작성 예정.
-				} else if("Y".equals(goods.getSelfGoodsYn())) {
-					// 자사 일반 상품 정보
-					// 9.1 옵션 아이템정보 색상
-					sb.append("\t\t\t<optionItem>\n");
-					sb.append("\t\t\t\t<type>SELECT</type>\n");
-					sb.append("\t\t\t\t<name>색상</name>\n");
-					int j = 0;
-					for (String color : colorList) {
-						sb.append("\t\t\t\t<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(color).append("</id>\n");
-						sb.append("\t\t\t\t\t<text>").append(colorNmList[j++]).append("</text>\n");
-						sb.append("\t\t\t\t</value>\n");
+					sb.append("\t\t</option>\n");
+
+					// 세트 구성상품 모든 옵션 경우의 수 조회 > 상품코드 오름차순, OPTCD 오름차순으로 정확히 보낼것 > 주문요청된 manageCode가 같아야함.
+					for (Goods comps1 : compsInfoList) {
+						if(comps1.getRnum() == 1) {
+							// 구성상품별 옵션 정보
+							String[] goods1optCds = comps1.getOptCd().split(",");
+							String[] goods1addPrices = comps1.getItemStockQty().split(",");
+							String[] goods1stockQty = comps1.getItemStockQty().split(",");
+
+							for(int g1 = 0 ; g1 < goods1optCds.length ; g1++) {
+								StringBuilder manageCode = new StringBuilder(goods1optCds[g1]);	// 옵션코드 조합
+								int addPrice = Integer.parseInt(goods1addPrices[g1]);		// 추가금액 합계
+								int stockQty = Integer.parseInt(goods1stockQty[g1]);		// 상품 주문 최소 재고(구성상품 최소)
+
+								if(compsInfoList.size() == 2) {		// 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+									for (Goods comps2 : compsInfoList) {
+										if(comps2.getRnum() == 2) {
+											// 구성상품별 옵션 정보
+											String[] goods2optCds = comps2.getOptCd().split(",");
+											String[] goods2addPrices = comps2.getItemStockQty().split(",");
+											String[] goods2stockQty = comps2.getItemStockQty().split(",");
+
+											// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
+											String manageCodeSave2 = goods1optCds[g1];
+											int addPriceSave2 = Integer.parseInt(goods1addPrices[g1]);
+											int stockQtySave2 = Integer.parseInt(goods1stockQty[g1]);
+
+											for(int g2 = 0 ; g2 < goods2optCds.length ; g2++) {
+												manageCode = new StringBuilder(manageCodeSave2);		// String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
+												manageCode.append("/").append(goods2optCds[g2]);
+												addPrice = addPriceSave2 + Integer.parseInt(goods2addPrices[g2]);
+												if(stockQtySave2 < Integer.parseInt(goods2stockQty[g2])) stockQty = Integer.parseInt(goods2stockQty[g2]);
+
+												if(compsInfoList.size() == 3) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+													for (Goods comps3 : compsInfoList) {
+														if (comps3.getRnum() == 3) {
+															// 구성상품별 옵션 정보
+															String[] goods3optCds = comps3.getOptCd().split(",");
+															String[] goods3addPrices = comps3.getItemStockQty().split(",");
+															String[] goods3stockQty = comps3.getItemStockQty().split(",");
+
+															// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
+															String manageCodeSave3 = manageCodeSave2;
+															int addPriceSave3 = addPriceSave2;
+															int stockQtySave3 = stockQtySave2;
+
+															for(int g3 = 0 ; g3 < goods3optCds.length ; g3++) {
+																manageCode = new StringBuilder(manageCodeSave3);		// String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
+																manageCode.append("/").append(goods3optCds[g3]);
+																addPrice = addPriceSave3 + Integer.parseInt(goods3addPrices[g3]);
+																if(stockQtySave3 < Integer.parseInt(goods3stockQty[g3])) stockQty = Integer.parseInt(goods3stockQty[g3]);
+
+																if(compsInfoList.size() == 4) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+																	for (Goods comps4 : compsInfoList) {
+																		if (comps4.getRnum() == 4) {
+																			// 구성상품별 옵션 정보
+																			String[] goods4optCds = comps4.getOptCd().split(",");
+																			String[] goods4addPrices = comps4.getItemStockQty().split(",");
+																			String[] goods4stockQty = comps4.getItemStockQty().split(",");
+
+																			// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
+																			String manageCodeSave4 = manageCodeSave3;
+																			int addPriceSave4 = addPriceSave3;
+																			int stockQtySave4 = stockQtySave3;
+
+																			for(int g4 = 0 ; g4 < goods4optCds.length ; g4++) {
+																				manageCode = new StringBuilder(manageCodeSave4);		// String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
+																				manageCode.append("/").append(goods4optCds[g4]);
+																				addPrice = addPriceSave4 + Integer.parseInt(goods4addPrices[g4]);
+																				if(stockQtySave4 < Integer.parseInt(goods4stockQty[g4])) stockQty = Integer.parseInt(goods4stockQty[g4]);
+
+																				if(compsInfoList.size() == 5) {        // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
+																					for (Goods comps5 : compsInfoList) {
+																						if (comps5.getRnum() == 5) {
+																							// 구성상품별 옵션 정보
+																							String[] goods5optCds = comps5.getOptCd().split(",");
+																							String[] goods5addPrices = comps5.getItemStockQty().split(",");
+																							String[] goods5stockQty = comps5.getItemStockQty().split(",");
+
+																							// 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
+																							String manageCodeSave5 = manageCodeSave4;
+																							int addPriceSave5 = addPriceSave4;
+																							int stockQtySave5 = stockQtySave4;
+
+																							for(int g5 = 0 ; g5 < goods5optCds.length ; g5++) {
+																								manageCode = new StringBuilder(manageCodeSave5);        // String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
+																								manageCode.append("/").append(goods5optCds[g5]);
+																								addPrice = addPriceSave5 + Integer.parseInt(goods5addPrices[g5]);
+																								if (stockQtySave5 < Integer.parseInt(goods5stockQty[g5])) stockQty = Integer.parseInt(goods5stockQty[g5]);
+
+																								// 세트상품은 최대 5개이므로 마무리.
+																								sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
+																							}
+																						}
+																					}
+																				} else {
+																					sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
+																				}
+																			}
+																		}
+																	}
+																} else {
+																	sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
+																}
+															}
+														}
+													}
+												} else {
+													sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
+												}
+											}
+										}
+									}
+								} else {
+									sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
+								}
+							}
+						}
 					}
-					sb.append("\t\t\t</optionItem>\n");
 
-					// 9.1 옵션 아이템정보 사이즈
-					sb.append("\t\t\t<optionItem>\n");
-					sb.append("\t\t\t\t<type>SELECT</type>\n");
-					sb.append("\t\t\t\t<name>사이즈</name>\n");
-					for (String size : sizeList) {
-						sb.append("\t\t\t\t<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(size).append("</id>\n");
-						sb.append("\t\t\t\t\t<text>").append(size).append("</text>\n");
-						sb.append("\t\t\t\t</value>\n");
+					// 10. 배송정보조회
+					// 5.2.1 업체별 기본배송비, 무료배송비
+					String delvFeeCd = "";
+					if("Y".equals(goods.getSelfGoodsYn())) {
+						delvFeeCd = "WMS";
+					} else {
+						delvFeeCd = goods.getDelvFeeCd();
+					}
+					String delvFeeCrite = "CHARGE";
+					int delvFee = goods.getDelvFee();
+					String feePayType = "PREPAYED";
+					// 배송비 조건
+					if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
+						delvFeeCrite = "CONDITIONAL_FREE";		// 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
+					} else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
+						delvFeeCrite = "FREE";
+						feePayType = "FREE";
+						delvFee = 0;
 					}
-					sb.append("\t\t\t</optionItem>\n");
 
-					// 9.3 옵션 옵션조합정보
-					for(GoodsStock optInfo : optList) {
-						sb.append("\t\t\t<combination>\n");
-						sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
-						sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
-						sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
-						sb.append("\t\t\t\t<status>true</status>\n");
-
-						// 9.3.1  옵션 옵션조합정보 색상
-						sb.append("\t\t\t\t<options>\n");
-						sb.append("\t\t\t\t\t<name>색상</name>\n");
-						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
-						sb.append("\t\t\t\t</options>\n");
-
-						// 9.3.2  옵션 옵션조합정보 사이즈
-						sb.append("\t\t\t\t<options>\n");
-						sb.append("\t\t\t\t\t<name>사이즈</name>\n");
-						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
-						sb.append("\t\t\t\t</options>\n");
-
-						sb.append("\t\t\t</combination>\n");
+					sb.append("\t\t<shippingPolicy>\n");
+					sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
+					sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
+					sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
+					sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
+					sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
+					if(!"FREE".equals(delvFeeCrite)) {
+						sb.append("\t\t\t<conditionalFree>\n");
+						sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
+						sb.append("\t\t\t</conditionalFree>\n");
 					}
+
+					sb.append("\t\t</shippingPolicy>\n");
+
+					sb.append("\t</product>\n");
 				} else {
-					// 입점업체 상품 정보
-					// 9.1 옵션 아이템정보 색상
-					sb.append("\t\t\t<optionItem>\n");
-					sb.append("\t\t\t\t<type>SELECT</type>\n");
-					sb.append("\t\t\t\t<name>옵션</name>\n");
-					for(GoodsStock optInfo : optList) {
-						sb.append("\t\t\t\t<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
-						sb.append("\t\t\t\t\t<text>").append(optInfo.getOptCd1()).append("/").append(optInfo.getOptCd2()).append("</text>\n");
-						sb.append("\t\t\t\t</value>\n");
+					// 주문 상품 옵션 정보 조회
+					GoodsStock opt = new GoodsStock();
+					opt.setGoodsCd(item.getGoodsCd());
+					opt.setOptCd(item.getOptCd());
+					opt = goodsDao.getGoodsStockInfo(opt);
+
+					// 주문 상품 정보 조회
+					Goods goods = new Goods();
+					goods.setGoodsCd(item.getGoodsCd());
+					goods.setOptCd(item.getOptCd());
+					goods.setColorCd(opt.getOptCd1());
+					goods.setFrontGb(TsfSession.getFrontGb());
+					goods.setSiteCd(TscConstants.Site.STYLE24.value());
+					goods.setAdminYn("Y");			// 상품 상태에 관계 없이 조회하기 위함
+					goods = goodsDao.getGoodsInfo(goods);
+
+					// 상품 상태 확인
+					String goodsStat = "";
+					if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
+						goodsStat = "ON_SALE";		// 판매중
+					} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
+						goodsStat = "SOLD_OUT";		// 품절
+					} else {
+						goodsStat = "NOT_SALE";		// 구매불가
 					}
-					sb.append("\t\t\t</optionItem>\n");
 
-					// 9.3 옵션 옵션조합정보
+					// 반송지 정보
+					Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
+
+					sb.append("\t<product>\n");
+					sb.append("\t\t<id>").append(goodsCdArr[i]).append("</id>\n");
+					sb.append("\t\t<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>\n");
+					sb.append("\t\t<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>\n");
+					sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
+					sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
+					sb.append("\t\t<basePrice>").append(goods.getCurrPrice()).append("</basePrice>\n");
+					// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
+					sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
+					sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
+
+					// 12.반품주소
+					if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
+						// 2.1 반품정보
+						sb.append("\t\t<returnInfo>\n");
+						sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
+						sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
+						sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
+						sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
+						sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
+						sb.append("\t\t</returnInfo>\n");
+
+						// 반품배송비, 교환배송비
+						sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
+						sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
+					}
+
+					// 옵션정보 지원여부 true
+					sb.append("\t\t<optionSupport>true</optionSupport>\n");
+
+					// 옵션 정보
+					sb.append("\t\t<option>\n");
+
+					// 상품 옵션 전체 정보 조회
+					Collection<GoodsStock> optList = goodsDao.getGoodsOptionInfoList(opt);
+
+					String[] colorNmList = new String[optList.size()];
+					String[] colorList = new String[optList.size()];
+					String[] sizeList = new String[optList.size()];
+					int count = 0;
+
+					// 중복제거
 					for(GoodsStock optInfo : optList) {
-						sb.append("\t\t\t<combination>\n");
-						sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
-						sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
-						sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
-						sb.append("\t\t\t\t<status>true</status>\n");
-
-						// 9.3.1  옵션 옵션조합정보 색상
-						sb.append("\t\t\t\t<options>\n");
-						sb.append("\t\t\t\t\t<name>옵션</name>\n");
-						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
-						sb.append("\t\t\t\t</options>\n");
-						sb.append("\t\t\t</combination>\n");
+						colorNmList[count] = optInfo.getColorNm();
+						colorList[count] = optInfo.getOptCd1();
+						sizeList[count] = optInfo.getOptCd2();
+						count++;
+					}
+					colorNmList = new HashSet<String>(Arrays.asList(colorNmList)).toArray(new String[0]);
+					colorList = new HashSet<String>(Arrays.asList(colorList)).toArray(new String[0]);
+					sizeList = new HashSet<String>(Arrays.asList(sizeList)).toArray(new String[0]);
+
+					if("Y".equals(goods.getSelfGoodsYn())) {
+						// 자사 일반 상품 정보
+						// 옵션 아이템정보 색상
+						sb.append("\t\t\t<optionItem>\n");
+						sb.append("\t\t\t\t<type>SELECT</type>\n");
+						sb.append("\t\t\t\t<name>색상</name>\n");
+						int j = 0;
+						for (String color : colorList) {
+							sb.append("\t\t\t\t<value>\n");
+							sb.append("\t\t\t\t\t<id>").append(color).append("</id>\n");
+							sb.append("\t\t\t\t\t<text>").append(colorNmList[j++]).append("</text>\n");
+							sb.append("\t\t\t\t</value>\n");
+						}
+						sb.append("\t\t\t</optionItem>\n");
+
+						// 옵션 아이템정보 사이즈
+						sb.append("\t\t\t<optionItem>\n");
+						sb.append("\t\t\t\t<type>SELECT</type>\n");
+						sb.append("\t\t\t\t<name>사이즈</name>\n");
+						for (String size : sizeList) {
+							sb.append("\t\t\t\t<value>\n");
+							sb.append("\t\t\t\t\t<id>").append(size).append("</id>\n");
+							sb.append("\t\t\t\t\t<text>").append(size).append("</text>\n");
+							sb.append("\t\t\t\t</value>\n");
+						}
+						sb.append("\t\t\t</optionItem>\n");
+
+						// 옵션 옵션조합정보
+						for(GoodsStock optInfo : optList) {
+							sb.append("\t\t\t<combination>\n");
+							sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
+							sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
+							sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
+							sb.append("\t\t\t\t<status>true</status>\n");
+
+							// 옵션 옵션조합정보 색상
+							sb.append("\t\t\t\t<options>\n");
+							sb.append("\t\t\t\t\t<name>색상</name>\n");
+							sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
+							sb.append("\t\t\t\t</options>\n");
+
+							// 옵션 옵션조합정보 사이즈
+							sb.append("\t\t\t\t<options>\n");
+							sb.append("\t\t\t\t\t<name>사이즈</name>\n");
+							sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
+							sb.append("\t\t\t\t</options>\n");
+
+							sb.append("\t\t\t</combination>\n");
+						}
+					} else {// 입점업체 상품 정보
+						// 옵션 아이템정보 색상
+						sb.append("\t\t\t<optionItem>\n");
+						sb.append("\t\t\t\t<type>SELECT</type>\n");
+						sb.append("\t\t\t\t<name>옵션</name>\n");
+						for(GoodsStock optInfo : optList) {
+							sb.append("\t\t\t\t<value>\n");
+							sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
+							sb.append("\t\t\t\t\t<text>").append(optInfo.getOptCd1()).append("/").append(optInfo.getOptCd2()).append("</text>\n");
+							sb.append("\t\t\t\t</value>\n");
+						}
+						sb.append("\t\t\t</optionItem>\n");
+
+						// 옵션 옵션조합정보
+						for(GoodsStock optInfo : optList) {
+							sb.append("\t\t\t<combination>\n");
+							sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
+							sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
+							sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
+							sb.append("\t\t\t\t<status>true</status>\n");
+							sb.append("\t\t\t\t<options>\n");
+							sb.append("\t\t\t\t\t<name>옵션</name>\n");
+							sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
+							sb.append("\t\t\t\t</options>\n");
+							sb.append("\t\t\t</combination>\n");
+						}
 					}
-				}
 
-				sb.append("\t\t</option>\n");
+					sb.append("\t\t</option>\n");
 
-				// 10. 배송정보조회
-				// 5.2.1 업체별 기본배송비, 무료배송비
-				String delvFeeCd = "";
-				if("Y".equals(goods.getSelfGoodsYn())) {
-					delvFeeCd = "WMS";
-				} else {
-					delvFeeCd = goods.getDelvFeeCd();
-				}
-				String delvFeeCrite = "CHARGE";
-				int delvFee = goods.getDelvFee();
-				String feePayType = "PREPAYED";
-				// 배송비 조건
-				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
-					delvFeeCrite = "CONDITIONAL_FREE";		// 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
-				} else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
-					delvFeeCrite = "FREE";
-					feePayType = "FREE";
-					delvFee = 0;
-				}
+					// 10. 배송정보조회
+					// 5.2.1 업체별 기본배송비, 무료배송비
+					String delvFeeCd = "";
+					if("Y".equals(goods.getSelfGoodsYn())) {
+						delvFeeCd = "WMS";
+					} else {
+						delvFeeCd = goods.getDelvFeeCd();
+					}
+					String delvFeeCrite = "CHARGE";
+					int delvFee = goods.getDelvFee();
+					String feePayType = "PREPAYED";
+					// 배송비 조건
+					if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
+						delvFeeCrite = "CONDITIONAL_FREE";		// 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
+					} else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
+						delvFeeCrite = "FREE";
+						feePayType = "FREE";
+						delvFee = 0;
+					}
 
-				sb.append("\t\t<shippingPolicy>\n");
-				sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
-				sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
-				sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
-				sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
-				sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
-				if(!"FREE".equals(delvFeeCrite)) {
-					sb.append("\t\t\t<conditionalFree>\n");
-					sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
-					sb.append("\t\t\t</conditionalFree>\n");
-				}
+					sb.append("\t\t<shippingPolicy>\n");
+					sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
+					sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
+					sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
+					sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
+					sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
+					if(!"FREE".equals(delvFeeCrite)) {
+						sb.append("\t\t\t<conditionalFree>\n");
+						sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
+						sb.append("\t\t\t</conditionalFree>\n");
+					}
 
-				sb.append("\t\t</shippingPolicy>\n");
+					sb.append("\t\t</shippingPolicy>\n");
 
-				sb.append("\t</product>\n");
+					sb.append("\t</product>\n");
+				}
 			}
 			sb.append("</products>\n");
 			//for end

+ 0 - 1
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -364,7 +364,6 @@ public class TsfCartController extends TsfBaseController {
 
 		// 장바구니 상품목록
 		cart = cartService.getCartGoodsList(cart);
-		log.info("CHECK LENGTH :::: {}", cart.getDelvAllCartList().size());
 		cart.setImgPath1(env.getProperty("upload.goods.view"));
 
 		// 현재 주문 가능 수량순으로 정렬

+ 16 - 0
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -77,6 +78,9 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class TsfMypageController extends TsfBaseController {
 
+	@Autowired
+	private Environment env;
+
 	@Autowired
 	private TscMessageByLocale message;
 
@@ -272,6 +276,9 @@ public class TsfMypageController extends TsfBaseController {
 		// 상품권 현금영수증 신청 정보 조회
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
 
 		return mav;
@@ -996,6 +1003,9 @@ public class TsfMypageController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreCancelDetailForm"));
 
 		return mav;
@@ -1032,6 +1042,9 @@ public class TsfMypageController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreReturnDetailForm"));
 
 		return mav;
@@ -1062,6 +1075,9 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("oneData", oneData);
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreExchangeDetailForm"));
 
 		return mav;

+ 16 - 0
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -52,6 +53,9 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class TsfNoMemberController extends TsfBaseController {
 
+	@Autowired
+	private Environment env;
+
 	@Autowired
 	private TscMessageByLocale message;
 
@@ -220,6 +224,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 상품권 현금영수증 신청 정보 조회
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberOrderDetailForm"));
 
 		return mav;
@@ -1090,6 +1097,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreCancelDetailForm"));
 
 		return mav;
@@ -1151,6 +1161,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreReturnDetailForm"));
 
 		return mav;
@@ -1206,6 +1219,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("oneData", oneData);
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreExchangeDetailForm"));
 
 		return mav;

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

@@ -1276,11 +1276,17 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/naver/payment/request")
 	@ResponseBody
-	public ModelAndView naverPaymentRequest(@RequestParam(value = "paymentId", required = false) String paymentId) {
+	public ModelAndView naverPaymentRequest(@RequestParam(value = "paymentId", required = false) String paymentId, @RequestParam(value = "resultCode", required = false) String resultCode) {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("paymentId", paymentId);
 		mav.addObject("ordNo", TsfSession.getAttribute("ordNo"));
-		mav.setViewName(super.getDeviceViewName("pg/NaverPaymentRequest"));
+
+		if (TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb()) && StringUtils.isNotBlank(resultCode) && "Fail".equals(resultCode)) {
+			mav.setViewName(super.getDeviceViewName("error/PaymentFail"));
+		} else {
+			mav.setViewName(super.getDeviceViewName("pg/NaverPaymentRequest"));
+		}
+
 		return mav;
 	}
 
@@ -1455,4 +1461,20 @@ public class TsfOrderController extends TsfBaseController {
 		
 		return mav;
 	}
+
+	/**
+	 * 결제 실패 화면
+	 *
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 05. 25
+	 */
+	@RequestMapping(value = "/payment/fail")
+	public ModelAndView paymentFail() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName(super.getDeviceViewName("error/PaymentFail"));
+
+		return mav;
+	}
 }

+ 5 - 2
src/main/java/com/style24/persistence/domain/Goods.java

@@ -172,6 +172,8 @@ public class Goods extends TscBaseDomain {
 	private String optCd1Nm;
 	private int qty;				// 세트 상품 구성 수량
 	private String itemCd;			// 단품코드
+	private String itemNm;			// 단품명
+	private String itemStockQty;	// 단품 재고 수량(1,2,1,0)
 
 	private String mobileYn;
 	private String delvResDt;		// 예약판매 출고예정일
@@ -183,6 +185,7 @@ public class Goods extends TscBaseDomain {
 	private String brandKnm;
 	private Integer ordNo;			// 주문번호
 	private Integer ordDtlNo;		// 주문상세번호
+	private Integer rnum;
 
 	//상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:상위컨텐츠-모바일,70:하위컨텐츠-모바일,80:상품상세(as-is,입점))
 	private String goodsTitle; 			// 10:상품타이틀
@@ -201,9 +204,9 @@ public class Goods extends TscBaseDomain {
 	private String[] arrGoodsCd;		// 상품코드
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private Integer[] arrTmtbSq;			// 다다익선 번호
+	private Integer[] arrTmtbSq;		// 다다익선 번호
 
-	private String goodsSql;	// 오늘본상품SQL
+	private String goodsSql;		// 오늘본상품SQL
 
 	private String likeIt;			// 위시리스트에담긴상품
 	private String videoVal;

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

@@ -66,6 +66,7 @@ public class Social extends TscBaseDomain{
 		private String optCd;
 		private String goodsType;
 		private String brandGroupNm;	//브랜드 그룹명
+		private String compsGoodsCd;
 		
 		
 		// 고객

+ 6 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -937,8 +937,8 @@
 	<select id="selectCartGoodsColorList" parameterType="Cart" resultType="Cart">
 		/* TsfCart.selectCartGoodsColorList : 장바구니 상품 컬러 정보 조회 */
 		SELECT A.*
-		     , IFNULL((CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = A.CART_OPT_CD1)
-		                    ELSE A.CART_OPT_CD1 END), A.CART_OPT_CD1) AS CART_COLOR_NM
+		     , IFNULL(CASE WHEN SELF_GOODS_YN = 'Y' THEN C.COLOR_KNM
+		                   ELSE A.CART_OPT_CD1 END, A.CART_OPT_CD1) AS CART_COLOR_NM
 		FROM   (SELECT ST.GOODS_CD
 		             , MAX(CASE WHEN SELF_GOODS_YN = 'Y' THEN (SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = ST.OPT_CD1)
 		                        ELSE ST.OPT_CD1 END) AS COLOR_NM
@@ -969,7 +969,10 @@
 		                , ST.OPT_CD1
 		                , G.SELF_GOODS_YN
 		                , G.MAIN_COLOR_CD ) A
-		ORDER  BY DISP_ORD
+		LEFT   OUTER JOIN TB_COLOR C
+		ON     A.CART_OPT_CD1 = C.COLOR_CD
+		AND    C.USE_YN = 'Y'
+		ORDER  BY NULLIF(C.COLOR_KNM, A.CART_OPT_CD1)
 	</select>
 
 	<!-- 장바구니 상품 사이즈 정보 조회 -->

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

@@ -522,7 +522,20 @@
 		</if>
 		LIMIT 200
 	</select>
-	
+
+	<!-- 상품 정보 조회 -->
+	<select id="getGoodsSimpleInfo" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getGoodsSimpleInfo */
+		SELECT GOODS_CD
+		     , GOODS_TYPE
+		     , CASE WHEN NOW() BETWEEN SELL_STDT AND SELL_EDDT THEN GOODS_STAT
+		            ELSE 'G008_95' END AS GOODS_STAT
+		     , SELF_GOODS_YN
+		     , SELF_MALL_YN
+		FROM   TB_GOODS
+		WHERE  GOODS_CD = #{goodsCd}
+	</select>
+
 	<!-- 구성 상품 정보 -->
 	<select id="getGoodsCompsInfo" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getGoodsCompsInfo */
@@ -560,6 +573,34 @@
 		 WHERE VS.GOODS_CD = #{goodsCd}
 		   AND VS.OPT_CD = #{optCd}
 	</select>
+
+	<!-- 주문 상품 옵션 정보 조회 -->
+	<select id="getOrderGoodsOptionList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getOrderGoodsOptionList */
+		SELECT G.GOODS_CD
+		     , G.GOODS_STAT
+		     , G.GOODS_NM
+		     , VS.OPT_CD
+		     , VS.OPT_CD1
+		     , VS.OPT_CD2
+		     , CASE WHEN VS.SOLDOUT_YN = 'Y' OR G.GOODS_STAT <![CDATA[ <> ]]> 'G008_90' THEN 0 ELSE VS.CURR_STOCK_QTY END AS STOCK_QTY
+		     , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(VS.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), VS.OPT_CD1) AS COLOR_NM
+		FROM   TB_GOODS G
+		INNER  JOIN VW_STOCK VS
+		ON     G.GOODS_CD = VS.GOODS_CD
+		WHERE  1=1
+		AND    VS.GOODS_CD IN
+		<foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+		<if test="sizeArr != null and sizeArr.length > 0">
+		AND    VS.OPT_CD IN
+			<foreach collection="sizeArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		ORDER  BY G.GOODS_CD ASC, VS.OPT_CD ASC
+	</select>
 	
 	<!-- 무이자 혜택안내 -->
 	<select id="getCardPromotionList" parameterType="CardPromotion" resultType="CardPromotion">
@@ -687,7 +728,8 @@
 	<!-- 상품  배송안내정보  -->
 	<select id="getGoodsDeliveryInfo"  parameterType="String" resultType="Delivery">
 		/* TsfGoods.getGoodsDeliveryInfo */
-		SELECT G.GOODS_CD 
+		SELECT G.GOODS_CD
+		     , G.GOODS_TYPE
 		     , A.DELV_FEE_CD 
 		     , A.SUPPLY_COMP_CD 
 		     , A.DELV_FEE 
@@ -762,6 +804,12 @@
 		                                 AND GS.STOCK_QTY > 0
 		    WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		    AND A.TMTB_STAT ='G232_11'
+		    <if test="arrTmtbSq != null and arrTmtbSq.length > 0">
+		    AND A.TMTB_SQ IN
+				<foreach collection="arrTmtbSq" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+				</foreach>
+			</if>
 		     <![CDATA[
 		    AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB IN ( 'G800_10', 'G800_20')) -- 기본과 적용상품
 		    AND A.TMTB_SQ NOT IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB = 'G800_30') -- 제외상품
@@ -3036,4 +3084,36 @@
 		WHERE A.GOODS_CD = #{goodsCd}
 		ORDER BY G.GOODS_CD, A.CUST_GRADE
 	</select>
+
+	<!-- 구성 상품 목록 -->
+	<select id="getCompsGoodsList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getSimpleCompsGoodsList */
+		SELECT ROW_NUMBER() OVER() AS RNUM
+		     , A.GOODS_CD
+		     , A.COMPS_GOODS_CD
+		     , A.GOODS_NM
+		     , A.OPT_CD
+		     , A.OPT_CD2
+		     , A.ADD_PRICE
+		     , A.ITEM_STOCK_QTY
+		     , A.COLOR_NM
+		FROM (SELECT GC.GOODS_CD
+		           , GC.COMPS_GOODS_CD
+		           , G.GOODS_NM
+		           , GROUP_CONCAT(VS.OPT_CD ORDER BY VS.OPT_CD ASC) AS OPT_CD
+		           , GROUP_CONCAT(VS.OPT_CD2 ORDER BY VS.OPT_CD ASC) AS OPT_CD2
+		           , GROUP_CONCAT(VS.ADD_PRICE ORDER BY VS.OPT_CD ASC) AS ADD_PRICE
+		           , GROUP_CONCAT(TRUNCATE(VS.CURR_STOCK_QTY / GC.QTY, 0) ORDER BY VS.OPT_CD ASC) AS ITEM_STOCK_QTY
+		           , GROUP_CONCAT(IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(VS.OPT_CD1,'') , VS.OPT_CD1 ) AND USE_YN  = 'Y'), VS.OPT_CD1) ORDER BY VS.OPT_CD ASC) AS COLOR_NM
+		      FROM   TB_GOODS_COMPOSE GC
+		      INNER  JOIN VW_STOCK VS
+		      ON     GC.COMPS_GOODS_CD = VS.GOODS_CD
+		      INNER  JOIN TB_GOODS G
+		      ON     GC.COMPS_GOODS_CD = G.GOODS_CD
+		      WHERE  GC.GOODS_CD = #{goodsCd}
+		      GROUP  BY GC.GOODS_CD
+		              , G.GOODS_NM
+		              , GC.COMPS_GOODS_CD
+		      ORDER  BY GC.COMPS_GOODS_CD) A		<!-- 변경x > 네이버페이 KEY로 송부되는 순서 -->
+	</select>
 </mapper>

+ 4 - 12
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -102,9 +102,10 @@
 		     --  , COMPS_GOODS_CD
 		         , SUM(case WHEN SOLDOUT_YN = 'Y' THEN 0
 		              ELSE CURR_STOCK_QTY END ) AS STOCK_QTY_SUM
-		           , GROUP_CONCAT(DISTINCT CONCAT(OPT_CD ,':' ,CASE WHEN SOLDOUT_YN = 'Y' THEN 'Y'
+		         , GROUP_CONCAT(DISTINCT OPT_CD) AS OPT_CD
+		           <!-- , GROUP_CONCAT(DISTINCT CONCAT(OPT_CD ,':' ,CASE WHEN SOLDOUT_YN = 'Y' THEN 'Y'
 		                          ELSE CASE WHEN CURR_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END
-		                          END) ) AS OPT_CD
+		                          END) ) AS OPT_CD -->
 		    FROM (
 		             SELECT G.GOODS_CD
 		                  , GC.COMPS_GOODS_CD
@@ -124,16 +125,6 @@
 		         ) Z
 		    WHERE  NUMB = 1
 		    GROUP BY GOODS_CD
-		   <!--  SELECT G.GOODS_CD
-		         , SUM(caSE WHEN S.SOLDOUT_YN = 'Y' THEN 0
-		                    ELSE S.CURR_STOCK_QTY - S.BASE_STOCK_QTY END ) AS STOCK_QTY_SUM
-		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
-		    FROM   TAB_GOODS G
-		         , VW_STOCK_COMPOSE S
-		    WHERE  G.GOODS_CD = S.GOODS_CD
-		    AND    G.GOODS_TYPE != 'G056_N'
-		    AND    S.DISP_YN = 'Y' /*노출하는상품만*/
-		    GROUP  BY G.GOODS_CD		 -->
 		    )
 		SELECT G.BRAND_GROUP_NM
 		     , G.GOODS_CD
@@ -152,6 +143,7 @@
 		     , S.STOCK_QTY_SUM
 		     , S.OPT_CD
 		     , G.MIN_ORD_QTY 
+		     , (SELECT GROUP_CONCAT(COMPS_GOODS_CD)  FROM TB_GOODS_COMPOSE WHERE GOODS_CD = G.GOODS_CD) AS COMPS_GOODS_CD  
 		     <choose>
 		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/

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

@@ -82,6 +82,7 @@ pg:
         log.level: 3
         module.type: 01
         tx.mode: 0
+        receipt.url : https://testadmin8.kcp.co.kr/assist/bill.BillActionNew.do
 
 # 네이버페이 API
 naverPay:

+ 9 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html

@@ -48,6 +48,15 @@
 	</div>
 	<!-- //교환상품 옵션변경 팝업 -->
 
+	<div class="modal pop_full 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="adrsAddPop_close" class="close-modal">Close</a>
+		</div>
+
 	<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
 	
 	<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 39 - 0
src/main/webapp/WEB-INF/views/mob/error/PaymentFailMob.html


+ 53 - 32
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -847,6 +847,46 @@
 		
 	}
 	
+	//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업	
+	var fnGoodsDealOptionOpen = function(goodsCd){
+		$("#pdDescrpPop .close-modal ").click();
+		$('.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
+	function popOpenScroll(){
+		$('html, body').css({'overflow': 'hidden', 'height': '100%'}); 
+		$('#element').on('scroll touchmove mousewheel', function(event) { // 터치무브, 휠 스크롤 방지
+			event.preventDefault();
+			event.stopPropagation();
+			return false;
+		});
+	}
+	// pop close
+	function popClsScroll(){
+		$('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
+		$('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
+		return false;
+	}
+	// pop close
+	function popClsScroll2(){
+		$('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
+		$('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
+		return false;
+	}
+	
 	 $(document).ready( function() {
 		 
 		 $('.timer_box').css('display', 'none');
@@ -1047,8 +1087,8 @@
 		});
 
 
-			//팝업 - 제품리뷰 > 카테고리팝오픈
-			// 오픈
+		//팝업 - 제품리뷰 > 카테고리팝오픈
+		// 오픈
 		 $(document).on('click','.pd_review .category_open > li',function(e){
 				var dataName=$(this).attr("data_name");
 			 $(".pd_review .category_box").show();
@@ -1089,27 +1129,7 @@
 		
 			// =============구매하기팝업========================================================
 
-		// pop open
-		function popOpenScroll(){
-			$('html, body').css({'overflow': 'hidden', 'height': '100%'}); 
-			$('#element').on('scroll touchmove mousewheel', function(event) { // 터치무브, 휠 스크롤 방지
-				event.preventDefault();
-				event.stopPropagation();
-				return false;
-			});
-		}
-		// pop close
-		function popClsScroll(){
-			$('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
-			$('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
-			return false;
-		}
-		// pop close
-		function popClsScroll2(){
-			$('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
-			$('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
-			return false;
-		}
+
 
 		//팝업 - 구매하기 > 옵션선택 > 옵션셀렉트팝업
 		$(document).on('click','.Purchase_pop .option_result .option_open',function(e){
@@ -1128,16 +1148,17 @@
 			 return false;
 		 });
 
-			//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업
-		$(document).on('click','#pdDescrpPop .modal-footer button',function(e){
-			$("#pdDescrpPop .close-modal ").click();
-			$('.container').addClass('btPop_open');
-			$(".Purchase_pop .pop_option_select").show();
-			popOpenScroll();
-		 return false;
-		 });
-		// ============================================================================//
+		//팝업 - 딜상세팝업 구매하기버튼 > 옵션셀렉트팝업  ==> fnGoodsDealOptionOpen()대체
+//		$(document).on('click','#pdDescrpPop .modal-footer button',function(e){
+//			$("#pdDescrpPop .close-modal ").click();
+//			$('.container').addClass('btPop_open');
+//			$(".Purchase_pop .pop_option_select").show();
+//			popOpenScroll();
+//		 return false;
+//		 });
 			
+		
+		// ============================================================================//
 
 
 		// =============딜리스트팝업========================================================

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

@@ -685,13 +685,13 @@
 						</div>
 					</a>
 				</div>
-				<div class="area_slider" id="btn_pdBestReview_pop" th:if="${bestReviewList != null and !bestReviewList.empty}">
+				<div class="area_slider" id="btn_pdBestReview_pop"  th:if="${bestReviewList != null and !bestReviewList.empty}">
 					<div class="swiper-container">
 						<div class="swiper-wrapper">
 							<div class="swiper-slide"  th:each="bestReview, status : ${bestReviewList}"  >
 								<!-- 베스트 리뷰 등록시 노출 -->
 								<div class="best_review">
-									<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y', '',[[${bestReview.reviewSq}]])">
+									<a href="javascript:void(0);"  th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y', '',[[${bestReview.reviewSq}]])">
 										<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.iscore*100/5), 0,0)}">
 											<span class="star">
 												<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
@@ -934,7 +934,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>
@@ -2306,6 +2306,7 @@
 			},
 		});
 		
+		//--상품문의 창 순서 - 
 		var qnaCount = 0;
 		//팝업 - 상품문의 리스트	
 		$(document).on('click','#btn_pdQnaList_pop',function(e){
@@ -2326,6 +2327,48 @@
 			}
             return false;
         });
+		//--상품문의 창 순서 -
+		
+		
+		//--상품리뷰 창 순서 -
+		var reviewCount = 0;
+		//팝업 - 상품상세 베스트리뷰
+		$(document).on('click','.pd_detail #btn_pdBestReview_pop a',function(e){
+               reviewCount = 1;
+               return false;
+           })
+        //팝업 - 상품상세>리뷰팝업>포토상세(포토영상상세)
+		$(document).on('click','.pd_review_pop .area_rv_photo a',function(e){
+               $("#layer_review_best").modal("show");
+               reviewCount = 2;
+               return false;
+           })
+        //팝업 - 상품상세>리뷰팝업>포토상세(베스트상세)
+		$(document).on('click','.pd_review_pop .area_rv_best a',function(e){
+               $("#layer_review_best").modal("show");
+               reviewCount = 2;
+               return false;
+           })
+        //팝업 - 상품상세>리뷰팝업>포토상세 닫기
+		$(document).on('click','#layer_review_best .close-modal',function(e){
+			if(reviewCount === 2){
+				$('.pd_review_pop').modal('show');
+			}
+               return false;
+           });
+		//팝업 - 포토/영상 (list)
+		$(document).on('click','.pd_review_pop #btn_more_photoreview',function(e){
+               reviewCount = 2;
+               return false;
+           })
+		$(document).on('click','#layer_review_photo .close-modal',function(e){
+			if(reviewCount === 2){
+				$('.pd_review_pop').modal('show');
+			}
+               return false;
+           });
+		
+		//--상품리뷰 창 순서 -
 		
 		$(document).on('click','.pd_detail .thumb_box .thumb',function(e){
             $('#pdItemThumbPop').css("display", "block");
@@ -2471,9 +2514,10 @@
             return false;
         });
 		
-		/* $(document).on('click','.pop_open_btn',function(){
+		// 상품평 상세 토글
+		$(document).on('click','.pop_open_btn',function(){
 			$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
-		}); */
+		});
 		
 	});
 	

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

@@ -78,7 +78,7 @@
 		if (result.paging.pageable.pageNo == 1){
 			$('#ulGoodsQna').html('');
 		}	
-		debugger;
+		
 		$.each(result.dataList, function(idx, item) {
 			$('#goodsQnaForm').find('.nodata').hide();
 			let tag = '';

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

@@ -416,7 +416,7 @@
 					<div class="swiper-wrapper">
 						<div class="swiper-slide" th:each="bestReview, status : ${bestReviewList}">
 							<div class="best_review">
-								<a href="javascript:void(0);">
+								<a href="javascript:void(0);" id="btn_pdBestReview_pop" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y', '',[[${bestReview.reviewSq}]])">
 									<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.iscore*100/5), 0,0)}">
 										<span class="star">
 											<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->

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

@@ -405,6 +405,7 @@
 				$(this).addClass('selected');
 				let tag = $(this).html();
 				$('#pdDescrpPop').find('.item_blk').html(tag);
+				$('.deal_listDescrp_open').html('상품'+ (selIdx+1));
 			}
 			selIdx ++;
 		});
@@ -440,6 +441,13 @@
 		$("#pdDescrpPop").modal("show");
 	}
 	
+	//팝업 - 딜상세팝업 구매하기버튼
+	$(document).on('click','#btn_deal_purchase',function(e){
+		let selGoodsCd = $('#pdDescrpPop').find('input[name=selectGoods]').val();
+		fnGoodsDealOptionOpen(selGoodsCd);
+	});
+	
+	
 	$(document).ready( function() {
 		
 	});

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

@@ -32,8 +32,8 @@
 				</div>
 				<div class="form_field">
 					<div class="input_box">
-						<div class="lap">
-							<textarea class="doc_itemqna"  name="questContent" cols="30" rows="10"  maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+						<div class="input_wrap">
+							<textarea name="questContent" cols="30" rows="10"  maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
 							<p class="txt_cnt">
 								<span id="itemqna_cnt" class="itemqna_cnt" ><em class="c_primary">0</em>/500자</span>
 							</p>   

+ 91 - 86
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html

@@ -58,113 +58,114 @@
 					</div>
 				<!-- //리뷰사진영역 -->
 				<!-- 리뷰내용 -->
-				<div class="pd_review best">
-					<div class="area_rv_all">
-						<div class="btn_review_open">리뷰오픈</div>
-						<div class="review_list">
-							<ul>
-								<li>
-									<div class="review">
-										<div class="info_box">
-											<div class="star_score" th:with="starScore=${#numbers.formatDecimal((review.iscore*100/5), 0,0)}">
-												<span class="star">
-													<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
-												</span>
+					<div class="pop_detail">
+						<button type="button" class="pop_open_btn"><span class="sr-only"></span></button>
+						<div class="comment_wrap">
+							<div class="review_list">
+								<ul>
+									<li>
+										<div class="review">
+											<div class="info_box">
+												<div class="star_score" th:with="starScore=${#numbers.formatDecimal((review.iscore*100/5), 0,0)}">
+													<span class="star">
+														<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
+													</span>
+												</div>
+												<div class="writer">
+													<span class="wr_id" th:text="${review.maskingCustId}">ab2****</span>
+													<span class="wr_date" th:text="${review.regDt}">2020.07.15</span>
+												</div>
 											</div>
-											<div class="writer">
-												<span class="wr_id" th:text="${review.maskingCustId}">ab2****</span>
-												<span class="wr_date" th:text="${review.regDt}">2020.07.15</span>
+											<div class="response_box">
+												<div>
+													<dl>
+														<div th:if="${review.goodsOptionList != null and !review.goodsOptionList.empty}" >
+															<dt >구매옵션</dt>
+															<th:block th:each="reviewGoods, goodsStatus : ${review.goodsOptionList}">
+															<dd th:text="${reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2}">베이지 / 100</dd>
+															</th:block>
+														</div>
+														<div>
+															<dt>키/몸무게</dt>
+															<dd><th:block th:if="${not #strings.isEmpty(review.height)}" th:text="|${review.height}cm / |"></th:block> 
+																<th:block th:if="${not #strings.isEmpty(review.weight)}" th:text="|${review.weight}kg|"></th:block>
+															</dd>
+														</div>
+													</dl>
+												</div>
 											</div>
-										</div>
-										<div class="response_box">
-											<div>
-												<dl>
-													<div th:if="${review.goodsOptionList != null and !review.goodsOptionList.empty}" th:each="reviewGoods, goodsStatus : ${review.goodsOptionList}">
-														<dt >구매옵션</dt>
-														<dd th:text="${reviewGoods.optCd1 +' / '+ reviewGoods.optCd2}">베이지 / 100</dd>
-													</div>
-													<div>
-														<dt>키/몸무게</dt>
-														<dd><th:block th:if="${not #strings.isEmpty(review.height)}" th:text="|${review.height}cm / |"></th:block> 
-															<th:block th:if="${not #strings.isEmpty(review.weight)}" th:text="|${review.weight}kg|"></th:block>
-														</dd>
-													</div>
-												</dl>
+											<div class="txt_review_box">
+												<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.reviewContent))}">옷</p>
 											</div>
-										</div>
-										<div class="txt_review_box">
-											<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.reviewContent))}">옷</p>
-										</div>
-										<div class="response_box2"  th:if="${not #strings.isEmpty(review.sizeGb)}">
-											<div>
-												<dl>
-													<div>
-														<dt>사이즈</dt>
-														<dd th:text="${review.scoreSizeNm}">작음</dd>
-													</div>
-													<div>
-														<dt>컬러</dt>
-														<dd th:text="${review.scoreColorNm}">밝음</dd>
-													</div>
-													<th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
-													<div>
-														<dt>핏</dt>
-														<dd th:text="${review.scoreFitNm}">레귤러</dd>
-													</div>
-													<div>
-														<dt>두께감</dt>
-														<dd th:text="${review.scoreThickNm}">적당함</dd>
-													</div>
-													</th:block>
-													<th:block th:unless="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
-													<div>
-														<dt>무게감</dt>
-														<dd th:text="${review.scoreWeightNm}">레귤러</dd>
+											<div class="response_box2"  th:if="${not #strings.isEmpty(review.sizeGb)}">
+												<div>
+													<dl>
+														<div>
+															<dt>사이즈</dt>
+															<dd th:text="${review.scoreSizeNm}">작음</dd>
+														</div>
+														<div>
+															<dt>컬러</dt>
+															<dd th:text="${review.scoreColorNm}">밝음</dd>
+														</div>
+														<th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
+														<div>
+															<dt>핏</dt>
+															<dd th:text="${review.scoreFitNm}">레귤러</dd>
+														</div>
+														<div>
+															<dt>두께감</dt>
+															<dd th:text="${review.scoreThickNm}">적당함</dd>
+														</div>
+														</th:block>
+														<th:block th:unless="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
+														<div>
+															<dt>무게감</dt>
+															<dd th:text="${review.scoreWeightNm}">레귤러</dd>
+														</div>
+														<div>
+															<dt>볼너비</dt>
+															<dd th:text="${review.scoreBallNm}">적당함</dd>
+														</div>
+														</th:block>
+													</dl>
+												</div>
+											</div>
+											<div class="reply_box" th:if="${not #strings.isEmpty(review.admRpl)}">
+												<div class="reply">
+													<div class="reply_writer">
+														<span class="wr_name">관리자</span>
+														<span class="wr_date" th:text="${review.admRplDt}" >2020.07.15</span>
 													</div>
-													<div>
-														<dt>볼너비</dt>
-														<dd th:text="${review.scoreBallNm}">적당함</dd>
+													<div class="reply_txt">
+														<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.admRpl))}">
+															안녕하세요, 스타일24 관리자입니다.
+														</p>
 													</div>
-													</th:block>
-												</dl>
-											</div>
-										</div>
-										<div class="reply_box" th:if="${not #strings.isEmpty(review.admRpl)}">
-											<div class="reply">
-												<div class="reply_writer">
-													<span class="wr_name">관리자</span>
-													<span class="wr_date" th:text="${review.admRplDt}" >2020.07.15</span>
-												</div>
-												<div class="reply_txt">
-													<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.admRpl))}">
-														안녕하세요, 스타일24 관리자입니다.
-													</p>
 												</div>
 											</div>
 										</div>
-									</div>
-								</li>
-							</ul>
+									</li>                               
+								</ul>
+							</div>
 						</div>
 					</div>
-				</div>
 				<!-- //리뷰내용 -->
 			</div>
 		</div>
 	</div>
 </div>
-<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_best')" class="close-modal">Close</a> 
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
 	$(document).ready( function() {
 		 //슬라이드 - 포토,영상리뷰팝업
-//		let reviewAttchSq = 0; 
-//		if (!gagajf.isNull( [[${review.attachSq}]])){
-//			reviewAttchSq = [[${review.attachSq}]];
-//		}
+		let reviewAttchSq = 0; 
+		if (!gagajf.isNull( [[${review.attachSq}]])){
+			reviewAttchSq = [[${review.attachSq}]];
+		}
 //		reviewAttchSq = Number(reviewAttchSq) +1;
-		//console.log("reviewAttchSq {}",reviewAttchSq);
+//		console.log("reviewAttchSq {}",reviewAttchSq);
         var photoreviewdetailSwiper = new Swiper('.pd_photoreviewdetail_pop .area_slider .swiper-container', {
             observer: true,
             observeParents: true,
@@ -174,6 +175,10 @@
                 type: 'fraction',
             },
         });
+        
+        //선태 이미지 노출
+        photoreviewdetailSwiper.slideTo(reviewAttchSq, 0, false); 
+    	
         // 포토,베스트리뷰숨김
         var review_open=$(".btn_review_open");
         $(document).on('click','.btn_review_open',function(e){

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

@@ -43,7 +43,7 @@
 					<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_detail">
-								<a href="">
+								<a href="javascript:void(0)" th:attr="goodsCd=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
 									</div>

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

@@ -44,7 +44,7 @@
 							<p class="dlvr_desc" 	th:text="|${cancelDtl.chgDate} ${cancelDtl.chgTime}|"></p>
 						</div>
 						<div class="goods_detail">
-							<a href="">
+							<a href="javascript:void(0)" th:attr="goodsCd=${cancelDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 								<div class="thumb_box">
 									<img th:src="${imageUrl + '/' + cancelDtl.sysImgNm}" width="100%" alt="">
 								</div>
@@ -215,6 +215,7 @@
 /*<![CDATA[*/
 let oneData = [[${oneData}]];
 var isLogin = [[${isLogin}]];
+let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 
 $(document).ready(function() {
 	// 타이틀명

+ 61 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html

@@ -51,7 +51,7 @@
 							<p class="dlvr_desc" th:text="|${exchangeDtl.chgDate} ${exchangeDtl.chgTime}|"></p>
 						</div>
 						<div class="goods_detail">
-							<a href="">
+							<a href="javascript:void(0)" th:attr="goodsCd=${exchangeDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 								<div class="thumb_box">
 									<img th:src="${imageUrl + '/' + exchangeDtl.sysImgNm}" width="100%" alt="">
 								</div>
@@ -62,7 +62,7 @@
 											<div class="badge_wrap">
 												<em class="tag primary" th:if="${exchangeDtl.shotDelvYn == 'Y'}">총알배송</em>
 												<em class="tag" 		th:if="${exchangeDtl.shotDelvYn == 'N' and exchangeDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
-												<em class="tag" 		th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</span>
+												<em class="tag" 		th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</em>
 											</div>
 										</div>
 										<div class="name" th:text="${exchangeDtl.goodsNm}"></div>
@@ -234,6 +234,64 @@
 				</div>
 			</div>
 		</th:block>
+		<th:block th:if="${oneData.addPayCost > 0}">
+			<div class="inner">
+				<!-- 210409_수정 : 환불 정보 -> 결제 정보 영역으로 수정. -->
+				<div class="tbl_wrap pay_wrap">
+					<div class="tbl_tit">
+						<h3>결제 정보</h3>
+						<strong class="pay"><span th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></span>원</strong>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="227">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<td>
+										<dl>
+											<!-- 210415_ 변경 : 결제정보 테이블 내용 변경 -->
+											<div>
+												<dt>배송비</dt>
+												<dd>
+													<div>
+														<span th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></span>원
+													</div>
+												</dd>
+											</div>
+	<!--										<div>-->
+	<!--											<dt>제휴 할인</dt>-->
+	<!--											<dd>-->
+	<!--												<div>-->
+	<!--													<span>-123,456,789</span>원-->
+	<!--												</div>-->
+	<!--											</dd>-->
+	<!--										</div>-->
+											<div>
+												<dt>결제수단</dt>
+												<dd>
+													<div>
+														<span th:if="${oneData.payMeans == 'G014_30'}" th:text="|${oneData.payMeansNm}(${oneData.cardNm}) / ${oneData.cardMips}|"></span>
+														<span th:if="${oneData.payMeans == 'G014_60'}" th:text="${oneData.payMeansNm}"></span>
+													</div>
+												</dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<th:block th:if="${oneData.payMeans == 'G014_30'}">
+							<button type="button" class="btn btn_default" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
+						</th:block>
+					</div>
+				<!-- 210415_ 추가 : 결제정보 안내 텍스트 추가/ [ .desc_txt ] 제거 -->
+				<p class="txt_ref">NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+				</div>
+			</div>
+		</th:block>
 		<div class="inner">
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"><span>확인</span></button></div>
 		</div>
@@ -244,6 +302,7 @@
 	/*<![CDATA[*/
 	let addrGb = '';
 	let memoGb = '';
+	let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 
 	$(document).ready(function() {
 		// 타이틀명

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

@@ -60,7 +60,7 @@
 											<div class="badge_wrap">
 												<em class="tag primary" th:if="${returnDtl.shotDelvYn == 'Y'}">총알배송</em>
 												<em class="tag" 		th:if="${returnDtl.shotDelvYn == 'N' and returnDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
-												<em class="tag" 		th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</span>
+												<em class="tag" 		th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</em>
 											</div>
 										</div>
 										<div class="name" th:text="${returnDtl.goodsNm}"></div>
@@ -336,6 +336,15 @@ var delvMemoSet = function(delvMemoObj) {
 	});
 	
 }
+
+//회수조회_팝업 210504_추가
+$(document).on('click','#btn_reclaim_pop',function(e){
+	$("#reclaimPop").modal("show");
+	return false;
+});
+$("#reclaimPop_close").click(function() {
+	$("#reclaimPop").modal("hide");
+});
 /*]]>*/
 </script>
 

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

@@ -60,7 +60,7 @@
 								<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)">
+								<a href="javascript:void(0);" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 									</div>

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

@@ -40,7 +40,7 @@
 					<th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_detail">
-								<a href="">
+								<a href="javascript:void(0)" th:attr="goodsCd=${exchange.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + exchange.sysImgNm}" width="100%" alt="">
 									</div>

+ 4 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -67,7 +67,7 @@
 								<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)">
+								<a href="javascript:void(0)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 									</div>
@@ -950,11 +950,13 @@
 	let paymentInfo 		= [[${paymentInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
-	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	//let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let kcpReceiptUrl 		= [[${kcpReceiptUrl}]];
 	let jsonObj 			= {};
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 	$(document).ready(function() {
+		mcxDialog.alert(kcpReceiptUrl);
 		// 타이틀명
 		$('#htopTitle').text('주문상세');
 		

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

@@ -44,7 +44,7 @@
 					<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_detail">
-								<a href="">
+								<a href="javascript:void(0)" th:attr="goodsCd=${return.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + return.sysImgNm}" width="100%" alt="">
 									</div>

+ 7 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html

@@ -157,6 +157,11 @@
 /*<![CDATA[*/
 	
 	$(document).ready( function() {
+		/* let reviewAttchSq = 0; 
+		if (!gagajf.isNull( [[${review.rvAtcSq}]])){
+			reviewAttchSq = [[${review.rvAtcSq}]];
+		
+		} */
 		 //슬라이드 - 포토,영상리뷰팝업 
         var photoreviewdetailSwiper = new Swiper('.pd_photoreviewdetail_pop .area_slider .swiper-container', {
             observer: true,
@@ -166,7 +171,9 @@
                 el: '.swiper-pagination',
                 type: 'fraction',
             },
+         /*    photoreviewdetailSwiper.slideTo(reviewAttchSq, 0, false); */
         });
+		 
         // 포토,베스트리뷰숨김
         var review_open=$(".btn_review_open");
         $(document).on('click','.btn_review_open',function(e){

+ 151 - 151
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -108,145 +108,145 @@
 				}	
 				var html = '';
 				$.each(result.dataList2, function(idx, item) {
-					html += '	<div class="part_goods">';
-					html += '		<div class="goods_section">';
-					html += '			<div class="goods_detail">';
-					html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >';
-					html += '					<div class="thumb_box">';
-					html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">';
-					html += '					</div>';
-					html += '					<div class="info_box">';
-					html += '						<div class="od_name">';
-					html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span>구매</div>';
-					html += '							<div class="brand">';
-					html += '								<span>'+item.brandNm+'</span>';
-					html += '							</div>';
-					html += '							<div class="name">'+item.goodsNm+'</div>';
-					html += '						</div>';
-					html += '						<div class="od_opt">';
-					html += '							<div class="option">';
+					html += '	<div class="part_goods">\n';
+					html += '		<div class="goods_section">\n';
+					html += '			<div class="goods_detail">\n';
+					html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >\n';
+					html += '					<div class="thumb_box">\n';
+					html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">\n';
+					html += '					</div>\n';
+					html += '					<div class="info_box">\n';
+					html += '						<div class="od_name">\n';
+					html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span>구매</div>\n';
+					html += '							<div class="brand">\n';
+					html += '								<span>'+item.brandNm+'</span>\n';
+					html += '							</div>\n';
+					html += '							<div class="name">'+item.goodsNm+'</div>\n';
+					html += '						</div>\n';
+					html += '						<div class="od_opt">\n';
+					html += '							<div class="option">\n';
 					if (item.goodsType =='G056_S') {
 						$.each(item.colorNmArr, function (index2, option) {
 							html += '							<em>' + item.itemNmArr[index2] + ' / ' + option +'</em>\n';
 						})
 					}else{
-						html += '							<em>'+item.colorNm+'</em>     ';
+						html += '							<em>'+item.colorNm+'</em>\n';
 					}
-					html += '							</div>';
-					html += '						</div>';
-					html += '					</div>';
-					html += '				</a>';
-					html += '			</div>											';
-					html += '		</div>';
-					html += '	</div>';
-					html += '	<div class="reviewMy">';
-					html += '		<div class="info_box">';
-					html += '			<div class="star_score">';
-					html += '				<span class="star">';
-					html += '					<em class="progbar" style="width:'+(item.score*20)+'%;"></em> ';
-					html += '				</span>';
-					html += '			</div>';
-					html += '			<div class="writer">';
-					html += '				<span class="wr_date">'+item.regDt+'</span>';
-					html += '			</div>';
-					html += '		</div>';
-					html += '		<div class="response_box">';
-					html += '			<div>';
-					html += '				<dl>';
-					html += '					<div>';
-					html += '						<dt>구매옵션</dt>';
-					html += '						<dd>'+item.colorNm+'</dd>';
-					html += '					</div>';
-					html += '					<div>';
-					html += '						<dt>키/몸무게</dt>';
-					html += '						<dd>'+item.height+'cm/'+item.weight+'kg</dd>';
-					html += '					</div>';
-					html += '				</dl>';
-					html += '			</div>';
-					html += '		</div>';
+					html += '							</div>\n';
+					html += '						</div>\n';
+					html += '					</div>\n';
+					html += '				</a>\n';
+					html += '			</div>\n											';
+					html += '		</div>\n';
+					html += '	</div>\n';
+					html += '	<div class="reviewMy">\n';
+					html += '		<div class="info_box">\n';
+					html += '			<div class="star_score">\n';
+					html += '				<span class="star">\n';
+					html += '					<em class="progbar" style="width:'+(item.score*20)+'%;"></em>\n';
+					html += '				</span>\n';
+					html += '			</div>\n';
+					html += '			<div class="writer">\n';
+					html += '				<span class="wr_date">'+item.regDt+'</span>\n';
+					html += '			</div>\n';
+					html += '		</div>\n';
+					html += '		<div class="response_box">\n';
+					html += '			<div>\n';
+					html += '				<dl>\n';
+					html += '					<div>\n';
+					html += '						<dt>구매옵션</dt>\n';
+					html += '						<dd>'+item.colorNm+'</dd>\n';
+					html += '					</div>\n';
+					html += '					<div>\n';
+					html += '						<dt>키/몸무게</dt>\n';
+					html += '						<dd>'+item.height+'cm/'+item.weight+'kg</dd>\n';
+					html += '					</div>\n';
+					html += '				</dl>\n';
+					html += '			</div>\n';
+					html += '		</div>\n';
 					if (attachList != null && attachList.length >0) {
-						html += '		<div class="photo_box">';
-						html += '			<div class="photo_list">';
-						html += '				<ul>';
+						html += '		<div class="photo_box">\n';
+						html += '			<div class="photo_list">\n';
+						html += '				<ul>\n';
 						for (var i = 0; i < attachList.length; i++) {
 							if (attachList[i].reviewSq == item.reviewSq) {
-								html += '					<li>';
-								html += '						<a>';
-								html += '							<div class="pic">';
+								html += '					<li>\n';
+								html += '						<a>\n';
+								html += '							<div class="pic">\n';
 								if (attachList[i].fileGb == 'M') {
-									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>\n';
 								}else{
-									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>\n';
 								}
 								
-								html += '							</div>';
-								html += '						</a>';
-								html += '					</li>';
+								html += '							</div>\n';
+								html += '						</a>\n';
+								html += '					</li>\n';
 							}
 						}
-						html += '				</ul>';
-						html += '			</div>';
-						html += '		</div>';
+						html += '				</ul>\n';
+						html += '			</div>\n';
+						html += '		</div>\n';
 					}
-					html += '		<div class="txt_review_box" id="admin_'+item.reviewSq+'">';
-					html += '			<p>'+item.reviewContent.escapeHtml()+'</p>';
-					html += '		</div>';
-					html += '		<div  class="response_box2">';
-					html += '			<div>';
-					html += '				<dl class="clear">';
+					html += '		<div class="txt_review_box" id="admin_'+item.reviewSq+'">\n';
+					html += '			<p>'+item.reviewContent.escapeHtml()+'</p>\n';
+					html += '		</div>\n';
+					html += '		<div  class="response_box2">\n';
+					html += '			<div>\n';
+					html += '				<dl class="clear">\n';
 					if (item.sizeGb == 'T' || item.sizeGb == 'B' || item.sizeGb == 'S') {
-						html += '					<div>';
-						html += '						<dt>사이즈</dt>';
-						html += '						<dd>'+item.scoreSize+'</dd>';
-						html += '					</div>';
-						html += '					<div>';
-						html += '						<dt>컬러</dt>';
-						html += '						<dd>'+item.scoreColor+'</dd>';
-						html += '					</div>';
+						html += '					<div>\n';
+						html += '						<dt>사이즈</dt>\n';
+						html += '						<dd>'+item.scoreSize+'</dd>\n';
+						html += '					</div>\n';
+						html += '					<div>\n';
+						html += '						<dt>컬러</dt>\n';
+						html += '						<dd>'+item.scoreColor+'</dd>\n';
+						html += '					</div>\n';
 					}
 					if (item.sizeGb == 'T' || item.sizeGb == 'B') {
-						html += '					<div>';
-						html += '						<dt>핏</dt>';
-						html += '						<dd>'+item.scoreFit+'</dd>';
-						html += '					</div>';
-						html += '					<div>';
-						html += '						<dt>두께감</dt>';
-						html += '						<dd>'+item.scoreThick+'</dd>';
-						html += '					</div>';
+						html += '					<div>\n';
+						html += '						<dt>핏</dt>\n';
+						html += '						<dd>'+item.scoreFit+'</dd>\n';
+						html += '					</div>\n';
+						html += '					<div>\n';
+						html += '						<dt>두께감</dt>\n';
+						html += '						<dd>'+item.scoreThick+'</dd>\n';
+						html += '					</div>\n';
 					}
 					if (item.sizeGb == 'S') {
-						html += '					<div>';
-						html += '						<dt>무게감</dt>';
-						html += '						<dd>'+item.scoreWeight+'</dd>';
-						html += '					</div>';
-						html += '					<div>';
-						html += '						<dt>볼넓이</dt>';
-						html += '						<dd>'+item.scoreBall+'</dd>';
-						html += '					</div>';
+						html += '					<div>\n';
+						html += '						<dt>무게감</dt>\n';
+						html += '						<dd>'+item.scoreWeight+'</dd>\n';
+						html += '					</div>\n';
+						html += '					<div>\n';
+						html += '						<dt>볼넓이</dt>\n';
+						html += '						<dd>'+item.scoreBall+'</dd>\n';
+						html += '					</div>\n';
 					}
-					html += '				</dl>';
-					html += '			</div>';
-					html += '		</div>';
+					html += '				</dl>\n';
+					html += '			</div>\n';
+					html += '		</div>\n';
 					if (item.admRpl != null && item.admRpl != '') {
-						html += '		<div class="reply_box">';
-						html += '			<div class="reply">';
-						html += '				<div class="reply_writer">';
-						html += '					<span class="wr_name">관리자</span>';
-						html += '					<span class="wr_date">'+item.admRplDt+'</span>';
-						html += '				</div>';
-						html += '				<div class="reply_txt">';
-						html += '					<p>'+item.admRpl.escapeHtml()+'</p>';
-						html += '				</div>';
-						html += '			</div>';
-						html += '		</div>';
+						html += '		<div class="reply_box">\n';
+						html += '			<div class="reply">\n';
+						html += '				<div class="reply_writer">\n';
+						html += '					<span class="wr_name">관리자</span>\n';
+						html += '					<span class="wr_date">'+item.admRplDt+'</span>\n';
+						html += '				</div>\n';
+						html += '				<div class="reply_txt">\n';
+						html += '					<p>'+item.admRpl.escapeHtml()+'</p>\n';
+						html += '				</div>\n';
+						html += '			</div>\n';
+						html += '		</div>\n';
 					}
-					html += '		<div class="goods_btn_wrap btn_group_flex">';
+					html += '		<div class="goods_btn_wrap btn_group_flex">\n';
 					if (item.admRpl == null || item.admRpl == '') {
-						html += '			<div><button type="button" id="btn_review_delete" class="btn btn_dark" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+',\''+item.goodsCd+'\','+item.reviewSq+')"><span>리뷰 수정</span></button></div> ';
+						html += '			<div><button type="button" id="btn_review_delete" class="btn btn_dark" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+',\''+item.goodsCd+'\','+item.reviewSq+')"><span>리뷰 수정</span></button></div>\n';
 					}
-					html += '			<div><button type="button" id="btn_review_delete" class="btn btn_default" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></div> ';
-					html += '		</div>';
-					html += '	</div>';
+					html += '			<div><button type="button" id="btn_review_delete" class="btn btn_default" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></div>\n';
+					html += '		</div>\n';
+					html += '	</div>\n';
 				});
 				
 				$('#reviewList').append(html);
@@ -261,13 +261,13 @@
 				
 			}else{
 				var html = '';
-				html += '<div class="nodata" id="nodata1">';
-				html += '	<div class="txt_box">';
+				html += '<div class="nodata" id="nodata1">\n';
+				html += '	<div class="txt_box">\n';
 				html += '		<p>';
 				html += '			작성한 리뷰가 없습니다.<br>';
 				html += '		</p>';
-				html += '	</div>';
-				html += '</div>';
+				html += '	</div>\n';
+				html += '</div>\n';
 				$('#btnMore2').parent().hide();
 				$('#btnMore').parent().hide();
 				$('#reviewList').append(html);
@@ -280,42 +280,42 @@
 			if (result.paging1.pageable.pageNo == 1){
 				$('#reviewList').html('');
 			}	
-			var html = '	<div class="part_goods">';
+			var html = '	<div class="part_goods">\n';
 			$.each(result.dataList1, function(idx, item) {
-				html += '		<div class="goods_section">';
-				html += '			<div class="goods_detail">';
-				html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">';
-				html += '					<div class="thumb_box">';
-				html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">';
-				html += '					</div>';
-				html += '					<div class="info_box">';
-				html += '						<div class="od_name">';
-				html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>';
-				html += '							<div class="brand">';
-				html += '								<span>'+item.brandNm+'</span>';
-				html += '							</div>';
-				html += '							<div class="name">'+item.goodsNm+'</div>';
-				html += '						</div>';
-				html += '						<div class="od_opt">';
-				html += '							<div class="option">';
+				html += '		<div class="goods_section">\n';
+				html += '			<div class="goods_detail">\n';
+				html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">\n';
+				html += '					<div class="thumb_box">\n';
+				html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">\n';
+				html += '					</div>\n';
+				html += '					<div class="info_box">\n';
+				html += '						<div class="od_name">\n';
+				html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>\n';
+				html += '							<div class="brand">\n';
+				html += '								<span>'+item.brandNm+'</span>\n';
+				html += '							</div>\n';
+				html += '							<div class="name">'+item.goodsNm+'</div>\n';
+				html += '						</div>\n';
+				html += '						<div class="od_opt">\n';
+				html += '							<div class="option">\n';
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em\n';
+						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em>\n';
 					})
 				}else{
-					html += '							<em>'+item.colorNm+'</em>     ';
+					html += '							<em>'+item.colorNm+'</em>\n';
 				}
-				html += '							</div>';
-				html += '						</div>';
-				html += '					</div>';
-				html += '				</a>';
-				html += '			</div>';
-				html += '			<div class="goods_btn_wrap btn_group_flex">';
-				html += '				<div><button type="button" class="btn btn_default" onclick="fnReviewCreate('+item.ordNo+','+item.ordDtlNo+',\'' + item.goodsCd + '\')"><span>리뷰쓰기(</span><em>'+item.remainDt+'</em><span>일 남음)</span></button></div>';
-				html += '			</div>';
-				html += '		</div>';
+				html += '							</div>\n';
+				html += '						</div>\n';
+				html += '					</div>\n';
+				html += '				</a>\n';
+				html += '			</div>\n';
+				html += '			<div class="goods_btn_wrap btn_group_flex">\n';
+				html += '				<div><button type="button" class="btn btn_default" onclick="fnReviewCreate('+item.ordNo+','+item.ordDtlNo+',\'' + item.goodsCd + '\')"><span>리뷰쓰기(</span><em>'+item.remainDt+'</em><span>일 남음)</span></button></div>\n';
+				html += '			</div>\n';
+				html += '		</div>\n';
 			});
-			html += '	</div>';
+			html += '	</div>\n';
 			$('#reviewList').append(html);
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 				$('#btnMore').parent().show();
@@ -325,13 +325,13 @@
 			}
 		}else{
 			var html = '';
-			html += '<div class="nodata" id="nodata1">';
-			html += '	<div class="txt_box">';
+			html += '<div class="nodata" id="nodata1">\n';
+			html += '	<div class="txt_box">\n';
 			html += '		<p>';
 			html += '			작성 가능한 리뷰가 없습니다.<br>';
-			html += '		</p>';
-			html += '	</div>';
-			html += '</div>';
+			html += '		</p>\n';
+			html += '	</div>\n';
+			html += '</div>\n';
 			
 			$('#reviewList').append(html);
 			$('#btnMore').parent().hide();

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

@@ -42,7 +42,7 @@
 					<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_detail">
-								<a href="">
+								<a href="javascript:void(0)" th:attr="goodsCd=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + cancel.sysImgNm + '?RS=90'}" width="100%" alt="">
 									</div>

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

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

+ 60 - 2
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html

@@ -46,7 +46,7 @@
 							<p class="dlvr_desc" th:text="|${exchangeDtl.chgDate} ${exchangeDtl.chgTime}|"></p>
 						</div>
 						<div class="goods_detail">
-							<a href="">
+							<a href="javascript:void(0)" th:attr="goodsCd=${exchangeDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 								<div class="thumb_box">
 									<img th:src="${imageUrl + '/' + exchangeDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
 								</div>
@@ -57,7 +57,7 @@
 											<div class="badge_wrap">
 												<em class="tag primary" th:if="${exchangeDtl.shotDelvYn == 'Y'}">총알배송</em>
 												<em class="tag" 		th:if="${exchangeDtl.shotDelvYn == 'N' and exchangeDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
-												<em class="tag" 		th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</span>
+												<em class="tag" 		th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</em>
 											</div>
 										</div>
 										<div class="name" th:text="${exchangeDtl.goodsNm}"></div>
@@ -224,6 +224,64 @@
 				</div>
 			</div>
 		</th:block>
+		<th:block th:if="${not #strings.isEmpty(oneData.addPayCost)}">
+			<div class="inner">
+				<!-- 210409_수정 : 환불 정보 -> 결제 정보 영역으로 수정. -->
+				<div class="tbl_wrap pay_wrap">
+					<div class="tbl_tit">
+						<h3>결제 정보</h3>
+						<strong class="pay"><span th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></span>원</strong>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="227">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<td>
+										<dl>
+											<!-- 210415_ 변경 : 결제정보 테이블 내용 변경 -->
+											<div>
+												<dt>배송비</dt>
+												<dd>
+													<div>
+														<span th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></span>원
+													</div>
+												</dd>
+											</div>
+	<!--										<div>-->
+	<!--											<dt>제휴 할인</dt>-->
+	<!--											<dd>-->
+	<!--												<div>-->
+	<!--													<span>-123,456,789</span>원-->
+	<!--												</div>-->
+	<!--											</dd>-->
+	<!--										</div>-->
+											<div>
+												<dt>결제수단</dt>
+												<dd>
+													<div>
+														<span th:if="${oneData.payMeans == 'G014_30'}" th:text="|${oneData.payMeansNm}(${oneData.cardNm}) / ${oneData.cardMips}|"></span>
+														<span th:if="${oneData.payMeans == 'G014_60'}" th:text="${oneData.payMeansNm}"></span>
+													</div>
+												</dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<th:block th:if="${oneData.payMeans == 'G014_30'}">
+							<button type="button" class="btn btn_default" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
+						</th:block>
+					</div>
+				<!-- 210415_ 추가 : 결제정보 안내 텍스트 추가/ [ .desc_txt ] 제거 -->
+				<p class="txt_ref">NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+				</div>
+			</div>
+		</th:block>
 		<div class="inner">
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
 		</div>

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

@@ -55,7 +55,7 @@
 											<div class="badge_wrap">
 												<em class="tag primary" th:if="${returnDtl.shotDelvYn == 'Y'}">총알배송</em>
 												<em class="tag" 		th:if="${returnDtl.shotDelvYn == 'N' and returnDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
-												<em class="tag" 		th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</span>
+												<em class="tag" 		th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</em>
 											</div>
 										</div>
 										<div class="name" th:text="${returnDtl.goodsNm}"></div>
@@ -270,6 +270,7 @@
 /*<![CDATA[*/
 let oneData = [[${oneData}]];
 var isLogin = [[${isLogin}]];
+let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 
 $(document).ready(function() {
 	// 타이틀명

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

@@ -597,7 +597,8 @@
 	let paymentInfo 		= [[${paymentInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
-	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	//let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let kcpReceiptUrl		= [[${kcpReceiptUrl}]];
 	let jsonObj 			= {};
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 

+ 3 - 10
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -336,8 +336,8 @@
 			<div class="inner wide">
 				<div class="btn_group btn_group_flex">
 					<div>
-						<button type="button" class="btn btn_primary">
-							동의 후 <span class="total_price" id="btn_payment">0</span>원 결제하기
+						<button type="button" class="btn btn_primary" id="btn_payment">
+							동의 후 <span class="total_price">0</span>원 결제하기
 						</button>
 					</div>
 				</div>
@@ -354,13 +354,6 @@
 <div id="couponSelectPop02" class="popup_box couponSelectPop couponSelectPop02"></div>
 <!-- //배송비 쿠폰선택_팝업 -->
 
-<!-- 카카오페이 iframe -->
-<iframe name="kakaoPayiFrame" id="kakaoPayiFrame" style="display:block; width:100vw; height:100vh;"></iframe>
-<!-- //카카오페이 iframe -->
-<!-- 네이버페이 iframe -->
-<iframe name="naverPayiFrame" id="naverPayiFrame" style="display:block; width:100vw; height:100vh;"></iframe>
-<!-- //네이버페이 iframe -->
-
 <script th:inline="javascript">
 // 배송관련정보 변수선언
 var cartGoodsList		= [[${cartGoodsList}]]			// 배송목록
@@ -2360,7 +2353,7 @@ var custCpnSumAmtCal = function() {
 	$("#realOrdAmt").text(realOrdSumAmt.addComma()); 					// 총 결제 예정 금액
 	$("#orderForm .realOrdAmt").text(realOrdSumAmt.addComma()); 		// 총 결제 예정 금액
 	$("#orderForm .orgGoodsSumAmt").text(orgGoodsSumAmt.addComma());
-	$("#orderForm #btn_payment").text(realOrdSumAmt.addComma());		// 총 결제 예정 금액
+	$("#orderForm #btn_payment span").text(realOrdSumAmt.addComma());	// 총 결제 예정 금액
 	$("#orderForm .dcSumAmt").text(totDcSumAmt.addComma());				// 할인금액합계
 	
 	var tempSavePnt			= savePntSumAmt - prePntDcAmt;

+ 45 - 1
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -17,8 +17,8 @@
  *******************************************************************************
  -->
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
-<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
 <main role="" id="" class="container dp">
 			<section class="content">
 				<div class="inner">
@@ -206,6 +206,47 @@
 	<div class="modal pop_full photo_comment_popup" id="photo_full_popup" tabindex="-1" role="dialog" aria-labelledby="comment_popup" aria-hidden="true">
 		
 	</div>
+	<!-- (공통) 공유팝업 -->
+		<div class="modal fade" id="tglShare" tabindex="-1" role="dialog"
+			aria-labelledby="aModalLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content">
+					<div class="modal-header">
+						<h5 class="modal-title" id="aModalLabel">공유하기</h5>
+					</div>
+					<div class="modal-body">
+						<!-- toggle contents -->
+						<div id="layerShare" class="setShare open"
+							th:with="stylelUrl=${@environment.getProperty('domain.front')},  planView=${@environment.getProperty('upload.image.view')}">
+							<span>
+								<button type="button" id="kakao-link-btn" class="kk"
+									th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainMimg}');|">
+									<span>카카오톡</span>
+								</button>
+								<button type="button" class="fb"
+									th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+									<span>페이스북</span>
+								</button>
+								<button type="button" class="tw"
+									th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}',  '${planInfo.planNm+ '#style24몰'}', '', '');|">
+									<span>트위터</span>
+								</button>
+								<button type="button" class="url btn_copy">
+									<span>URL</span>
+								</button>
+							</span>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<script>
+			// 공유팝업
+			$('.share_btn').click(function(e){
+				e.preventDefault();
+				$('#tglShare').modal("show");
+			});
+		</script>
 		
 <th:block th:each="a, template : ${templateOrd}">
 	<th:block th:if="${a.tmplType == 'G082_51'}">
@@ -950,6 +991,9 @@ $(document).ready(function(){
 		$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
 	});
 
+	$('.btn_copy').bind('click', function() {
+		copyToClipboard();
+	});
 	
 	//상단 빅배너 슬라이드
 	var big_banner_slide = new Swiper('.big_banner_slide .swiper-container', {

+ 42 - 1
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html

@@ -17,8 +17,8 @@
  *******************************************************************************
  -->
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
-<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
 	<main role="" id="" class="container dp">
 			<section class="content dp_detail_visual">
 				<div class="inner">
@@ -154,6 +154,47 @@
 					</div>
 				</div>
 			</section>
+			<!-- (공통) 공유팝업 -->
+		<div class="modal fade" id="tglShare" tabindex="-1" role="dialog"
+			aria-labelledby="aModalLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content">
+					<div class="modal-header">
+						<h5 class="modal-title" id="aModalLabel">공유하기</h5>
+					</div>
+					<div class="modal-body">
+						<!-- toggle contents -->
+						<div id="layerShare" class="setShare open"
+							th:with="stylelUrl=${@environment.getProperty('domain.front')},  planView=${@environment.getProperty('upload.image.view')}">
+							<span>
+								<button type="button" id="kakao-link-btn" class="kk"
+									th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainMimg}');|">
+									<span>카카오톡</span>
+								</button>
+								<button type="button" class="fb"
+									th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+									<span>페이스북</span>
+								</button>
+								<button type="button" class="tw"
+									th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}',  '${planInfo.planNm+ '#style24몰'}', '', '');|">
+									<span>트위터</span>
+								</button>
+								<button type="button" class="url btn_copy">
+									<span>URL</span>
+								</button>
+							</span>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<script>
+			// 공유팝업
+			$('.share_btn').click(function(e){
+				e.preventDefault();
+				$('#tglShare').modal("show");
+			});
+		</script>
 		</main>	<script th:inline="javascript">
 	/*<![CDATA[*/
 	let today = new Date();   

+ 43 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html

@@ -17,6 +17,7 @@
  *******************************************************************************
  -->
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
 <main role="" id="" class="container ev">
 			<section class="content renew">
@@ -197,6 +198,48 @@
 					</div>
 				</div>
 			</section>
+			
+				<!-- (공통) 공유팝업 -->
+		<div class="modal fade" id="tglShare" tabindex="-1" role="dialog"
+			aria-labelledby="aModalLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content">
+					<div class="modal-header">
+						<h5 class="modal-title" id="aModalLabel">공유하기</h5>
+					</div>
+					<div class="modal-body">
+						<!-- toggle contents -->
+						<div id="layerShare" class="setShare open"
+							th:with="stylelUrl=${@environment.getProperty('domain.front')},  planView=${@environment.getProperty('upload.image.view')}">
+							<span>
+								<button type="button" id="kakao-link-btn" class="kk"
+									th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainMimg}');|">
+									<span>카카오톡</span>
+								</button>
+								<button type="button" class="fb"
+									th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+									<span>페이스북</span>
+								</button>
+								<button type="button" class="tw"
+									th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}',  '${planInfo.planNm+ '#style24몰'}', '', '');|">
+									<span>트위터</span>
+								</button>
+								<button type="button" class="url btn_copy">
+									<span>URL</span>
+								</button>
+							</span>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<script>
+			// 공유팝업
+			$('.share_btn').click(function(e){
+				e.preventDefault();
+				$('#tglShare').modal("show");
+			});
+		</script>
 		</main>
 <script th:inline="javascript">
 let pollList = [[${pollList}]];

+ 5 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -387,6 +387,11 @@ $(document).ready(function(){
             $(this).addClass('on');
 		});
 	});
+  	//210510_추가 : 토스트 팝업 button 클릭 시 팝업 닫기.
+	$(document).on('click','.popup_box.odDatePop .button_list button',function(){
+		$(this).parents('.popup_box.odDatePop').hide().removeClass('active');
+		$("body").css({"overflow":"visible"});
+	})
     
     $("#bulletShipPop_close").click(function() {
         $.modal.close();

+ 35 - 0
src/main/webapp/WEB-INF/views/mob/popup/TrackWithdrawPopupFormMob.html

@@ -0,0 +1,35 @@
+<form class="form_wrap form_full" name="trackWithdrawForm" id="trackWithdrawForm">
+	<div class="modal-header htop" style="border-bottom: 1px solid rgba(0, 0, 0, 0.1);">
+		<h5 class="modal-title" id="reclaimLabel">회수 조회</h5>
+	</div>
+	<div class="modal-body">
+		<div class="pop_cont">
+			<!-- 210506_수정 : 테이블 변경 -->
+			<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>
+	</div>
+</form>

+ 43 - 2
src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html

@@ -87,6 +87,36 @@ var socialAddCart = function (obj) {
 	} 
 }
 
+var socialSetAddCart = function (obj) {
+
+	let cartGoodsList = [];
+	var optCdArr = $(obj).attr("optCd").split(",");
+	var compsGoodsCdArr = $(obj).attr("compsGoodsCd").split(",");
+	
+	let compsList = [];
+	let goodsList = {
+	cartCompsList : new Array()
+	}
+
+	for(let j = 0 ; j <  optCdArr.length ; j++) { 
+		let temp = new Object;
+		temp.goodsCd = $(obj).attr("goodsCd");
+		temp.optCd = optCdArr[j];
+		temp.goodsQty = $(obj).attr("minOrdQty");
+		temp.goodsType = "G056_S";
+		temp.itemCd =  compsGoodsCdArr[j];
+		temp.cartGb = "C";
+		temp.afLinkCd = $(obj).attr("afLinkCd");
+		temp.ithrCd = "";
+		temp.contentsLoc = "";
+		temp.planDtlSq = "";
+		compsList.push(temp);
+	}  
+
+	goodsList.cartCompsList = compsList;
+	cartGoodsList.push(goodsList);
+	cfnAddCart(cartGoodsList);
+}
 
 let fnGetSocialList = function(result) {
 	var html = '';
@@ -124,7 +154,14 @@ let fnGetSocialList = function(result) {
 		
 		html += '		</a>';
 		html += '			<div class="shopBag">';
-		html += '				<button class="btn btn_default" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'"><span>쇼핑백담기</span></button>';
+		if (item.goodsType == 'G056_N') {
+			html += '				<button class="btn btn_default" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'"><span>쇼핑백담기</span></button>';
+		}else if(item.goodsType == 'G056_D'){
+			html += '<button class="btn btn_default"  onclick="socialGoodsDeal()"><span>쇼핑백담기</span></button>';
+		}else{
+			html += '<button class="btn btn_default" onclick="socialSetAddCart(this)" compsGoodsCd=\''+item.compsGoodsCd+'\',goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'"><span>쇼핑백담기</span></button>';
+		}
+		
 		html += '			</div>';
 		html += '	</div>';
 		html += '</div>';
@@ -133,7 +170,11 @@ let fnGetSocialList = function(result) {
 	return html;
 }
 
-
+//딜상품일 경우 alert
+var socialGoodsDeal = function() {
+	mcxDialog.alert("해당 상품은 옵션 선택 후 쇼핑백 담기가 가능합니다.");
+	return;
+}
 
 var fnSocialListSearch = function() {
 	fnSocialInfiniteScrollInit();

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

@@ -207,7 +207,7 @@
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	let oneData = [[${oneData}]];
-	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 	let refundYn = [[${refundYn}]];
 
 	$(document).ready(function() {

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

@@ -273,7 +273,8 @@
 	let oneData = [[${oneData}]];
 	var isLogin = [[${isLogin}]];
 	let ordNo = oneData.ordNo;
-	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	//let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 	let jsonObj = {};
 
 	$(document).ready(function() {

+ 279 - 282
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -42,7 +42,7 @@
 									<div id="layerShare" class="setShare open">
 										<span>
 											<button type="button" class="kk"
-												th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainImg}');|">
+												th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainPimg}');|">
 												<span>카카오톡</span>
 											</button>
 											<button type="button" class="fb"
@@ -256,23 +256,23 @@ let planCornerList = [[${planCornerList}]];
 if(planCornerList.length>0){
 	var html = '';
 	
-	html += '<div class="cont_head">';
-	html += '     <div class="sticky_nav">';
-	html += '         <ul>    ';
+	html += '<div class="cont_head">\n';
+	html += '     <div class="sticky_nav">\n';
+	html += '         <ul>\n    ';
 	$.each(planCornerList, function(idx, item)  {
-		html += '             <li><a href="#brand'+(idx+1)+'">'+item.cornerNm+'</a></li>';
+		html += '             <li><a href="#brand'+(idx+1)+'">'+item.cornerNm+'</a></li>\n';
 	})
 	
-	html += '         </ul>';
-	html += '     </div>';
-	html += '</div>';
-	html += '<div class="cont_body">';
-	html += '     <div class="list_content">';
+	html += '         </ul>\n';
+	html += '     </div>\n';
+	html += '</div>\n';
+	html += '<div class="cont_body">\n';
+	html += '     <div class="list_content">\n';
 	$.each(planCornerList, function(idx, item)  {
-		html += '         <div id="brand'+(idx+1)+'" class="dp_item_list">';
-		html += '             <div class="item_header">';
-		html += '                 <h4>'+item.cornerNm+'</h4>';
-		html += '             </div>';
+		html += '         <div id="brand'+(idx+1)+'" class="dp_item_list">\n';
+		html += '             <div class="item_header">\n';
+		html += '                 <h4>'+item.cornerNm+'</h4>\n';
+		html += '             </div>\n';
 		html += '             <div class="itemsGrp';
 		if (item.cornerDispType == 'G045_1') {
 			html += ' cut1';
@@ -285,35 +285,35 @@ if(planCornerList.length>0){
 		}else if(item.cornerDispType == 'G045_5'){
 			html += ' cut5';
 		}
-		html += '">';
+		html += '">\n';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
 			if (item2.cornerNm == item.cornerNm) {
-				html += '                 <div class="item_prod">';
-				html += '                     <div class="item_state">';
+				html += '                 <div class="item_prod">\n';
+				html += '                     <div class="item_state">\n';
 				html += '		<button type="button" class="itemLike';
 				if(item2.likeIt == 'likeit'){
 					html += ' likeit';
 				}
 				html += ' "';
-				html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+				html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
 				
-				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
-				html += '                             <div class="itemPic">';
-				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
-				html += '                             </div>';
-				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
-				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
+				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">\n';
+				html += '                             <div class="itemPic">\n';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">\n';
+				html += '                             </div>\n';
+				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>\n';
+				html += '                             <div class="itemName">'+item2.goodsNm+'</div>\n';
 				html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
 				if (item2.currPrice != item2.listPrice) {
-					html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+					html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>\n';
 				}
 				if (item2.dcRate != 0) {
-					html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
+					html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>\n';
 				}
 				
 				
-				html += '                             </p>';
-				html += '                             <div class="itemcolorchip">';
+				html += '                             </p>\n';
+				html += '                             <div class="itemcolorchip">\n';
 				if(!gagajf.isNull(item2.colorChips)){
 					var colorArr = item2.colorChips.split(",");
 					var colorCd = '';
@@ -323,42 +323,40 @@ if(planCornerList.length>0){
 						colorCd = colorInfo[0];
 						rgbColor = colorInfo[1];
 						if(rgbColor=='#FFFFFF'){
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}else{
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}
 					}
 				}
-				html += '                             </div>';
+				html += '                             </div>\n';
 				if(!gagajf.isNull(item2.icon)){
 					var iconArr = item2.icon.split(",");
 					var iconGb = '';
 					var iconNm = '';
-					html += '	<p class="itemBadge">';
+					html += '	<p class="itemBadge">\n';
 					for(let i=0; i<iconArr.length; i++){
 						var iconInfo = iconArr[i].split(":");
 						iconGb = iconInfo[0];
 						iconNm = iconInfo[1];
-						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>\n';
 					}
-					html += '	</p>';
+					html += '	</p>\n';
 				}
 				if(item2.goodsTnm != null){
-					html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+					html += '			<div class="itemComment">'+item2.goodsTnm+'</div>\n';
 				}
-				html += '                         </a>';
-				html += '                     </div>';
-				html += '                 </div>';
+				html += '                         </a>\n';
+				html += '                     </div>\n';
+				html += '                 </div>\n';
 			}
 			
 		})
-		html += '             </div>';
-		html += '         </div>';
+		html += '             </div>\n';
+		html += '         </div>\n';
 	})
-	
-	html += '     </div>';
-	html += ' </div>';
-	
+	html += '     </div>\n';
+	html += ' </div>\n';
 	
 	$("#cornerList").append(html);
 	
@@ -368,68 +366,68 @@ if(review.length>0){
 	
 	var html = '';
 	
-	html += ' <div class="cont_head">';
-	html += ' 	<div>';
-	html += '		<h4>'+review[0].title+'</h4>';
-	html += ' 	</div>';
-	html += '	<div class="cont_body">';
-	html += ' 		<div class="review_list">';
+	html += ' <div class="cont_head">\n';
+	html += ' 	<div>\n';
+	html += '		<h4>'+review[0].title+'</h4>\n';
+	html += ' 	</div>\n';
+	html += '	<div class="cont_body">\n';
+	html += ' 		<div class="review_list">\n';
 	$.each(review, function(idx, item)  {
-		html += '		<div class="reviw_box">'
-		html += '			<div class="best_review">';
+		html += '		<div class="reviw_box">\n'
+		html += '			<div class="best_review">\n';
 		if(item.reviewSysImg!= null){
-			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">';
+			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'Y\', \'Y\',\''+item.reviewSq+'\');">\n';
 		}else{
-			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'N\',\''+item.reviewSq+'\');">';
+			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'Y\', \'N\',\''+item.reviewSq+'\');">\n';
 		}
 		
-		html += '					<div class="pic">';
+		html += '					<div class="pic">\n';
 		if(item.reviewSysImg!= null){
 			if (item.fileGb == 'M') { 
-				html += '								<span class="thumb mov" style="background-image: url('+ _uploadImageUrl+item.reviewSysImg +');"></span>';	
+				html += '								<span class="thumb mov" style="background-image: url('+ _uploadImageUrl+item.reviewSysImg +');"></span>\n';	
 			}else{
-				html += '								<span class="thumb" style="background-image: url('+ _uploadImageUrl +item.reviewSysImg +');"></span>';			
+				html += '								<span class="thumb" style="background-image: url('+ _uploadImageUrl +item.reviewSysImg +');"></span>\n';			
 			}
 		}else{
-			html += '								<span class="thumb" style="background-image: url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>';	
+			html += '								<span class="thumb" style="background-image: url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>\n';	
 		}
 		
-		html += '                   </div>';
-		html += '                  <div class="star_score">';
-		html += '                      <span class="star">';
-		html += '                          <em class="progbar" style="width:'+(item.score*20)+'%;"></em> <!-- 평점 style로 표기 -->';
-		html += '                      </span>';
+		html += '                   </div>\n';
+		html += '                  <div class="star_score">\n';
+		html += '                      <span class="star">\n';
+		html += '                          <em class="progbar" style="width:'+(item.score*20)+'%;"></em>\n';
+		html += '                      </span>\n';
 		if(item.bestYn == 'Y'){
-			html += '<em class="ico ico_besttag"></em>';	
+			html += '<em class="ico ico_besttag"></em>\n';	
 		}
-		html += '                  </div>';
-		html += '                  <div class="txt_best_review">';
-		html += '                      <p>'+item.reviewContent+'</p>';
-		html += '                  </div>';
-		html += '                  <div class="info_writer">';
-		html += '                      <span class="wr_id">'+item.maskingCustId+'</span>';
-		html += '                      <span class="wr_date">'+item.regDt+'</span>';
-		html += '                  </div>';
-		html += '              </a>';
-		html += '          </div>';
-		html += '          <div class="review_item">';
-		html += '              <div class="item_prod">';
-		html += '                  <div class="item_state">';
-		html += '                      <a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-		html += '                          <div class="itemPic">';
-		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
-		html += '                          </div>';
-		html += '                          <div class="itemName">'+item.goodsNm+'</div>';
-		html += '                          <p class="itemPrice">'+item.currPrice.addComma()+'</p>';
-		html += '                      </a>';
-		html += '                  </div>';
-		html += '              </div>';
-		html += '          </div>';
-		html += '      </div>  ';
+		html += '                  </div>\n';
+		html += '                  <div class="txt_best_review">\n';
+		html += '                      <p>'+item.reviewContent+'</p>\n';
+		html += '                  </div>\n';
+		html += '                  <div class="info_writer">\n';
+		html += '                      <span class="wr_id">'+item.maskingCustId+'</span>\n';
+		html += '                      <span class="wr_date">'+item.regDt+'</span>\n';
+		html += '                  </div>\n';
+		html += '              </a>\n';
+		html += '          </div>\n';
+		html += '          <div class="review_item">\n';
+		html += '              <div class="item_prod">\n';
+		html += '                  <div class="item_state">\n';
+		html += '                      <a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+		html += '                          <div class="itemPic">\n';
+		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+		html += '                          </div>\n';
+		html += '                          <div class="itemName">'+item.goodsNm+'</div>\n';
+		html += '                          <p class="itemPrice">'+item.currPrice.addComma()+'</p>\n';
+		html += '                      </a>\n';
+		html += '                  </div>\n';
+		html += '              </div>\n';
+		html += '          </div>\n';
+		html += '      </div>\n';
 	});
-	html += '       </div>                    ';
-	html += '	 </div>';
-	html += '</div>';
+	html += '       </div>\n                    ';
+	html += '	 </div>\n';
+	html += '</div>\n';
 
 	$("#G082_10").append(html);
 }
@@ -437,27 +435,27 @@ if(review.length>0){
 if(image.length>0){
 	var html = '';
 	
-	html += '<div class="cont_body">     ';
-	html += '    <div class="mid_banner">';
-	html += '        <div class="swiper-container">';
-	html += '            <div class="swiper-wrapper">';
+	html += '<div class="cont_body">\n     ';
+	html += '    <div class="mid_banner">\n';
+	html += '        <div class="swiper-container">\n';
+	html += '            <div class="swiper-wrapper">\n';
 	for (var i = 0; i < image.length; i++) {
-		html += '                	<div class="swiper-slide">';
+		html += '                	<div class="swiper-slide">\n';
 		if (image[i].linkOpenGb == 'M') {
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_self"><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
 		}else{
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank"><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
 		}
 		
-		html += '                	</div>';
+		html += '                	</div>\n';
 	}
-	html += '            </div>';
-	html += '        </div>';
-	html += '        <div class="swiper-button-prev"></div>';
-	html += '        <div class="swiper-button-next"></div>';
-	html += '        <div class="swiper-pagination"></div>';
-	html += '    </div>';
-	html += '</div>';
+	html += '            </div>\n';
+	html += '        </div>\n';
+	html += '        <div class="swiper-button-prev"></div>\n';
+	html += '        <div class="swiper-button-next"></div>\n';
+	html += '        <div class="swiper-pagination"></div>\n';
+	html += '    </div>\n';
+	html += '</div>\n';
 	
 	
 	$("#G082_30").append(html);
@@ -476,55 +474,55 @@ if(goods1.length>0){
 	for (var i = 0; i < template.length; i++) {
 		var html = '';
 		if(template[i].tmplType == 'G082_50' && array[0] == template[i].planContSq && typeof array[0] != 'undefined') {
-			html += '<div class="cont_head">';
-			html += '	<div>';
-			html += '        <h4>';
+			html += '<div class="cont_head">\n';
+			html += '	<div>\n';
+			html += '        <h4>\n';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 				if (template[i].linkOpenGb == 'M') { //본창
-					html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 				}else{
-					html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 				}
 				
 			}else{
-				html += '        <a href="javascript:void(0)">'+template[i].title+'</a>';
+				html += '        <a href="javascript:void(0)">'+template[i].title+'</a>\n';
 			}
-			html += '		</h4>';
-			html += '    </div>';
-			html += '</div>';
-			html += '<div class="cont_body">';
-			html += '    <div class="dp_listItems_cont type1">';
-			html += '        <ul>';
+			html += '		</h4>\n';
+			html += '    </div>\n';
+			html += '</div>\n';
+			html += '<div class="cont_body">\n';
+			html += '    <div class="dp_listItems_cont type1">\n';
+			html += '        <ul>\n';
 		$.each(goods1, function(idx, item)  {
 			if (item.planContSq == template[i].planContSq) {
-				html += '            <li>';
-				html += '                <div class="dp_listItems">';
-				html += '                    <div class="dp_listItems_img">';
-				html += '                        <img src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'" alt="">';
-				html += '                    </div>';
-				html += '                    <div class="dp_listItems_info">';
-				html += '                        <div class="dp_listItems_brand">'+item.brandGroupNm+'</div>';
-				html += '                        <div class="dp_listItems_name">'+item.goodsNm+'<br></div>';
-				html += '                        <div class="dp_listItems_price">';
-				html += '                            <span class="price">'+item.currPrice.addComma()+'</span>';
+				html += '            <li>\n';
+				html += '                <div class="dp_listItems">\n';
+				html += '                    <div class="dp_listItems_img">\n';
+				html += '                        <img src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'" alt="">\n';
+				html += '                    </div>\n';
+				html += '                    <div class="dp_listItems_info">\n';
+				html += '                        <div class="dp_listItems_brand">'+item.brandGroupNm+'</div>\n';
+				html += '                        <div class="dp_listItems_name">'+item.goodsNm+'<br></div>\n';
+				html += '                        <div class="dp_listItems_price">\n';
+				html += '                            <span class="price">'+item.currPrice.addComma()+'</span>\n';
 				if (item.currPrice != item.listPrice) {
-					html += '                            <del>'+item.listPrice.addComma()+'</del>';
-					html += '                            <span class="percent">'+Math.floor(item.dcRate)+'%</span>';
+					html += '                            <del>'+item.listPrice.addComma()+'</del>\n';
+					html += '                            <span class="percent">'+Math.floor(item.dcRate)+'%</span>\n';
 				}
-				html += '                        </div>';
+				html += '                        </div>\n';
 				if(item.goodsTnm != null){
-					html += '                        <div class="itemComment">'+item.goodsTnm+'</div>';
+					html += '                        <div class="itemComment">'+item.goodsTnm+'</div>\n';
 				}
-				html += '                        <div class="ui_row">';
-				html += '                            <button type="button" class="btn btn_default" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')"><span>자세히 보기</span></button>';
-				html += '                        </div>';
-				html += '                    </div>';
-				html += '                </div>';
-				html += '            </li>';
+				html += '                        <div class="ui_row">\n';
+				html += '                            <button type="button" class="btn btn_default" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')"><span>자세히 보기</span></button>\n';
+				html += '                        </div>\n';
+				html += '                    </div>\n';
+				html += '                </div>\n';
+				html += '            </li>\n';
 			}
 		});
-		html += '        </ul>';
-		html += '    </div>       ';
+		html += '        </ul>\n';
+		html += '    </div>\n       ';
 		html += '</div>';
 		$("#G082_50" +array[0]).append(html);
 	}
@@ -546,58 +544,58 @@ if(goods2.length>0){
 		var html = '';
 		
 		if(template[i].tmplType == 'G082_51' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
-			html += '<div class="cont_head">';
-			html += '	<div>';
-			html += '        <h4>';
+			html += '<div class="cont_head">\n';
+			html += '	<div>\n';
+			html += '        <h4>\n';
 				if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 					if (template[i].linkOpenGb == 'M') { //본창
-						html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>';
+						html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 					}else{
-						html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>';
+						html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 					}
 				}else{
-					html+='            <a href="javascript:void(0)">'+template[i].title+'</a>';
+					html+='            <a href="javascript:void(0)">'+template[i].title+'</a>\n';
 				}
-			html += '        </h4>';
-			html += '    </div>';
-			html += '</div>';
-			html += '<div class="cont_body">';
-			html += '    <div class="dp_listItems_cont type2">';
-			html += '        <div class="swiper-container">';
-			html += '            <div class="swiper-wrapper">';
+			html += '        </h4>\n';
+			html += '    </div>\n';
+			html += '</div>\n';
+			html += '<div class="cont_body">\n';
+			html += '    <div class="dp_listItems_cont type2">\n';
+			html += '        <div class="swiper-container">\n';
+			html += '            <div class="swiper-wrapper">\n';
 			$.each(goods2, function(idx, item) {
 				if (item.planContSq == template[i].planContSq) {
-					html += '                <div class="swiper-slide">';
-					html += '                    <div class="item_prod">';
-					html += '                        <div class="item_state">';
-					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-					html += '                                <div class="itemPic">';
-					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
-					html += '                                </div>';
-					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>';
-					html += '                                <div class="itemName">'+item.goodsNm+'</div>';
+					html += '                <div class="swiper-slide">\n';
+					html += '                    <div class="item_prod">\n';
+					html += '                        <div class="item_state">\n';
+					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+					html += '                                <div class="itemPic">\n';
+					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+					html += '                                </div>\n';
+					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+					html += '                                <div class="itemName">'+item.goodsNm+'</div>\n';
 					html += '                                <p class="itemPrice">'+item.currPrice.addComma();
 					if (item.currPrice != item.listPrice) {
-						html+='                                    <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
-						html+='                                    <span class=" itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+						html+='                                    <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
+						html+='                                    <span class=" itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 					}
-					html += '                                </p>';
+					html += '                                </p>\n';
 					if(item.goodsTnm != null){
-						html += '                        <div class="itemComment">'+item.goodsTnm+'</div>';
+						html += '                        <div class="itemComment">'+item.goodsTnm+'</div>\n';
 					}
-					html += '                            </a>';
-					html += '                        </div>';
-					html += '                    </div>';
-					html += '                </div>           ';
+					html += '                            </a>\n';
+					html += '                        </div>\n';
+					html += '                    </div>\n';
+					html += '                </div>\n           ';
 				}
 			});
-			html += '            </div>';
-			html += '        </div>';
-			html += '        <div class="swiper-button-prev"></div>';
-			html += '        <div class="swiper-button-next"></div>';
-			html += '        <div class="swiper-pagination"></div>';
-			html += '    </div>       ';
-			html += '</div>';
+			html += '            </div>\n';
+			html += '        </div>\n';
+			html += '        <div class="swiper-button-prev"></div>\n';
+			html += '        <div class="swiper-button-next"></div>\n';
+			html += '        <div class="swiper-pagination"></div>\n';
+			html += '    </div>\n       ';
+			html += '</div>\n';
 			$("#G082_51" +array[0]).append(html);
 		}
 		
@@ -618,59 +616,58 @@ if(goods4.length>0){
 	for (var i = 0; i < template.length; i++) {
 		var html = '';
 		if(template[i].tmplType == 'G082_52' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
-			html += '<div class="cont_head">';
-			html += '<div>';
-			html += '        <h4>';
+			html += '<div class="cont_head">\n';
+			html += '<div>\n';
+			html += '        <h4>\n';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 				if (template[i].linkOpenGb == "M") { //본창
-					html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 				}else{
-					html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>\n';
 				}
 			}else{
-				html+='            <a href="javascript:void(0)">'+template[i].title+'</a>';
+				html+='            <a href="javascript:void(0)">'+template[i].title+'</a>\n';
 			}
-			html += '        </h4>';
-			html += '    </div>';
-			html += '</div>';
-			html += '<div class="cont_body">';
-			html += '    <!-- 상품 노출 4열 type3 -->';
-			html += '    <div class="dp_listItems_cont type3">';
-			html += '        <div class="swiper-container">';
-			html += '            <div class="swiper-wrapper">';
+			html += '        </h4>\n';
+			html += '    </div>\n';
+			html += '</div>\n';
+			html += '<div class="cont_body">\n';
+			html += '    <div class="dp_listItems_cont type3">\n';
+			html += '        <div class="swiper-container">\n';
+			html += '            <div class="swiper-wrapper">\n';
 			$.each(goods4, function(idx, item) {
 				if (item.planContSq == template[i].planContSq) {
-					html += '                <div class="swiper-slide">';
-					html += '                    <div class="item_prod">';
-					html += '                        <div class="item_state">';
-					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-					html += '                                <div class="itemPic">';
-					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
-					html += '                                </div>';
-					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>';
-					html += '                                <div class="itemName">'+item.goodsNm+'</div>';
+					html += '                <div class="swiper-slide">\n';
+					html += '                    <div class="item_prod">\n';
+					html += '                        <div class="item_state">\n';
+					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+					html += '                                <div class="itemPic">\n';
+					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+					html += '                                </div>\n';
+					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+					html += '                                <div class="itemName">'+item.goodsNm+'</div>\n';
 					html += '                                <p class="itemPrice">'+item.currPrice.addComma();
 					if (item.currPrice != item.listPrice) {
-						html+='                                    <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
-						html+='                                    <span class=" itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+						html+='                                    <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
+						html+='                                    <span class=" itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 					}
-					html += '                                </p>';
+					html += '                                </p>\n';
 					if(item.goodsTnm != null){
-						html += '                        <div class="itemComment">'+item.goodsTnm+'</div>';
+						html += '                        <div class="itemComment">'+item.goodsTnm+'</div>\n';
 					}
-					html += '                            </a>';
-					html += '                        </div>';
-					html += '                    </div>';
-					html += '                </div>';
+					html += '                            </a>\n';
+					html += '                        </div>\n';
+					html += '                    </div>\n';
+					html += '                </div>\n';
 				}
 			});
-			html += '            </div>';
-			html += '        </div>';
-			html += '        <div class="swiper-button-prev"></div>';
-			html += '        <div class="swiper-button-next"></div>';
-			html += '        <div class="swiper-pagination"></div>';
-			html += '    </div>       ';
-			html += '</div>';
+			html += '            </div>\n';
+			html += '        </div>\n';
+			html += '        <div class="swiper-button-prev"></div>\n';
+			html += '        <div class="swiper-button-next"></div>\n';
+			html += '        <div class="swiper-pagination"></div>\n';
+			html += '    </div>\n       ';
+			html += '</div>\n';
 			$("#G082_52" +array[0]).append(html);
 			
 		}
@@ -683,58 +680,58 @@ if(goods4.length>0){
 if(coupon.length>0){
 	var html = '';
 	 
-	html += '<div class="cont_head">';
-	html += '	<div>';
-	html += '		<h4>'+coupon[0].title+'</h4>';
-	html += '	</div>';
-	html += '</div>';
-	html += '<div class="cont_body">';
-	html += '	<div class="coupon_list">';
-	html += '		<ul>';
+	html += '<div class="cont_head">\n';
+	html += '	<div>\n';
+	html += '		<h4>'+coupon[0].title+'</h4>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
+	html += '<div class="cont_body">\n';
+	html += '	<div class="coupon_list">\n';
+	html += '		<ul>\n';
 	$.each(coupon, function(idx, item) {
-		html += '			<li>';
-		html += '				<div class="coupon">';
-		html += '					<div>';
-		html += '						<p class="cp_name">'+item.cpnNm+'</p>';
-		html += '						<p class="cp_cont">';
-		html += '							<span><em>'+item.dcVal.addComma()+'</em>'+item.dcWay+'</span>';
-		html += '						</p>';
+		html += '			<li>\n';
+		html += '				<div class="coupon">\n';
+		html += '					<div>\n';
+		html += '						<p class="cp_name">'+item.cpnNm+'</p>\n';
+		html += '						<p class="cp_cont">\n';
+		html += '							<span><em>'+item.dcVal.addComma()+'</em>'+item.dcWay+'</span>\n';
+		html += '						</p>\n';
 		html += '						<p class="cp_condition">'+item.useCondition;
-		html += '								<span>'+item.issueCondition+'</span>';	
-		html += '						</p>';
-		html += '					</div>';
+		html += '								<span>'+item.issueCondition+'</span>\n';	
+		html += '						</p>\n';
+		html += '					</div>\n';
 		if (item.couponStat == '쿠폰받기') {
-			html += '					<button type="button" id="coupon_'+item.cpnId+'" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">'; 
-			html += '						<span>쿠폰받기</span>';								
-			html += '					</button>';			
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">\n'; 
+			html += '						<span>쿠폰받기</span>\n';								
+			html += '					</button>\n';			
 		}else{
 			html += '					<button type="button"';
-			html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>';  
-			html += '						<span>받기완료</span>';								
-			html += '					</button>';			
+			html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>\n';  
+			html += '						<span>받기완료</span>\n';								
+			html += '					</button>\n';			
 		}
-		html += '				</div>';
-		html += '				<button type="button" class="btn_underline"	id="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')">';
-		html += '					<span>사용안내</span>';
-		html += '				</button>';
-		html += '			</li>';
+		html += '				</div>\n';
+		html += '				<button type="button" class="btn_underline"	id="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')">\n';
+		html += '					<span>사용안내</span>\n';
+		html += '				</button>\n';
+		html += '			</li>\n';
 	});
-	html += '		</ul>';
-	html += '	</div>';
-	html += '</div>';
-	html += '<div class="content dp_announce line">                                                 ';
-	html += '    <div class="cont_head">                                                       ';
-	html += '        <div>                                                                     ';
-	html += '            <h4>유의사항</h4>                                                         ';
-	html += '        </div>                                                                    ';
-	html += '    </div>                                                                        ';
-	html += '    <div class="cont_body">                                                       ';
-	html += '        <div class="announce_txt">                                                ';
-	html += '            <div class="note_txt">                                                ';
-	html += '                <img src="/images/pc/ico_content_find.png" alt="유의사항">            ';
-	html += '                <p>유의사항</p>                                                       ';
-	html += '            </div>                                                                ';
-	html += '            <div class="announce_list">                                           ';
+	html += '		</ul>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
+	html += '<div class="content dp_announce line">\n                                                 ';
+	html += '    <div class="cont_head">\n                                                       ';
+	html += '        <div>\n                                                                     ';
+	html += '            <h4>유의사항</h4>\n                                                         ';
+	html += '        </div>\n                                                                    ';
+	html += '    </div>\n                                                                        ';
+	html += '    <div class="cont_body">\n                                                       ';
+	html += '        <div class="announce_txt">\n                                                ';
+	html += '            <div class="note_txt">\n                                                ';
+	html += '                <img src="/images/pc/ico_content_find.png" alt="유의사항">\n            ';
+	html += '                <p>유의사항</p>\n                                                       ';
+	html += '            </div>\n                                                                ';
+	html += '            <div class="announce_list">\n                                           ';
 	html += coupon[0].note;
 	html += '            </div>                                                                '; 
 	html += '        </div>                                                                    '; 
@@ -819,44 +816,44 @@ var fnSearchCallback = function (result) {
 	 $("#replyList").html('');
 	 if (result!=null) {
 		 var html = '';
-		 html += '<div class="cmt_list_tit">';
-		 html += '	<strong>댓글</strong><span class="cnt">('+result.replyCount.addComma()+')</span>';
-		 html += '</div>';
+		 html += '<div class="cmt_list_tit">\n';
+		 html += '	<strong>댓글</strong><span class="cnt">('+result.replyCount.addComma()+')</span>\n';
+		 html += '</div>\n';
 		 if (result.replyList.length>0) {
-			 html += '<ul class="cmt_list">';
+			 html += '<ul class="cmt_list">\n';
 			 $.each(result.replyList, function (idx, item) {
-				 html += '	<li>';
-				 html += '		<div class="cmt_top">';
-				 html += '			<span class="writer">'+item.maskingCustId+'</span>';
-				 html += '			<span class="date">'+item.entryDt+'</span>';
-				 html += '		</div>';
-				 html += '		<div class="cmt_cont">';
-				 html += '			<div class="img_wrap clear" onclick="fnImgAttach(this)">';
+				 html += '	<li>\n';
+				 html += '		<div class="cmt_top">\n';
+				 html += '			<span class="writer">'+item.maskingCustId+'</span>\n';
+				 html += '			<span class="date">'+item.entryDt+'</span>\n';
+				 html += '		</div>\n';
+				 html += '		<div class="cmt_cont">\n';
+				 html += '			<div class="img_wrap clear" onclick="fnImgAttach(this)">\n';
 				 if (result.replyAttachList.length>0) {
 					for (var i = 0; i < result.replyAttachList.length; i++) {
 						if(result.replyAttachList[i].planEntrySq == item.planEntrySq){
-							html += '				<span class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>';
+							html += '				<span class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>\n';
 						}
 					}	
 				 }
 				
-				 html += '			</div>';
-				 html += '			<p>'+item.entryVal1.escapeHtml()+'</p>';
+				 html += '			</div>\n';
+				 html += '			<p>'+item.entryVal1.escapeHtml()+'</p>\n';
 				 if (item.entryCustNo == result.custNo) {
-					 html += '			<button class="btn btn_default btn_del" value="'+item.planEntrySq+'" onclick="fnDelReply(this.value)"><span>삭제</span></button>';
+					 html += '			<button class="btn btn_default btn_del" value="'+item.planEntrySq+'" onclick="fnDelReply(this.value)"><span>삭제</span></button>\n';
 				 }
-				 html += '		</div>';
-				 html += '	</li>';
+				 html += '		</div>\n';
+				 html += '	</li>\n';
 			 });
-			 html += '</ul>';
+			 html += '</ul>\n';
 		}else{
-			html += '<div class="nodata" id="replyNoData"> ';
-			html += '	<div class="txt_box">             ';
+			html += '<div class="nodata" id="replyNoData">\n';
+			html += '	<div class="txt_box">\n             ';
 			html += '		<p>                           ';
 			html += '			등록된 댓글이 없습니다.             ';
 			html += '		</p>                          ';
-			html += '	</div>                            ';
-			html += '</div>                                ';
+			html += '	</div>\n                            ';
+			html += '</div>\n                                ';
 		}
 		 
 	 }

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

@@ -24,11 +24,11 @@
 						</tr>
 					</thead>
 					<tbody>
-						<tr>
-							<td>2020.10.05 09:10:22</td>
-							<td>시흥 대리점</td>
-							<td>집화 처리</td>
-							<td>010-1234-5678</td>
+						<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>

+ 68 - 31
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -102,65 +102,102 @@ var socialAddCart = function (obj) {
 	} 
 }
 
+var socialSetAddCart = function (obj) {
+
+	let cartGoodsList = [];
+	var optCdArr = $(obj).attr("optCd").split(",");
+	var compsGoodsCdArr = $(obj).attr("compsGoodsCd").split(",");
+
+	let compsList = [];
+	let goodsList = {
+	cartCompsList : new Array()
+	}
+
+	for(let j = 0 ; j <  optCdArr.length ; j++) { 
+		let temp = new Object;
+		temp.goodsCd = $(obj).attr("goodsCd");
+		temp.optCd = optCdArr[j];
+		temp.goodsQty = $(obj).attr("minOrdQty");
+		temp.goodsType = "G056_S";
+		temp.itemCd =  compsGoodsCdArr[j];
+		temp.cartGb = "C";
+		temp.afLinkCd = $(obj).attr("afLinkCd");
+		temp.ithrCd = "";
+		temp.contentsLoc = "";
+		temp.planDtlSq = "";
+		compsList.push(temp);
+	}  
+
+	goodsList.cartCompsList = compsList;
+	cartGoodsList.push(goodsList);
+	cfnAddCart(cartGoodsList);
+}
+
 let fnGetSocialList = function(result) {
 	var html = '';
 
 	$.each(result.dataList, function(idx, item) {
 		
-		html += ' <div class="item_prod">';
+		html += ' <div class="item_prod">\n';
 		if (item.stockQtySum > 0 || item.stockQtySum == null) {
-			html += '    <div class="item_state"> ';
+			html += '    <div class="item_state">\n';
 		}else{
-			html += '    <div class="item_state soldout"> ';
+			html += '    <div class="item_state soldout">\n';
 		}
 		if (item.likeIt == 'likeit') {
-			html += '        <button type="button" class="itemLike active" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+			html += '        <button type="button" class="itemLike active" onclick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
 		}else{
-			html += '        <button type="button" class="itemLike" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+			html += '        <button type="button" class="itemLike" onclick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
 		}
 		
-		html += '        <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
-		html += '            <div class="itemPic">';
-		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=550">';
-		html += '            </div>';
-		html += '            <div class="itemSpecialPrice"><span>특가</span></div>';
-		html += '            <p class="itemBrand">'+item.brandGroupNm+'</p>';
-		html += '            <div class="itemName">'+item.goodsNm+'</div>';
-		html += '            <p class="itemPrice">';
+		html += '        <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >\n';
+		html += '            <div class="itemPic">\n';
+		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=550">\n';
+		html += '            </div>\n';
+		html += '            <div class="itemSpecialPrice"><span>특가</span></div>\n';
+		html += '            <p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+		html += '            <div class="itemName">'+item.goodsNm+'</div>\n';
+		html += '            <p class="itemPrice">\n';
 		html += item.currPrice.addComma() +'원';
 		if (item.currPrice != item.listPrice) {
-			html += '                <span class="itemPrice_original">'+item.listPrice.addComma()+'원</span>';
+			html += '                <span class="itemPrice_original">'+item.listPrice.addComma()+'원</span>\n';
 		}
 		if (item.dcRate != 0) {
-			html += '                                 <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>';
+			html += '                                 <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>\n';
 		}
-		html += '            </p>';
+		html += '            </p>\n';
 		if(item.goodsTnm != null){
-			html += '           <div class="itemComment">'+item.goodsTnm+'</div>';
+			html += '           <div class="itemComment">'+item.goodsTnm+'</div>\n';
 		}
-		html += '        </a>';
+		html += '        </a>\n';
 		if (item.goodsType == 'G056_N') {
-			html += '        	 <div class="shopBagBtn">';
-			html += '                <button type="button" class="btn btn_defalt" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'">';
-			html += '                    <span>쇼핑백 담기</span>';
-			html += '                </button>';
-			html += '            </div>';
+			html += '        	 <div class="shopBagBtn">\n';
+			html += '                <button type="button" class="btn btn_defalt" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'">\n';
+			html += '                    <span>쇼핑백 담기</span>\n';
+			html += '                </button>\n';
+			html += '            </div>\n';
 		}else if(item.goodsType == 'G056_D'){
-			html += '        	 <div class="shopBagBtn">';
-			html += '                <button type="button" class="btn btn_defalt" onclick="socialGoodsDeal()">';
-			html += '                    <span>쇼핑백 담기</span>';
-			html += '                </button>';
-			html += '            </div>';
+			html += '        	 <div class="shopBagBtn">\n';
+			html += '                <button type="button" class="btn btn_defalt" onclick="socialGoodsDeal()">\n';
+			html += '                    <span>쇼핑백 담기</span>\n';
+			html += '                </button>\n';
+			html += '            </div>\n';
+		}else{
+			html += '        	 <div class="shopBagBtn">\n';
+			html += '                <button type="button" class="btn btn_defalt" onclick="socialSetAddCart(this)" compsGoodsCd=\''+item.compsGoodsCd+'\', goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'">\n';
+			html += '                    <span>쇼핑백 담기</span>\n';
+			html += '                </button>\n';
+			html += '            </div>\n';
 		}
-		html += '    </div>';
-		html += '</div>';
+		html += '    </div>\n';
+		html += '</div>\n';
 	});
 	return html;
 	
 }
 // 딜상품일 경우 alert
 var socialGoodsDeal = function() {
-	mcxDialog.alert("해당 상품은 딜상품!");
+	mcxDialog.alert("해당 상품은 옵션 선택 후 쇼핑백 담기가 가능합니다.");
 	return;
 }
 

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

@@ -330,7 +330,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') {

+ 51 - 48
src/main/webapp/ux/style24_link.js

@@ -645,32 +645,6 @@ function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
 	cfnOpenLayer(_PAGE_GOODS_INSTOCK_ALARM_LAYER+goodsCd+'/'+colorCd, 'layer_instock_alarm');
 }
 
-/**
-* @type   : function
-* @access : public
-* @desc   : 상품평- 베스트 리뷰 보기
-* <pre>
-*		cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq, attachSq);
-* </pre>
-*/
-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>';
-	}
-
-	if ($('#layer_review_best').length == 0) {
-		$('body').append(str);
-	}
-	
-	var params = '?goodsCd=' + goodsCd;
-	params += '&reviewSq=' + reviewSq;
-	params += '&bestYn=' + bestYn;
-	params += '&photoYn=' + photoYn;
-	if (typeof (attachSq) != 'undefined') params += "&attachSq=" + attachSq;
-	
-	cfnOpenLayer(_PAGE_GOODS_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
-}
 
 /**
 * @type   : function
@@ -694,27 +668,6 @@ function cfPlanReplyDetail(planSq, planEntrySq, planEntryAtSq) {
 	cfnOpenLayer(_PAGE_PLANNING_REPLY_DETAIL_LAYER+params, 'photo_full_popup');
 }
 
-/**
-* @type   : function
-* @access : public
-* @desc   : 상품평- 포토/영상 리뷰 리스트 보기
-* <pre>
-*		cfGoodsPhotoReview(goodsCd);
-* </pre>
-*/
-function cfGoodsReviewPhoto(goodsCd) {
-	var str = '<div class="modal fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="pdPhotoReviewListLabel" aria-hidden="true"></div>';
-	if ("P" != _frontGb){
-		str = '<div class="modal pop_full fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
-	}
-	
-	if ($('#layer_review_photo').length == 0) {
-		$('body').append(str);
-	}
-
-	cfnOpenLayer(_PAGE_GOODS_REVIEW_PHTO_LIST_LAYER+goodsCd, 'layer_review_photo');
-}
-
 /**
  * @type   : function
  * @access : public
@@ -821,7 +774,7 @@ function cfGoodsQngCreate(goodsCd) {
 /**
 * @type   : function
 * @access : public
-* @desc   : 상품문의 full 팝업
+* @desc   : 상품배송 full 팝업
 * <pre>
 *		cfGoodsDelivery();
 * </pre>
@@ -869,10 +822,60 @@ function cfGoodsReview(goodsCd) {
 	}else{
 		cfnOpenLayer(_PAGE_GOODS_REVIEW_LAYER + goodsCd, 'layer_goods_review');
 	}
+}
+
+
+/**
+* @type   : function
+* @access : public
+* @desc   : 상품평- 베스트 리뷰 보기
+* <pre>
+*		cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq, attachSq);
+* </pre>
+*/
+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 photo_comment_popup pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
+
+	if ($('#layer_review_best').length == 0) {
+		$('body').append(str);
+	}else{
+		$("#layer_review_best").modal("show");
+	}
+	
+	var params = '?goodsCd=' + goodsCd;
+	params += '&reviewSq=' + reviewSq;
+	params += '&bestYn=' + bestYn;
+	params += '&photoYn=' + photoYn;
+	if (typeof (attachSq) != 'undefined') params += "&attachSq=" + attachSq;
+	
+	cfnOpenLayer(_PAGE_GOODS_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
+}
 
+/**
+* @type   : function
+* @access : public
+* @desc   : 상품평- 포토/영상 리뷰 리스트 보기
+* <pre>
+*		cfGoodsPhotoReview(goodsCd);
+* </pre>
+*/
+function cfGoodsReviewPhoto(goodsCd) {
+	var str = '<div class="modal fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="pdPhotoReviewListLabel" aria-hidden="true"></div>';
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
 	
+	if ($('#layer_review_photo').length == 0) {
+		$('body').append(str);
+	}
+
+	cfnOpenLayer(_PAGE_GOODS_REVIEW_PHTO_LIST_LAYER+goodsCd, 'layer_review_photo');
 }
 
+
 /**
  * @type   : function
  * @access : public

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio