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

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front.git into develop

eskim 5 лет назад
Родитель
Сommit
b6e467ec31
33 измененных файлов с 968 добавлено и 248 удалено
  1. 9 0
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 185 71
      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. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  7. 35 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  8. 1 0
      src/main/resources/config/application-tsit.yml
  9. 9 0
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  10. 10 2
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  11. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  12. 59 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  13. 9 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  14. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  15. 4 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  16. 7 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  17. 151 151
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  18. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  19. 58 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html
  20. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  21. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  22. 45 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  23. 42 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  24. 43 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html
  25. 35 0
      src/main/webapp/WEB-INF/views/mob/popup/TrackWithdrawPopupFormMob.html
  26. 2 2
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  27. 7 1
      src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html
  28. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  29. 2 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  30. 3 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  31. 5 5
      src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html
  32. 1 1
      src/main/webapp/biz/mypage.js
  33. 206 0
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scroll.js

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -428,4 +428,13 @@ public interface TsfGoodsDao {
 	 * @since 2020. 05. 20
 	 * @since 2020. 05. 20
 	 */
 	 */
 	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
 	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
+
+	/**
+	 * 구성 상품 목록
+	 * @param goods
+	 * @return
+	 * @author xodud1202
+	 * @since 2020. 05. 25
+	 */
+	Collection<Goods> getCompsGoodsList(Goods goods);
 }
 }

+ 185 - 71
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1159,52 +1159,47 @@ public class TsfOrderService {
 				sb.append("\t\t<name>").append("<![CDATA[").append(item.getGoodsNm()).append("]]>").append("</name>\n");	//<!-- 상품명 -->
 				sb.append("\t\t<name>").append("<![CDATA[").append(item.getGoodsNm()).append("]]>").append("</name>\n");	//<!-- 상품명 -->
 				sb.append("\t\t<basePrice>").append(item.getCurrPrice()).append("</basePrice>\n");				//<!-- 상품금액 -->
 				sb.append("\t\t<basePrice>").append(item.getCurrPrice()).append("</basePrice>\n");				//<!-- 상품금액 -->
 				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
 				// 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 -->
 				sb.append("\t\t<imageUrl>").append("<![CDATA[https:").append(goodsImgUrl).append("/").append(item.getSysImgNm()).append("]]>").append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
 
 
-				// 세트상품은 single quantity를 입력해야한다
-				/*sb.append("\t\t<single>\n");
-				sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");
-				sb.append("\t\t</single>\n");*/
 				if(TscConstants.GoodsType.SET.value().equals(item.getGoodsType())) {		// 세트상품
 				if(TscConstants.GoodsType.SET.value().equals(item.getGoodsType())) {		// 세트상품
-					// 구성상품 옵션정보 split
-					String[] optCds        = item.getOptCd().split(",");			// 옵션코드
-					String[] itemCds       = item.getItemCd().split(",");			// 상품코드
-
 					// 세트상품 manageCode 정렬 (optCd ASC)
 					// 세트상품 manageCode 정렬 (optCd ASC)
 					Goods option = new Goods();
 					Goods option = new Goods();
-					option.setArrGoodsCd(itemCds);
-					option.setSizeArr(optCds);
+					option.setArrGoodsCd(item.getItemCd().split(","));
+					option.setSizeArr(item.getOptCd().split(","));
 					List<Goods> optionList = (ArrayList<Goods>) goodsDao.getOrderGoodsOptionList(option);
 					List<Goods> optionList = (ArrayList<Goods>) goodsDao.getOrderGoodsOptionList(option);
 
 
 					StringBuilder manageCode = new StringBuilder();
 					StringBuilder manageCode = new StringBuilder();
+					int k = 0;
 					for(Goods opt : optionList) {
 					for(Goods opt : optionList) {
+						if(k++ > 0) manageCode.append("/");
 						manageCode.append(opt.getOptCd());
 						manageCode.append(opt.getOptCd());
 					}
 					}
 
 
 					// 옵션 정보
 					// 옵션 정보
 					sb.append("\t\t<option>\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");	//<!-- 옵션관리코드 -->
+					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");		//<!-- 옵션관리코드 -->
 
 
-					// 칼라코드
-					/*for(int i = 0 ; i < itemNms.length ; i++) {
-						// 상품명, 컬러, 사이즈 확인 ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
+					// 구성상품별 옵션 세팅
+					int i = 1;
+					for(Goods opt : optionList) {
+						// 상품명, 컬러, 사이즈 확인(최대 50자) ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
 						// 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
 						// 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
-						if(itemNms[i].length() > 24)	{itemNms[i]  = itemNms[i].substring(0, 21) + "..";}
-						if(optCd2s[i].length() > 12)	{optCd2s[i]  = optCd2s[i].substring(0, 9)  + "..";}
-						if(colorNms[i].length() > 12)	{colorNms[i] = colorNms[i].substring(0, 9) + "..";}
+						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<selectedItem>\n");
-						sb.append("\t\t\t\t<type>SELECT</type>\n");		//<!-- 옵션유형 -->
-						sb.append("\t\t\t\t<name>구성상품").append(i + 1).append("</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<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(itemCds[i]).append("/").append(optCds[i]).append("</id>\n");//<!-- 옵션 -->
-						sb.append("\t\t\t\t\t<text>").append(itemNms[i]).append("/").append(colorNms[i]).append("/").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\t</value>\n");
 						sb.append("\t\t\t</selectedItem>\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())) {								// 세트상품 제외 자사상품
 				} else if("Y".equals(item.getSelfGoodsYn())) {								// 세트상품 제외 자사상품
@@ -1315,6 +1310,28 @@ public class TsfOrderService {
 		return result;
 		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
 	 * @param sb
@@ -1514,63 +1531,160 @@ public class TsfOrderService {
 					// 옵션정보 지원여부 true
 					// 옵션정보 지원여부 true
 					sb.append("\t\t<optionSupport>true</optionSupport>\n");
 					sb.append("\t\t<optionSupport>true</optionSupport>\n");
 
 
-					// 옵션 정보
-					sb.append("\t\t<option>\n");
-
 					// 세트상품 정보  getGoodsSetComposeList
 					// 세트상품 정보  getGoodsSetComposeList
 					goods.setSiteCd(TscConstants.Site.STYLE24.value());
 					goods.setSiteCd(TscConstants.Site.STYLE24.value());
-					Collection<GoodsCompose> compsInfoList = goodsDao.getGoodsSetComposeList(goods);
-					List<String> colorNmList = new ArrayList<String>();
-					List<String> colorList = new ArrayList<String>();
-					List<String> sizeList = new ArrayList<String>();
+					Collection<Goods> compsInfoList = goodsDao.getCompsGoodsList(goods);
 
 
+					// 옵션 정보
+					sb.append("\t\t<option>\n");
+					int combCnt = 0;		// 옵션 조합 총 수량
 					// 옵션 아이템정보 구성상품
 					// 옵션 아이템정보 구성상품
-					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 (GoodsCompose comps : compsInfoList) {
-						sb.append("\t\t\t\t<value>\n");
-						sb.append("\t\t\t\t\t<id>").append(comps.getGoodsCd()).append("</id>\n");
-						if(comps.getCompsGoodsNm().length() > 50)	{comps.setCompsGoodsNm(comps.getCompsGoodsNm().substring(0, 47) + "..");}
-						sb.append("\t\t\t\t\t<text>").append(comps.getCompsGoodsNm()).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");
-					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.get(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 (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");
 
 
-					// 옵션 정보 전체 송부
-					for (GoodsCompose comps : compsInfoList) {
+						// 구성상품별 옵션 정보
+						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");
+						}
 
 
+						sb.append("\t\t\t</optionItem>\n");
+					}
 
 
 					sb.append("\t\t</option>\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()));
+								}
+							}
+						}
+					}
+
 					// 10. 배송정보조회
 					// 10. 배송정보조회
 					// 5.2.1 업체별 기본배송비, 무료배송비
 					// 5.2.1 업체별 기본배송비, 무료배송비
 					String delvFeeCd = "";
 					String delvFeeCd = "";

+ 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);
 		cart = cartService.getCartGoodsList(cart);
-		log.info("CHECK LENGTH :::: {}", cart.getDelvAllCartList().size());
 		cart.setImgPath1(env.getProperty("upload.goods.view"));
 		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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.mobile.device.Device;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -77,6 +78,9 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 @Slf4j
 public class TsfMypageController extends TsfBaseController {
 public class TsfMypageController extends TsfBaseController {
 
 
+	@Autowired
+	private Environment env;
+
 	@Autowired
 	@Autowired
 	private TscMessageByLocale message;
 	private TscMessageByLocale message;
 
 
@@ -272,6 +276,9 @@ public class TsfMypageController extends TsfBaseController {
 		// 상품권 현금영수증 신청 정보 조회
 		// 상품권 현금영수증 신청 정보 조회
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -996,6 +1003,9 @@ public class TsfMypageController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreCancelDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreCancelDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -1032,6 +1042,9 @@ public class TsfMypageController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreReturnDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreReturnDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -1062,6 +1075,9 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("oneData", oneData);
 		mav.addObject("oneData", oneData);
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreExchangeDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCreExchangeDetailForm"));
 
 
 		return mav;
 		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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -52,6 +53,9 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 @Slf4j
 public class TsfNoMemberController extends TsfBaseController {
 public class TsfNoMemberController extends TsfBaseController {
 
 
+	@Autowired
+	private Environment env;
+
 	@Autowired
 	@Autowired
 	private TscMessageByLocale message;
 	private TscMessageByLocale message;
 
 
@@ -220,6 +224,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 상품권 현금영수증 신청 정보 조회
 		// 상품권 현금영수증 신청 정보 조회
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberOrderDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberOrderDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -1090,6 +1097,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreCancelDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreCancelDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -1151,6 +1161,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreReturnDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreReturnDetailForm"));
 
 
 		return mav;
 		return mav;
@@ -1206,6 +1219,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("oneData", oneData);
 		mav.addObject("oneData", oneData);
 
 
+		// KCP 전표 경로 설정
+		mav.addObject("kcpReceiptUrl", env.getProperty("pg.kcp.receipt.url"));
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreExchangeDetailForm"));
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreExchangeDetailForm"));
 
 
 		return mav;
 		return mav;

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

@@ -185,6 +185,7 @@ public class Goods extends TscBaseDomain {
 	private String brandKnm;
 	private String brandKnm;
 	private Integer ordNo;			// 주문번호
 	private Integer ordNo;			// 주문번호
 	private Integer ordDtlNo;		// 주문상세번호
 	private Integer ordDtlNo;		// 주문상세번호
+	private Integer rnum;
 
 
 	//상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:상위컨텐츠-모바일,70:하위컨텐츠-모바일,80:상품상세(as-is,입점))
 	//상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:상위컨텐츠-모바일,70:하위컨텐츠-모바일,80:상품상세(as-is,입점))
 	private String goodsTitle; 			// 10:상품타이틀
 	private String goodsTitle; 			// 10:상품타이틀

+ 35 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -575,7 +575,7 @@
 	</select>
 	</select>
 
 
 	<!-- 주문 상품 옵션 정보 조회 -->
 	<!-- 주문 상품 옵션 정보 조회 -->
-	<select id="getOrderGoodsOptionList" parameterType="GoodsStock" resultType="GoodsStock">
+	<select id="getOrderGoodsOptionList" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getOrderGoodsOptionList */
 		/* TsfGoods.getOrderGoodsOptionList */
 		SELECT G.GOODS_CD
 		SELECT G.GOODS_CD
 		     , G.GOODS_STAT
 		     , G.GOODS_STAT
@@ -583,7 +583,7 @@
 		     , VS.OPT_CD
 		     , VS.OPT_CD
 		     , VS.OPT_CD1
 		     , VS.OPT_CD1
 		     , VS.OPT_CD2
 		     , VS.OPT_CD2
-		     , CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 0 ELSE VS.CURR_STOCK_QTY END AS STOCK_QTY
+		     , 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
 		     , 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
 		FROM   TB_GOODS G
 		INNER  JOIN VW_STOCK VS
 		INNER  JOIN VW_STOCK VS
@@ -599,7 +599,7 @@
 				#{item}
 				#{item}
 			</foreach>
 			</foreach>
 		</if>
 		</if>
-		ORDER  BY VS.OPT_CD ASC
+		ORDER  BY G.GOODS_CD ASC, VS.OPT_CD ASC
 	</select>
 	</select>
 	
 	
 	<!-- 무이자 혜택안내 -->
 	<!-- 무이자 혜택안내 -->
@@ -3084,4 +3084,36 @@
 		WHERE A.GOODS_CD = #{goodsCd}
 		WHERE A.GOODS_CD = #{goodsCd}
 		ORDER BY G.GOODS_CD, A.CUST_GRADE
 		ORDER BY G.GOODS_CD, A.CUST_GRADE
 	</select>
 	</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>
 </mapper>

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

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

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

@@ -48,6 +48,15 @@
 	</div>
 	</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>
 	<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>
 	<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>

+ 10 - 2
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -293,7 +293,7 @@
 								<ul class="swiper-wrapper">
 								<ul class="swiper-wrapper">
 									<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
 									<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
 										<li class="swiper-slide" th:classappend="${ContentsStat.count==1}?'on'"> <!-- li.on / li .btn.active : 메뉴 표시 -->
 										<li class="swiper-slide" th:classappend="${ContentsStat.count==1}?'on'"> <!-- li.on / li .btn.active : 메뉴 표시 -->
-											<button class="btn btn_link" th:attr="data-tab=${'pick'+ContentsStat.count}"><span th:text="${ContentsData.brandGroupNm}">BUKAROO</span></button>
+											<button class="btn btn_link" th:id="${'pickBtn'+ContentsStat.count}" th:attr="data-tab=${'pick'+ContentsStat.count}"><span th:text="${ContentsData.brandGroupNm}">BUKAROO</span></button>
 										</li>
 										</li>
 									</th:block>
 									</th:block>
 								</ul>
 								</ul>
@@ -340,7 +340,7 @@
 								<!-- 210524 : pick-post 형제로 버튼그룹 이동 -->
 								<!-- 210524 : pick-post 형제로 버튼그룹 이동 -->
 								<div class="btn_group_flex">
 								<div class="btn_group_flex">
 									<div>
 									<div>
-										<button class="btn btn_default" th:onclick="cfnGoToBrandMain([[${brandPickData.brandGroupNo}]])">다음 브랜드 보기<span></span></button>
+										<button class="btn btn_default" th:onclick="fnNextBrand([[${brandPickStat.size}]],[[${brandPickStat.count}]])">다음 브랜드 보기<span></span></button>
 									</div>
 									</div>
 								</div>
 								</div>
 								<!-- //210329 : 브랜드 pick 상품 swiper 제거 -->
 								<!-- //210329 : 브랜드 pick 상품 swiper 제거 -->
@@ -831,6 +831,14 @@
 			$('#htopSub').show();
 			$('#htopSub').show();
 		}
 		}
 	}
 	}
+
+	var fnNextBrand = function (tot, idx){
+		if(tot == idx){
+			$("#pickBtn1").click();
+		}else{
+			$("#pickBtn"+(idx+1)).click();
+		}
+	}
 /*]]>*/
 /*]]>*/
 </script>
 </script>
 
 

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

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

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

@@ -234,6 +234,64 @@
 				</div>
 				</div>
 			</div>
 			</div>
 		</th:block>
 		</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="inner">
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"><span>확인</span></button></div>
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"><span>확인</span></button></div>
 		</div>
 		</div>
@@ -244,6 +302,7 @@
 	/*<![CDATA[*/
 	/*<![CDATA[*/
 	let addrGb = '';
 	let addrGb = '';
 	let memoGb = '';
 	let memoGb = '';
+	let kcpReceiptUrl = [[${kcpReceiptUrl}]];
 
 
 	$(document).ready(function() {
 	$(document).ready(function() {
 		// 타이틀명
 		// 타이틀명

+ 9 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html

@@ -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>
 </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="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
 								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
 								<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">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 									</div>
 									</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="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
 								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
 								<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">
 									<div class="thumb_box">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
 									</div>
 									</div>
@@ -950,11 +950,13 @@
 	let paymentInfo 		= [[${paymentInfo}]];
 	let paymentInfo 		= [[${paymentInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
 	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 jsonObj 			= {};
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 
 	$(document).ready(function() {
 	$(document).ready(function() {
+		mcxDialog.alert(kcpReceiptUrl);
 		// 타이틀명
 		// 타이틀명
 		$('#htopTitle').text('주문상세');
 		$('#htopTitle').text('주문상세');
 		
 		

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

@@ -157,6 +157,11 @@
 /*<![CDATA[*/
 /*<![CDATA[*/
 	
 	
 	$(document).ready( function() {
 	$(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', {
         var photoreviewdetailSwiper = new Swiper('.pd_photoreviewdetail_pop .area_slider .swiper-container', {
             observer: true,
             observer: true,
@@ -166,7 +171,9 @@
                 el: '.swiper-pagination',
                 el: '.swiper-pagination',
                 type: 'fraction',
                 type: 'fraction',
             },
             },
+         /*    photoreviewdetailSwiper.slideTo(reviewAttchSq, 0, false); */
         });
         });
+		 
         // 포토,베스트리뷰숨김
         // 포토,베스트리뷰숨김
         var review_open=$(".btn_review_open");
         var review_open=$(".btn_review_open");
         $(document).on('click','.btn_review_open',function(e){
         $(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 = '';
 				var html = '';
 				$.each(result.dataList2, function(idx, item) {
 				$.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') {
 					if (item.goodsType =='G056_S') {
 						$.each(item.colorNmArr, function (index2, option) {
 						$.each(item.colorNmArr, function (index2, option) {
 							html += '							<em>' + item.itemNmArr[index2] + ' / ' + option +'</em>\n';
 							html += '							<em>' + item.itemNmArr[index2] + ' / ' + option +'</em>\n';
 						})
 						})
 					}else{
 					}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) {
 					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++) {
 						for (var i = 0; i < attachList.length; i++) {
 							if (attachList[i].reviewSq == item.reviewSq) {
 							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') {
 								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{
 								}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') {
 					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') {
 					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') {
 					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 != '') {
 					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 == '') {
 					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);
 				$('#reviewList').append(html);
@@ -261,13 +261,13 @@
 				
 				
 			}else{
 			}else{
 				var html = '';
 				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 += '		<p>';
 				html += '			작성한 리뷰가 없습니다.<br>';
 				html += '			작성한 리뷰가 없습니다.<br>';
 				html += '		</p>';
 				html += '		</p>';
-				html += '	</div>';
-				html += '</div>';
+				html += '	</div>\n';
+				html += '</div>\n';
 				$('#btnMore2').parent().hide();
 				$('#btnMore2').parent().hide();
 				$('#btnMore').parent().hide();
 				$('#btnMore').parent().hide();
 				$('#reviewList').append(html);
 				$('#reviewList').append(html);
@@ -280,42 +280,42 @@
 			if (result.paging1.pageable.pageNo == 1){
 			if (result.paging1.pageable.pageNo == 1){
 				$('#reviewList').html('');
 				$('#reviewList').html('');
 			}	
 			}	
-			var html = '	<div class="part_goods">';
+			var html = '	<div class="part_goods">\n';
 			$.each(result.dataList1, function(idx, item) {
 			$.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') {
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em\n';
+						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em>\n';
 					})
 					})
 				}else{
 				}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);
 			$('#reviewList').append(html);
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 				$('#btnMore').parent().show();
 				$('#btnMore').parent().show();
@@ -325,13 +325,13 @@
 			}
 			}
 		}else{
 		}else{
 			var html = '';
 			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 += '		<p>';
 			html += '			작성 가능한 리뷰가 없습니다.<br>';
 			html += '			작성 가능한 리뷰가 없습니다.<br>';
-			html += '		</p>';
-			html += '	</div>';
-			html += '</div>';
+			html += '		</p>\n';
+			html += '	</div>\n';
+			html += '</div>\n';
 			
 			
 			$('#reviewList').append(html);
 			$('#reviewList').append(html);
 			$('#btnMore').parent().hide();
 			$('#btnMore').parent().hide();

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

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

+ 58 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html

@@ -224,6 +224,64 @@
 				</div>
 				</div>
 			</div>
 			</div>
 		</th:block>
 		</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="inner">
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
 			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
 		</div>
 		</div>

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

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

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

@@ -597,7 +597,8 @@
 	let paymentInfo 		= [[${paymentInfo}]];
 	let paymentInfo 		= [[${paymentInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let orderAmtInfo 		= [[${orderAmtInfo}]];
 	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
 	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 jsonObj 			= {};
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 

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

@@ -17,8 +17,8 @@
  *******************************************************************************
  *******************************************************************************
  -->
  -->
 <body>
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
 <th:block layout:fragment="content">
-<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
 <main role="" id="" class="container dp">
 <main role="" id="" class="container dp">
 			<section class="content">
 			<section class="content">
 				<div class="inner">
 				<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 class="modal pop_full photo_comment_popup" id="photo_full_popup" tabindex="-1" role="dialog" aria-labelledby="comment_popup" aria-hidden="true">
 		
 		
 	</div>
 	</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:each="a, template : ${templateOrd}">
 	<th:block th:if="${a.tmplType == 'G082_51'}">
 	<th:block th:if="${a.tmplType == 'G082_51'}">
@@ -950,6 +991,9 @@ $(document).ready(function(){
 		$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
 		$('.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', {
 	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>
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
 <th:block layout:fragment="content">
-<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
 	<main role="" id="" class="container dp">
 	<main role="" id="" class="container dp">
 			<section class="content dp_detail_visual">
 			<section class="content dp_detail_visual">
 				<div class="inner">
 				<div class="inner">
@@ -154,6 +154,47 @@
 					</div>
 					</div>
 				</div>
 				</div>
 			</section>
 			</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">
 		</main>	<script th:inline="javascript">
 	/*<![CDATA[*/
 	/*<![CDATA[*/
 	let today = new Date();   
 	let today = new Date();   

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

@@ -17,6 +17,7 @@
  *******************************************************************************
  *******************************************************************************
  -->
  -->
 <body>
 <body>
+<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
 <th:block layout:fragment="content">
 <th:block layout:fragment="content">
 <main role="" id="" class="container ev">
 <main role="" id="" class="container ev">
 			<section class="content renew">
 			<section class="content renew">
@@ -197,6 +198,48 @@
 					</div>
 					</div>
 				</div>
 				</div>
 			</section>
 			</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>
 		</main>
 <script th:inline="javascript">
 <script th:inline="javascript">
 let pollList = [[${pollList}]];
 let pollList = [[${pollList}]];

+ 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>

+ 2 - 2
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -17,7 +17,7 @@
 <header id="header" th:fragment="gnb">
 <header id="header" th:fragment="gnb">
 
 
 	<div class="common_header br_header" th:style="${'background-color: #' + brandGroupInfo.rgbCd}">
 	<div class="common_header br_header" th:style="${'background-color: #' + brandGroupInfo.rgbCd}">
-		<div class="area">
+		<div class="area" th:style="${'background-color: #' + brandGroupInfo.rgbCd}">
 			<div class="logo">
 			<div class="logo">
 				<a href="javascript:void(0);" th:onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">
 				<a href="javascript:void(0);" th:onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">
 					<h1>
 					<h1>
@@ -34,7 +34,7 @@
 				<span><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" title="마이페이지 바로가기">마이페이지</a></span>
 				<span><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" title="마이페이지 바로가기">마이페이지</a></span>
 			</div>
 			</div>
 		</div>
 		</div>
-		<div class="gnb">
+		<div class="gnb" th:style="${'background-color: #' + brandGroupInfo.rgbCd}">
 			<!-- nav -->
 			<!-- nav -->
 			<div class="nav">
 			<div class="nav">
 				<ul class="bundle" id="ulGnbTab">
 				<ul class="bundle" id="ulGnbTab">

+ 7 - 1
src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html

@@ -35,7 +35,13 @@
 <script th:inline="javascript">
 <script th:inline="javascript">
 /*<![CDATA[*/
 /*<![CDATA[*/
 	$(document).ready(function() {
 	$(document).ready(function() {
-		$("#container").css('backgroundColor','#fff');
+		let brandGroupColor = [[${brandGroupInfo.rgbCd}]];
+		if(brandGroupColor != null){
+			$("#container").css('backgroundColor',[[${brandGroupInfo.rgbCd}]]);
+		}else{
+			$("#container").css('backgroundColor','#fff');
+		}
+
 	});
 	});
 /*]]>*/
 /*]]>*/
 </script>
 </script>

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

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

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

@@ -273,7 +273,8 @@
 	let oneData = [[${oneData}]];
 	let oneData = [[${oneData}]];
 	var isLogin = [[${isLogin}]];
 	var isLogin = [[${isLogin}]];
 	let ordNo = oneData.ordNo;
 	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 = {};
 	let jsonObj = {};
 
 
 	$(document).ready(function() {
 	$(document).ready(function() {

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

@@ -42,7 +42,7 @@
 									<div id="layerShare" class="setShare open">
 									<div id="layerShare" class="setShare open">
 										<span>
 										<span>
 											<button type="button" class="kk"
 											<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>
 												<span>카카오톡</span>
 											</button>
 											</button>
 											<button type="button" class="fb"
 											<button type="button" class="fb"
@@ -442,9 +442,9 @@ if(image.length>0){
 	for (var i = 0; i < image.length; i++) {
 	for (var i = 0; i < image.length; i++) {
 		html += '                	<div class="swiper-slide">\n';
 		html += '                	<div class="swiper-slide">\n';
 		if (image[i].linkOpenGb == 'M') {
 		if (image[i].linkOpenGb == 'M') {
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_self"><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
 		}else{
 		}else{
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank"><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>\n';
 		}
 		}
 		
 		
 		html += '                	</div>\n';
 		html += '                	</div>\n';

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

@@ -24,11 +24,11 @@
 						</tr>
 						</tr>
 					</thead>
 					</thead>
 					<tbody>
 					<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>
 						</tr>
 					</tbody>
 					</tbody>
 				</table>
 				</table>

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

@@ -330,7 +330,7 @@ var fnReceipt = function(param) {
 		receiptWin += '&tno=' + paymentInfo.pgTid;
 		receiptWin += '&tno=' + paymentInfo.pgTid;
 		receiptWin += '&order_no=' + ordNo;
 		receiptWin += '&order_no=' + ordNo;
 		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
 		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
-		console.log(receiptWin);
+
 		// 팝업 크기 설정
 		// 팝업 크기 설정
 		option = 'width=455, height=815';
 		option = 'width=455, height=815';
 	} else if (param == 'cash') {
 	} else if (param == 'cash') {

+ 206 - 0
src/main/webapp/ux/plugins/gaga/gaga.infinite.scroll.js

@@ -0,0 +1,206 @@
+/*
+ * Inifinite Scroll Java Script written by gagamel.
+ *
+ * Copyright (c) 2016 gagamel (nogdoo.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2016-04-28 $
+ *
+ * 사용 예)
+ * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 하며
+ * 		// id 명칭은 container, listBoxOuter, listBox 가 필요하다.
+ * 		<section id="container">
+ * 			<div id="listBoxOuter">
+ * 				<ul id="listBox">
+ * 				</ul>
+ *			</div>
+ *		</section>
+ *
+ * 		// JQUERY History 파일과 인피니트 스크롤 관련 자바스크립트 파일을 import 되어 있어야 한다.
+ * 		<script type="text/javascript" src="/ux/plugins/jquery.history.min.js"></script>
+ * 		<script type="text/javascript" src="/ux/plugins/gaga.infinite.scroll.js"></script>
+ *
+ * 		<script type="text/javascript">
+ * 			// 인피니트 스크롤에 대한 History 정보를 가져오기 위해 함수를 호출한다.
+ *			// History 정보가 없을 경우 fnGetInfiniteScrollDataList 함수가 호출된다.
+ * 			$(function() { gagaInfiniteScroll.getHistory(); });
+ *
+ *			// 인피니트 스크롤 이벤트 발생 시 데이터 가져오기
+ *			var fnGetInfiniteScrollDataList = function(pageNum) {
+ *				// 콜백함수인 gagaInfiniteScroll.jsonToHtml 에서는 fnDrawInfiniteScrollData 함수를 호출한다.
+ *				gagajf.ajaxSubmitForm(document.searchForm, "/goods/list", "json", gagaInfiniteScroll.jsonToHtml);
+ *			}
+ *
+ *			// 인피니트 스크롤 이벤트 발생 시 가져온 데이터를 특정 태그에 append
+ *			// fnDrawInfiniteScrollData(result, pageNum) 함수 구현
+ *			// 		이 함수 내에서의 로직은
+ *			//		1. 가져온 데이터로 HTML 태그를 만든다.
+ *			// 		2. 만든 태그를 append 하는 gagaInfiniteScroll.draw() 함수를 호출
+ *		</script>
+ */
+
+var gagaInfiniteScroll = {
+	pageStatus : {
+		pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
+		, loadPage : 0      // 로드할 페이지
+		, loadAlign : 'not' // 로드 상태(prev, next, not)
+		, historyScroll : 0 //
+		, nowPage : null    // 현재 페이지
+		, pageUrl : {       // page url
+		}
+		, totalCount : ''
+	},
+	obj : {
+		$ajaxBoxOuter : $('#listBoxOuter')
+		, $ajaxBox : $('#listBox')
+		, $window : $(window)
+		, $loadingBar : '<div style="width: 100%; padding-top: 50px; text-align: center;" id="loadingBar"><img src="/ux/plugins/gaga/loader.gif" style="width:25px; height:25px;"/></div>'
+//		, $loadingBar : '<div style="width: 100%; padding-top: 50px; text-align: center;" id="loadingBar"><img src="/images/hsmob/common/loading_bar_01.gif" width="24px" height=" 22px"/></div>'
+	},
+	scrollCheck : function() {
+		var obj = this.obj, stat = this.pageStatus;
+
+		if (obj.$window.scrollTop() >= obj.$ajaxBox.offset().top + obj.$ajaxBox.height() - obj.$window.height()) { // 더보기
+			if (stat.loadAlign == 'not') {
+				var pageLen = this.pageStatus.pageNum.length - 1;
+				var nextPageNum = this.pageStatus.pageNum[pageLen] + 1;
+				this.pageStatus.pageNum.push(nextPageNum);
+				this.pageStatus.loadPage = nextPageNum;
+				stat.loadAlign = 'next';
+				this.getDataList();
+			};
+		}
+	},
+	getDataList : function() {
+		if (this.pageStatus.loadAlign == 'prev') {
+			this.obj.$ajaxBoxOuter.prepend($(this.obj.$loadingBar));
+		} else if (this.pageStatus.loadAlign == 'next') {
+			this.obj.$ajaxBoxOuter.append($(this.obj.$loadingBar));
+		};
+
+		// 인피니트 스크롤 이벤트에서 호출될 함수(데이터 가져오기 등)
+		// fnGetInfiniteScrollDataList 함수는 개발단에서 구현해야 한다.
+		fnGetInfiniteScrollDataList(this.pageStatus.loadPage);
+	},
+	getHistory : function() {
+		var historyData = History.getState();
+		if (historyData.data.pageNum === undefined || historyData.data.pageNum === '' || historyData.data.htm === undefined || historyData.data.htm == '') {
+			this.pageStatus.loadPage = 0;
+			this.pageStatus.pageNum[0] = 0;
+			this.pageStatus.loadAlign = 'next';
+			this.pageStatus.historyScroll = 0;
+
+			this.getDataList();
+		} else {
+			this.pageStatus.loadPage = historyData.data.pageNum;
+			this.pageStatus.pageNum[0] = historyData.data.pageNum;
+			this.pageStatus.historyScroll = historyData.data.dataIndex;
+			this.pageStatus.loadAlign = 'next';
+			this.pageStatus.loadAlign = historyData.data.totalCount;
+
+			gagaInfiniteScroll.draw(historyData.data.htm);
+		};
+
+		$(window).on('scroll', function() {
+			gagaInfiniteScroll.scrollCheck();
+		});
+	},
+	draw : function(htm, scrollTop, containerHeight) {
+		if (htm == 'not') {
+			$('#loadingBar').remove();
+			this.pageStatus.loadAlign = 'top';
+		} else {
+			var startH = $('#infiniteContainer').height();
+			var $addHtm = $(htm);
+			var $imgs = $addHtm.find('img');
+			var loadCheck = 0;
+			var len = $imgs.length;
+
+			if (scrollTop && containerHeight) {
+			} else {
+			}
+
+			// $addHtm.find('img.lazy').lazyload({root: null,
+			// 	rootMargin: "100px",
+			// 	threshold: 0});
+
+			$.each($imgs, function(index) {
+				$imgs.eq(index).on('load',function() {
+					loadCheck++;
+					imgLpadComp();
+				});
+			});
+
+			var imgLpadComp = function() {
+				if (len - 1 == loadCheck) {
+					gagaInfiniteScroll.pushHistory(
+						gagaInfiniteScroll.pageStatus.nowPage
+						, $(window).scrollTop()
+						, $('#infiniteContainer').height()
+						, gagaInfiniteScroll.pageStatus.loadPage
+						, 0
+						, gagaInfiniteScroll.obj.$ajaxBox.html());
+					if (scrollTop && containerHeight) {
+						gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+					} else {
+						gagaInfiniteScroll.obj.$window.scrollTop(gagaInfiniteScroll.obj.$window.scrollTop() + 1);
+					}
+				};
+			};
+
+			$('#loadingBar').remove();
+
+			// Append HTML
+			this.obj.$ajaxBox.append($addHtm);
+
+			if (scrollTop && containerHeight) {
+				gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+			} else {
+				$(window).scrollTop($(window).scrollTop() + 1);
+			}
+
+			this.pageStatus.loadAlign = 'not';
+		}
+	},
+	pushHistory : function(page, sScrollTop, sHeight, sPageNum, sDataIndex, sHtml) {
+		History.replaceState({
+			state: page
+			, scroll: sScrollTop
+			, height: sHeight
+			, pageUrl: gagaInfiniteScroll.pageStatus.pageUrl
+			, name: gagaInfiniteScroll.pageStatus.nowPage
+			, pageNum : sPageNum
+			, dataIndex : sDataIndex
+			, htm : sHtml
+			, totalCount : gagaInfiniteScroll.pageStatus.totalCount
+		}, "", "");
+	},
+	pushLinkHistory : function(pageNum, dataIndex, obj) { // 링크에서 사용
+		var $pageNum = (pageNum || pageNum == 0) ? pageNum : '';
+		var $dataIndex = (dataIndex || dataIndex == 0) ? dataIndex : '';
+		var $html = (obj) ? $(obj).parents('#listBox').html() : '';
+
+		History.replaceState({
+			state : gagaInfiniteScroll.pageStatus.nowPage
+			, scroll : $(window).scrollTop()
+			, height : $('#infiniteContainer').height()
+			, pageUrl : gagaInfiniteScroll.pageStatus.pageUrl
+			, name : gagaInfiniteScroll.pageStatus.nowPage
+			, pageNum : $pageNum
+			, dataIndex : $dataIndex
+			, htm : $html
+			, totalCount : gagaInfiniteScroll.pageStatus.totalCount
+		}, "", "");
+
+		return false;
+	},
+	jsonToHtml : function(result) {
+		// Data 가져온 후 실행될 함수
+		// fnDrawInfiniteScrollData 함수는 개발단에서 구현해야 한다.
+		if (result.dataList == "not") // data가 더 이상 없으면
+			fnDrawInfiniteScrollData('not', result.CURRENT_PAGE - 1);
+		else
+			fnDrawInfiniteScrollData(result, result.CURRENT_PAGE - 1);
+	}
+};