Explorar el Código

Merge branch 'develop' into eskim

eskim hace 5 años
padre
commit
e23aadb16e
Se han modificado 47 ficheros con 1362 adiciones y 841 borrados
  1. 1 1
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 1 0
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  3. 3 2
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  4. 5 1
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 16 13
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 12 48
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  7. 38 1
      src/main/java/com/style24/front/biz/web/TsfSocialController.java
  8. 1 0
      src/main/java/com/style24/persistence/domain/Cate4Srch.java
  9. 2 0
      src/main/java/com/style24/persistence/domain/Plan.java
  10. 2 2
      src/main/java/com/style24/persistence/domain/Review.java
  11. 1 1
      src/main/java/com/style24/persistence/domain/Social.java
  12. 3 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  13. 16 16
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  14. 59 51
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  15. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  16. 150 139
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  17. 208 207
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  18. 3 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml
  19. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  20. 2 2
      src/main/resources/config/application-dev.yml
  21. 2 2
      src/main/resources/config/application-locd.yml
  22. 13 2
      src/main/resources/config/application-run.yml
  23. 2 2
      src/main/resources/config/application-tsit.yml
  24. 71 0
      src/main/webapp/WEB-INF/views/mob/cart/CartDelvFeeSaveGoodsPopupMob.html
  25. 37 26
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  26. 46 43
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  27. 95 0
      src/main/webapp/WEB-INF/views/mob/cart/CartTmtbSalesGoodsPopupMob.html
  28. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html
  29. 0 21
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html
  30. 7 7
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSnsJoinInitPwdFormMob.html
  31. 21 17
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  32. 1 3
      src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html
  33. 1 1
      src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html
  34. 36 18
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  35. 49 52
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustDeliveryAddrFormWeb.html
  36. 16 14
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  37. 2 1
      src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html
  38. 113 54
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  39. 106 7
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  40. 145 41
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  41. 4 3
      src/main/webapp/biz/goods.js
  42. 1 1
      src/main/webapp/ux/pc/css/common.css
  43. 17 9
      src/main/webapp/ux/pc/css/layout.css
  44. 11 9
      src/main/webapp/ux/pc/css/main.css
  45. 17 4
      src/main/webapp/ux/pc/js/common-ui.js
  46. 2 2
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js
  47. 20 13
      src/main/webapp/ux/style24_link.js

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

@@ -283,7 +283,7 @@ public class TsfCartService {
 				} else {
 					sb.append(cart.getCustNo());
 				}
-				sb.append("\n AND CD.ITEM_CD = '").append(param.getItemCd()).append("' \n AND CD.OPT_CD = '").append(param.getOptCd()).append("'");
+				sb.append("\n AND CD.ITEM_CD = '").append(param.getItemCd()).append("' \n AND CD.OPT_CD = '").append(param.getOptCd()).append("' AND C.CART_GB = 'G026_BC' ");
 				if (i < cartInfos.size()) {
 					i++;
 					sb.append("\n UNION ALL \n");

+ 1 - 0
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -400,6 +400,7 @@ public class TsfDisplayService {
 	public Collection<Goods> getBestItemCategoryGoodsList(Contents contents) {
 		Cate4Srch cate4Srch = new Cate4Srch();
 
+		cate4Srch.setPageGb(contents.getPageGb());
 		cate4Srch.setContentsLoc(contents.getContentsLoc());
 		cate4Srch.setPageable(contents.getPageable());
 		cate4Srch.setPageNo(contents.getPageNo());

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

@@ -805,8 +805,8 @@ public class TsfOrderService {
 	}
 
 	/**
-	 * USAFE 보증보험 신청
-	 * temp.setOrdNo(111);			// 상품명 배열
+	 * USAFE 보증보험 입금 확인(보증보험 신청 완료 > 완료 후 취소안됨 주의)
+	 * temp.setOrdNo(111);			// 주문번호
 	 * @param param
 	 * @author xodud1202
 	 * @since 2021. 04. 26
@@ -816,6 +816,7 @@ public class TsfOrderService {
 		// 보증보험 정보 조회
 		Order insurance = coreOrderDao.getInsuranceInfo(param);
 
+		// 보증보험 신청 이력이 없으면 완료안됨
 		if(insurance != null) {
 			// 보증보험 입금 완료 정보 송부
 			InsuranceManager manager = new InsuranceManager(env.getProperty("usafe.guarantee.send.url"), null);

+ 5 - 1
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -702,14 +702,18 @@ public class TsfDisplayController extends TsfBaseController {
 		contents.setPageGb("BEST");
 		MainLayout mainLayout = new MainLayout();
 		mainLayout.setGoodsList(displayService.getBestItemCategoryGoodsList(contents));
-
 		int totalCnt = mainLayout.getGoodsList().size();
+		if(totalCnt>100){
+			totalCnt = 100;
+		}
 		pageable.setTotalCount(totalCnt);
 		contents.setPageable(pageable);
 
 		result.set("paging", contents);
 		result.set("totalCnt", totalCnt);
 		result.set("endRow", pageable.getEndRow());
+		contents.setContentsLoc("SCM003");
+		contents.setPageGb("BEST");
 		result.set("dataList", displayService.getBestItemCategoryGoodsList(contents));
 		return result;
 	}

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

@@ -1524,10 +1524,10 @@ public class TsfMypageController extends TsfBaseController {
 		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		// 작성가능한 리뷰 카운트
 		review.setReviewExpireDay(eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value()));
-		mav.addObject("completeReviewCount", reviewService.getCompleteReviewCount(review));
+		mav.addObject("completeReviewCount", reviewService.getCompleteReviewList(review).size());
 
 		// 작성한 리뷰 카운트
-		mav.addObject("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
+		mav.addObject("alreadyReviewCount", reviewService.getAlreadyReviewList(review).size());
 
 		// 관리자 댓글확인 
 		mav.addObject("adminCount", reviewService.getAdminConfirmCount(review));
@@ -1557,16 +1557,18 @@ public class TsfMypageController extends TsfBaseController {
 			review.setCustNo(TsfSession.getInfo().getCustNo());
 		}
 		GagaMap result = new GagaMap();
-
+		int reviewExpireDay = eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value());
+		review.setReviewExpireDay(reviewExpireDay);
+		result.set("completeReviewCount", reviewService.getCompleteReviewList(review).size());
 		TscPageRequest pageable = new TscPageRequest((review.getPageNo() > 0 ? review.getPageNo() - 1 : 0), review.getPageSize(), review.getPageUnit());
-		pageable.setTotalCount(reviewService.getCompleteReviewCount(review));
+		pageable.setTotalCount(reviewService.getCompleteReviewList(review).size());
 		review.setPageable(pageable);
 		log.info("pageable: {}", pageable);
 		log.info("totalCount {}", pageable.getTotalCount());
-		int reviewExpireDay = eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value());
-		review.setReviewExpireDay(reviewExpireDay);
-		result.set("paging", review);
-		result.set("completeReviewCount", reviewService.getCompleteReviewCount(review));
+		
+		result.set("paging1", review);
+		
+		
 		result.set("dataList1", reviewService.getCompleteReviewList(review));
 
 		return result;
@@ -1589,14 +1591,15 @@ public class TsfMypageController extends TsfBaseController {
 		if (TsfSession.isLogin()) {
 			review.setCustNo(TsfSession.getInfo().getCustNo());
 		}
-
-		TscPageRequest pageable2 = new TscPageRequest((review.getPageNo2() > 0 ? review.getPageNo2() - 1 : 0), review.getPageSize2(), review.getPageUnit2());
-		pageable2.setTotalCount(reviewService.getAlreadyReviewCount(review));
-
+		
 		review.setReviewExpireDay(eventService.getGoodsReviewPointExpireDays(TscConstants.Site.STYLE24.value()));
+		result.set("alreadyReviewCount", reviewService.getAlreadyReviewList(review).size());
+		
+		TscPageRequest pageable2 = new TscPageRequest((review.getPageNo2() > 0 ? review.getPageNo2() - 1 : 0), review.getPageSize2(), review.getPageUnit2());
+		pageable2.setTotalCount(reviewService.getAlreadyReviewList(review).size());
 		review.setPageable2(pageable2);
 		result.set("paging2", review);
-		result.set("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
+		
 		result.set("dataList2", reviewService.getAlreadyReviewList(review));
 
 		return result;

+ 12 - 48
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -203,11 +203,9 @@ public class TsfPlanningController extends TsfBaseController {
 		
 		// 코너 목록
 		mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
-		mav.addObject("planCornerListLength", planningService.getPlanCornerList(plan).size());
-		
 		// 코너 상품
 		mav.addObject("planCornerGoodsList", planningService.getPlanningCornerGoodsList(plan));
-
+		//mav.addObject("planCornerListLength", planningService.getPlanCornerList(plan).size());
 
 		// Popup Parameter
 		mav.addObject("preview", plan.getPreview());
@@ -463,47 +461,7 @@ public class TsfPlanningController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("planning/PlanningEventPollForm"));
 		return mav;
 	}
-	
-//	/**
-//	 * 이벤트 설문조사 접근확인
-//	 * @param 
-//	 * @return
-//	 * @author sowon
-//	 * @since 2021. 4. 3
-//	 */
-//	@PostMapping("/event/poll/access")
-//	@ResponseBody
-//	public GagaMap planningEventPollAccess(@RequestBody Plan plan) {
-//		
-//		GagaMap result = new GagaMap();
-//		Poll poll = new Poll();
-//		plan.setSiteCd(TscConstants.Site.STYLE24.value());
-//		plan.setFrontGb(TsfSession.getFrontGb());
-//		plan.setCustNo(TsfSession.getInfo().getCustNo());
-//		
-//		poll = planningService.getPollQuestionInfo(plan);
-//		String partYn = poll.getDupPartiYn(); 
-//		String comYn = poll.getFstComYn();
-//		int partiCnt = poll.getPartiCnt();
-//		// 중복참여가 아닌경우
-//		if(partYn.equals("N")) {
-//			int count = planningService.getCustAnswerCount(plan);
-//			if (count>0) {
-//				result.set("msg","이미 응모하셨습니다.");
-//				result.set("status","1");
-//			}
-//		}
-//		else if (comYn.equals("Y")) {
-//			int count = planningService.getCustAnswerPartiCount(poll);
-//			if (count>=partiCnt) {
-//				result.set("msg","선착순 응모가 마감되었습니다.");
-//				result.set("status","2");
-//			}
-//			
-//		}
-//		return result;
-//	}
-	
+
 
 	
 	/**
@@ -530,7 +488,7 @@ public class TsfPlanningController extends TsfBaseController {
 	 * @since 2021. 3. 30
 	 */
 	@GetMapping("/shot/delivery/guide/form")
-	public ModelAndView planningShotDeliveryForm(Plan plan) throws Exception {
+	public ModelAndView planningShotDeliveryForm(@RequestParam(value="planSq")Integer planSq ,Plan plan) throws Exception {
 		ModelAndView mav = new ModelAndView();
 		CustDeliveryAddr addr = new CustDeliveryAddr();
 		Integer custNo = null;
@@ -544,11 +502,17 @@ public class TsfPlanningController extends TsfBaseController {
 			customer = coreCustomerService.getCustomerInfo(customer);
 			mav.addObject("customerInfo", customer);
 		}
-		
+		plan.setFrontGb(TsfSession.getFrontGb());
+		plan.setSiteCd(TscConstants.Site.STYLE24.value());
+		plan.setCustGb(TsfSession.getCustGb());
+		// 코너 목록
+		mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
+		// 코너 상품
+		mav.addObject("planCornerGoodsList", planningService.getPlanningCornerGoodsList(plan));
 
 		addr.setCustNo(custNo);
-		plan.setSiteCd(TscConstants.Site.STYLE24.value());
-		plan.setFrontGb(TsfSession.getFrontGb());
+		
+		
 		mav.addObject("custAddr", planningService.getCustAddrInfo(addr));
 		mav.addObject("shotHtml", planningService.getShotDeliveryHtml(plan));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningShotGuideForm"));

+ 38 - 1
src/main/java/com/style24/front/biz/web/TsfSocialController.java

@@ -1,16 +1,24 @@
 package com.style24.front.biz.web;
 
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.service.TsfSocialService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.TscPageRequest;
+import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Social;
 
 import lombok.extern.slf4j.Slf4j;
@@ -48,11 +56,40 @@ public class TsfSocialController extends TsfBaseController {
 		mav.addObject("socialInfo", socialService.getSocialInfo(social));
 		
 		// 소셜(핫딜)-상품목록
-		mav.addObject("socialGoods", socialService.getSocialGoodsList(social));
+		//mav.addObject("socialGoods", socialService.getSocialGoodsList(social));
 	
 		mav.setViewName(super.getDeviceViewName("social/SocialMainForm"));
 		return mav;
 	}
 	
+	/**
+	 * 소셜 상품 리스트
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 29
+	 */
+	@PostMapping("/list")
+	@ResponseBody
+	public GagaMap getSocialList(@RequestBody Social social) {
+		GagaMap result = new GagaMap();
+		TscPageRequest pageable = new TscPageRequest((social.getPageNo() > 0 ? social.getPageNo() - 1 : 0), social.getPageSize(), social.getPageUnit());
+		social.setFrontGb(TsfSession.getFrontGb());
+		social.setCustGb(TsfSession.getCustGb());
+		social.setSiteCd(TscConstants.Site.STYLE24.value());
+		int totalCnt =  socialService.getSocialGoodsList(social).size();
+		pageable.setTotalCount(totalCnt);
+		social.setPageable(pageable);
+		
+		
+		
+		result.set("paging", social);
+		result.set("totalCnt", totalCnt);
+		result.set("endRow", pageable.getEndRow());
+		result.set("dataList", socialService.getSocialGoodsList(social));
+
+		return result;
+	}
+	
 
 }

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

@@ -52,6 +52,7 @@ public class Cate4Srch extends TscBaseDomain {
 	private String preview;			// 미리보기 여부 (Y:미리보기)
 
 	private String filterGb;		// 필터 구분값
+	private String pageGb;
 
 	private TscPageRequest pageable;				// 페이징
 	private int pageNo = 1;

+ 2 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -109,6 +109,8 @@ public class Plan extends TscBaseDomain {
 	private String cateNm;			// 카테고리명
 	private Integer cateNo;			// 카테고리번호
 	private String brandGroupNm;	// 브랜드 그룹 이름
+	private String colorChips;
+	private String icon;
 
 	// 고객등급
 	private String custGradeName;	// 접근가능고객 등급 네임

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

@@ -152,11 +152,11 @@ public class Review extends TscBaseDomain {
 	private TscPageRequest pageable2;
 
 	private int pageNo = 1;							// 페이지번호
-	private int pageSize = 5;						// 페이지목록수
+	private int pageSize = 10;						// 페이지목록수
 	private int pageUnit = 10;						// 페이지번호수
 
 	private int pageNo2 = 1;							// 페이지번호
-	private int pageSize2 = 5;						// 페이지목록수
+	private int pageSize2 = 10;						// 페이지목록수
 	private int pageUnit2 = 10;						// 페이지번호수
 
 }

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

@@ -92,7 +92,7 @@ public class Social extends TscBaseDomain{
 		// Pagination
 		private TscPageRequest pageable;
 		private int pageNo = 1;
-		private int pageSize = 50;
+		private int pageSize = 10;
 		private int pageUnit = 10;
 		
 }

+ 3 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -749,11 +749,13 @@
 		        WHERE 1=1
 		        AND CUST_NO = #{custNo}
 		        AND NOW() BETWEEN AVAIL_STDT AND AVAIL_EDDT 
-		        AND NOW() BETWEEN DATE_ADD(AVAIL_EDDT , INTERVAL -7 DAY) AND AVAIL_EDDT ) AS EXPIRE_COUPON_CNT
+		        AND NOW() BETWEEN DATE_ADD(AVAIL_EDDT , INTERVAL -7 DAY) AND AVAIL_EDDT 
+		        AND USED_DT IS NULL) AS EXPIRE_COUPON_CNT
 		FROM TB_CUST_COUPON 
 		WHERE 1=1
 		  AND CUST_NO = #{custNo}
 		  AND NOW() BETWEEN AVAIL_STDT AND AVAIL_EDDT
+		  AND USED_DT IS NULL
 	</select>
 	
 	<select id="getCouponDetailInfo" resultType="Coupon" parameterType="Coupon">

+ 16 - 16
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -717,14 +717,14 @@
 		                  , G.GOODS_TNM                                                                          /*상품타이틀명*/
 		                  , G.MAIN_COLOR_CD                                                                      /*대표색상코드*/
 		                  , G.LIST_PRICE                                                                         /*정상가(최초판매가)*/
-		                  , CASE WHEN 'P' = 'P' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
-		                  WHEN 'P' = 'M' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
-		                  WHEN 'P' = 'A' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
-		                  WHEN 'P' = 'P' AND GBP.CUST_GB != 'G100_20' THEN GBP.PC_CURR_PRICE
-		                  WHEN 'P' = 'M' AND GBP.CUST_GB != 'G100_20' THEN GBP.MO_CURR_PRICE
-		                  WHEN 'P' = 'A' AND GBP.CUST_GB != 'G100_20' THEN GBP.APP_CURR_PRICE
-		                  ELSE G.CURR_PRICE
-		                  END                                                   AS CURR_PRICE       /*현재판매가*/
+		                  , CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
+		                         WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
+		                         WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
+		                         WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN GBP.PC_CURR_PRICE
+		                         WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN GBP.MO_CURR_PRICE
+		                         WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN GBP.APP_CURR_PRICE
+		                         ELSE G.CURR_PRICE
+		                    END                                                   AS CURR_PRICE       /*현재판매가*/
 		                  , G.MIN_ORD_AMT                                                                        /*최수주문금액*/
 		                  , G.FORMAL_GB /*정상이월구분*/
 		                  , G.REG_DT                                                                             /*등록일시*/
@@ -892,14 +892,14 @@
 		                         , G.GOODS_TNM                                                                          /*상품타이틀명*/
 		                         , G.MAIN_COLOR_CD                                                                      /*대표색상코드*/
 		                         , G.LIST_PRICE                                                                         /*정상가(최초판매가)*/
-		                         , CASE WHEN 'P' = 'P' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
-		                         WHEN 'P' = 'M' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
-		                         WHEN 'P' = 'A' AND GBP.CUST_GB = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
-		                         WHEN 'P' = 'P' AND GBP.CUST_GB != 'G100_20' THEN GBP.PC_CURR_PRICE
-		                         WHEN 'P' = 'M' AND GBP.CUST_GB != 'G100_20' THEN GBP.MO_CURR_PRICE
-		                         WHEN 'P' = 'A' AND GBP.CUST_GB != 'G100_20' THEN GBP.APP_CURR_PRICE
-		                         ELSE G.CURR_PRICE
-		                         END                                                   AS CURR_PRICE       /*현재판매가*/
+		                         , CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
+		                                WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
+		                                WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
+		                                WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN GBP.PC_CURR_PRICE
+		                                WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN GBP.MO_CURR_PRICE
+		                                WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN GBP.APP_CURR_PRICE
+		                                ELSE G.CURR_PRICE
+		                           END                                                   AS CURR_PRICE       /*현재판매가*/
 		                         , G.MIN_ORD_AMT                                                                        /*최수주문금액*/
 		                         , G.FORMAL_GB /*정상이월구분*/
 		                         , G.REG_DT                                                                             /*등록일시*/

+ 59 - 51
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1160,8 +1160,11 @@
 		                 , G.REG_DT DESC
 		                 , G.GOODS_CD) AS NUMB
 		                     </when>
-		                     <when test="contentsLoc == 'SCM002' or contentsLoc == 'SCM003'"> <!-- md추천 -->
+		                     <when test="contentsLoc == 'SCM002' or (contentsLoc == 'SCM003' and pageGb == null)"> <!-- md추천 -->
 		                  , ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
+		                     </when>
+		                     <when test="contentsLoc == 'SCM003' and pageGb != null and pageGb == 'BEST'">
+		                  , ROW_NUMBER() OVER(ORDER BY C4.CATE1_NO, CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
 		                     </when>
 		                     <otherwise>
 		                 , ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD
@@ -1170,62 +1173,67 @@
 		                     </otherwise>
 		                 </choose>
 		            <choose>
-						<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007'"> <!-- md추천 -->
-							FROM	TB_CONTENTS CT
-							, TMP_CONTENTS_GOODS CTG
-							, TB_GOODS G
-							, TB_GOODS_STOCK S
-							, TB_BRAND B
-							, TB_BRAND_GROUP BG
-							WHERE	CT.CONTENTS_LOC = CTG.CONTENTS_LOC
-							AND 	CT.DISP_ORD = CTG.CONTENTS_SQ
-							AND		CTG.GOODS_CD = G.GOODS_CD
-							AND		CTG.GOODS_CD = S.GOODS_CD
-							AND		G.BRAND_CD = B.BRAND_CD
-							AND     B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-							AND		CT.CONTENTS_LOC = #{contentsLoc}
-						    AND 	CTG.CONTENTS_SQ = #{dispOrd}
-							AND		NOW() BETWEEN CT.DISP_STDT AND CT.DISP_EDDT
-						</when>
-		            	<otherwise>
-							FROM   TB_CATE_4SRCH C4
-							, TB_CATE_GOODS CG
-							, TB_GOODS G
-							, TB_GOODS_STOCK S
-							, TB_BRAND B
-							, TB_BRAND_GROUP BG
-							<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
-								, TB_GOODS_SUMMARY GS
-							</if>
-							WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
-							<choose>
-								<when test="brandGroupNo != null and brandGroupNo != ''">
-									AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
-								</when>
-								<otherwise>
-									AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
-								</otherwise>
-							</choose>
-							AND    CG.GOODS_CD = G.GOODS_CD
-							AND    CG.GOODS_CD = S.GOODS_CD
-							AND    G.BRAND_CD = B.BRAND_CD
-							AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-							<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
-								AND    CG.GOODS_CD = GS.GOODS_CD
-							</if>
-							AND    C4.SITE_CD = #{siteCd}
-							AND    C4.CATE_GB = #{cateGb}
-							AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
-							AND    C4.CATE1_NO = #{cate1No}
-							AND    C4.CONTENTS_LOC = #{contentsLoc}
-						</otherwise>
-					</choose>
+		                <when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007'"> <!-- md추천 -->
+		                    FROM	TB_CONTENTS CT
+		                    , TMP_CONTENTS_GOODS CTG
+		                    , TB_GOODS G
+		                    , TB_GOODS_STOCK S
+		                    , TB_BRAND B
+		                    , TB_BRAND_GROUP BG
+		                    WHERE	CT.CONTENTS_LOC = CTG.CONTENTS_LOC
+		                    AND 	CT.DISP_ORD = CTG.CONTENTS_SQ
+		                    AND		CTG.GOODS_CD = G.GOODS_CD
+		                    AND		CTG.GOODS_CD = S.GOODS_CD
+		                    AND		G.BRAND_CD = B.BRAND_CD
+		                    AND     B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		                    AND		CT.CONTENTS_LOC = #{contentsLoc}
+		                    AND 	CTG.CONTENTS_SQ = #{dispOrd}
+		                    AND		NOW() BETWEEN CT.DISP_STDT AND CT.DISP_EDDT
+		                </when>
+		                <otherwise>
+		                    FROM   TB_CATE_4SRCH C4
+		                    , TB_CATE_GOODS CG
+		                    , TB_GOODS G
+		                    , TB_GOODS_STOCK S
+		                    , TB_BRAND B
+		                    , TB_BRAND_GROUP BG
+		                    <if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		                    , TB_GOODS_SUMMARY GS
+		                    </if>
+		                    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                    <choose>
+		                        <when test="brandGroupNo != null and brandGroupNo != ''">
+		                    AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                        </when>
+		                        <otherwise>
+		                    AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                        </otherwise>
+		                    </choose>
+		                    AND    CG.GOODS_CD = G.GOODS_CD
+		                    AND    CG.GOODS_CD = S.GOODS_CD
+		                    AND    G.BRAND_CD = B.BRAND_CD
+		                    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		                    <if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		                    AND    CG.GOODS_CD = GS.GOODS_CD
+	                        </if>
+	                        AND    C4.SITE_CD = #{siteCd}
+	                        AND    C4.CATE_GB = #{cateGb}
+	                        AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
+	                        <if test="pageGb == null or pageGb != 'BEST'">
+		                    AND    C4.CATE1_NO = #{cate1No}
+		                    </if>
+		                    AND    C4.CONTENTS_LOC = #{contentsLoc}
+		              </otherwise>
+		           </choose>
 		            AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
 		            AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
 		            AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
 		            AND    S.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
 		            AND    B.USE_YN = 'Y'
 		            AND    BG.USE_YN = 'Y'
+		            <if test="pageGb != null and pageGb == 'BEST'">
+		            ORDER BY C4.CATE1_NO
+		            </if>
 		           ) G
 		    WHERE  1=1
 		<if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">

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

@@ -818,7 +818,7 @@
 	<select id="getPlanGoodsDisplayList" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.getPlanGoodsDisplayList */
 		SELECT Z.*
-		      ,100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE 
+		      ,(CASE WHEN Z.LIST_PRICE > 0 THEN 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
 		FROM
 		(
 		WITH TAB_PLAN_GOODS AS (
@@ -933,7 +933,7 @@
 	<select id="getPlanningCornerGoodsList" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.getPlanningCornerGoodsList */
 		SELECT Z.*
-		     , 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE
+		     ,(CASE WHEN Z.LIST_PRICE > 0 THEN 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
 		FROM   (
 		        WITH TAB_PLAN_GOODS AS (
 		            SELECT P.PLAN_SQ                                                /*기획전번호*/

+ 150 - 139
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -41,167 +41,178 @@
 		FROM   TB_CUST_POINT
 		WHERE  CUST_NO = #{custNo}
 		AND    EXP_BE_DT > NOW()
-		AND    EXP_BE_DT <![CDATA[<]]> DATE_ADD(NOW(),INTERVAL 30 DAY)
+		AND    EXP_BE_DT <![CDATA[<]]> DATE_ADD(NOW(),INTERVAL 31 DAY)
 	</select>
 	
 	<!-- 적립내역 조회-->
 	<select id="getAccumulatePointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getAccumulatePointList */
-		SELECT CASE TCHP.OCCUR_GB
+		SELECT  CASE CPH.OCCUR_GB
+					WHEN 'G069_11' THEN '구매 취소'
 		            WHEN 'G069_12' THEN '상품 구매'
-		            WHEN 'G069_20' THEN '상품평'
+		            WHEN 'G069_20' THEN '리뷰'
 		            WHEN 'G069_30' THEN '이벤트'
 		            WHEN 'G069_31' THEN '회원가입'
-		            WHEN 'G069_32' THEN '생일축하'
-		            WHEN 'G069_35' THEN 'APP다운'
-		            WHEN 'G069_36' THEN '사은품구매'
+		            WHEN 'G069_32' THEN '생일'
+		            WHEN 'G069_35' THEN 'APP'
 		            WHEN 'G069_37' THEN '이벤트'
+		            WHEN 'G069_41' THEN '구매 취소'
+		            WHEN 'G069_43' THEN '구매 취소'
+		            WHEN 'G069_44' THEN '관리자'
 		            WHEN 'G069_90' THEN '관리자'
 		       END                                          AS OCCUR_GB
-		     , CASE TCHP.OCCUR_GB
-		            WHEN 'G069_12' THEN TG.GOODS_NM
-		            WHEN 'G069_20' THEN TG.GOODS_NM
-		            WHEN 'G069_30' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_31' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_32' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_35' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_36' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_37' THEN TCHP.OCCUR_DTL_DESC
-		            WHEN 'G069_90' THEN TCHP.OCCUR_DTL_DESC
+		    , CASE CPH.OCCUR_GB
+					WHEN 'G069_11' THEN G.GOODS_NM
+		            WHEN 'G069_12' THEN G.GOODS_NM
+		            WHEN 'G069_20' THEN G.GOODS_NM
+		            WHEN 'G069_30' THEN '이벤트'
+		            WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_37' THEN '출석체크'
+		            WHEN 'G069_41' THEN G.GOODS_NM
+		            WHEN 'G069_43' THEN FR.GOODS_NM
+		            WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
 		       END                                          AS  OCCUR_DTL_DESC
-		      , TCHP.PNT_AMT                                AS PNT_AMT
-		      , TCHP.UPD_DT                                 AS PNT_UPLOAD_DT
-		FROM TB_CUST_POINT_HST TCHP
-		LEFT JOIN
-		    (
-		     SELECT REVIEW_SQ
-		          , ORD_NO
-		          , ORD_DTL_NO
-		          , GOODS_CD
-		     FROM   TB_REVIEW TR
-		     WHERE  TR.PNT_GIVE_STAT = 'G043_30'            /* 리뷰조건 : 포인트지급반영*/
-		    ) TR
-		ON TCHP.REVIEW_SQ = TR.REVIEW_SQ
-		AND (TCHP.ORD_NO = TR.ORD_NO AND TCHP.ORD_DTL_NO = TR.ORD_DTL_NO)
-		LEFT JOIN TB_ORDER_DETAIL TOD
-		ON TCHP.ORD_NO = TOD.ORD_NO
-		AND TCHP.ORD_DTL_NO = TOD.ORD_DTL_NO
-		LEFT JOIN TB_GOODS TG
-		ON (TG.GOODS_CD = TOD.GOODS_CD OR TG.GOODS_CD = TR.GOODS_CD)
-		WHERE TCHP.CUST_NO = #{custNo}
-		<!-- AND CASE WHEN NULLIF(TCHP.REVIEW_SQ, 0) IS NULL THEN 1
-		         WHEN NULLIF(TCHP.REVIEW_SQ, 0) IS NOT NULL AND NULLIF(TR.REVIEW_SQ, 0) IS NOT NULL THEN 1 /* 상품평조건 */
-		    END > 0 -->
-		AND TCHP.OCCUR_GB IN ('G069_12','G069_20','G069_30','G069_31','G069_32','G069_35','G069_36','G069_37','G069_90')
-		AND TCHP.PNT_UPLOAD_STAT = 'G070_30'														/* 공통코드 : 반영완료 */
-		AND TCHP.PNT_AMT <![CDATA[>]]> 0
-		AND DATE_FORMAT(TCHP.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY TCHP.REVIEW_SQ,TCHP.OCCUR_GB, PNT_AMT, GOODS_NM, TCHP.OCCUR_DTL_DESC, TCHP.UPD_DT
-		ORDER BY TCHP.UPD_DT DESC;
+		     , CPH.PNT_AMT
+		     , CPH.REG_DT AS PNT_UPLOAD_DT
+		FROM TB_CUST_POINT_HST CPH
+		LEFT JOIN TB_ORDER_DETAIL OD
+		ON  CPH.ORD_NO = OD.ORD_NO
+		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		LEFT JOIN TB_GOODS G
+		ON  OD.GOODS_CD = G.GOODS_CD
+		LEFT JOIN (SELECT FG.GOODS_NM
+		                 ,OFV.ORD_NO 
+		           FROM TB_ORD_FREEGIFT_VAL OFV
+		           INNER JOIN TB_FREE_GOODS FG
+		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		           )FR ON CPH.ORD_NO = FR.ORD_NO
+
+		WHERE CPH.CUST_NO = #{custNo}
+		AND CPH.PNT_AMT > 0
+		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		GROUP BY CPH.REG_DT
+		ORDER BY CPH.REG_DT DESC
 	</select>
 	
 	<!-- 사용내역 조회-->
 	<select id="getUsePointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getUsePointList */
-	SELECT
-		CASE   TCHP.OCCUR_GB
-			WHEN   'G069_13' THEN '구매 취소'
-			WHEN   'G069_40' THEN '구매 사용'
-			WHEN   'G069_42' THEN '사은품'
-			WHEN   'G069_90' THEN '관리자'
-			WHEN   'G069_99' THEN '소멸'
-		END AS OCCUR_GB ,	
-		CASE   TCHP.OCCUR_GB	
-			WHEN   'G069_13' THEN TG.GOODS_NM
-			WHEN   'G069_40' THEN TG.GOODS_NM 
-			WHEN   'G069_42' THEN TG.GOODS_NM
-			WHEN   'G069_90' THEN TCHP.OCCUR_DTL_DESC
-			WHEN   'G069_99' THEN '유효기간 경과 소멸'
-		END AS OCCUR_DTL_DESC
-			 , TCHP.PNT_AMT AS pntAmt
-			 , TCHP.UPD_DT  AS pntUploadDt
-		FROM TB_CUST_POINT_HST TCHP
-		LEFT JOIN TB_ORDER_DETAIL TOD																/* 주문상세 */
-		ON TOD.ORD_NO = TCHP.ORD_NO
-		AND TOD.ORD_DTL_NO = TCHP.ORD_DTL_NO
-		LEFT JOIN TB_ORD_FREEGIFT TOF																/* 사은품 */
-		ON TOD.ORD_NO = TOF.ORD_NO
-		LEFT JOIN TB_GOODS TG																		/* 상품품 */
-		ON TG.GOODS_CD = TOD.GOODS_CD 
-		WHERE TCHP.CUST_NO = #{custNo}
-		AND TCHP.OCCUR_GB IN ('G069_13','G069_40','G069_42','G069_90','G069_99')
-		AND TCHP.PNT_UPLOAD_STAT = 'G070_30'														/* 공통코드 : 반영완료 */
-		AND 0 <![CDATA[>]]> TCHP.PNT_AMT
-		AND DATE_FORMAT(TCHP.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY  TCHP.OCCUR_GB, PNT_AMT, GOODS_NM, TCHP.OCCUR_DTL_DESC, TCHP.UPD_DT
-	ORDER BY TCHP.UPD_DT DESC;
+		SELECT  CASE CPH.OCCUR_GB
+		            WHEN 'G069_10' THEN '상품 구매'
+		            WHEN 'G069_13' THEN '구매 취소'
+		            WHEN 'G069_21' THEN '리뷰'
+		            WHEN 'G069_36' THEN '상품 구매'
+		            WHEN 'G069_40' THEN '상품 구매'
+		            WHEN 'G069_42' THEN '사은품'
+		            WHEN 'G069_46' THEN '적립취소'
+		            WHEN 'G069_90' THEN '관리자'
+		            WHEN 'G069_99' THEN '소멸'
+		       END                                          AS OCCUR_GB
+		     , CASE CPH.OCCUR_GB
+		            WHEN 'G069_10' THEN G.GOODS_NM
+		            WHEN 'G069_13' THEN G.GOODS_NM
+		            WHEN 'G069_21' THEN G.GOODS_NM
+		            WHEN 'G069_36' THEN G.GOODS_NM
+		            WHEN 'G069_40' THEN G.GOODS_NM
+		            WHEN 'G069_42' THEN FR.GOODS_NM
+		            WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_99' THEN '유효기간 경과 소멸'
+		       END                                          AS  OCCUR_DTL_DESC
+		     , CPH.PNT_AMT
+		     , CPH.REG_DT AS PNT_UPLOAD_DT
+		FROM TB_CUST_POINT_HST CPH
+		LEFT JOIN TB_ORDER_DETAIL OD
+		ON  CPH.ORD_NO = OD.ORD_NO
+		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		LEFT JOIN TB_GOODS G
+		ON  OD.GOODS_CD = G.GOODS_CD
+		LEFT JOIN (SELECT FG.GOODS_NM
+		                 ,OFV.ORD_NO 
+		           FROM TB_ORD_FREEGIFT_VAL OFV
+		           INNER JOIN TB_FREE_GOODS FG
+		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		           )FR ON CPH.ORD_NO = FR.ORD_NO
+		WHERE CPH.CUST_NO = #{custNo}
+		AND CPH.PNT_AMT <![CDATA[<]]> 0
+		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		GROUP BY CPH.ORD_NO, CPH.REG_DT
+		ORDER BY CPH.REG_DT DESC
 	</select>
 	
 	<!-- 전체내역 조회-->
 	<select id="getAllPointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getAllPointList */
-	SELECT
-		CASE   TCHP.OCCUR_GB
-		WHEN   'G069_12' THEN '상품 구매'
-		WHEN   'G069_13' THEN '구매 취소'
-		WHEN   'G069_20' THEN '상품평'	
-		WHEN   'G069_30' THEN '이벤트'
-		WHEN   'G069_31' THEN '회원가입'
-		WHEN   'G069_32' THEN '생일축하'
-		WHEN   'G069_35' THEN 'APP다운'
-		WHEN   'G069_36' THEN '사은품구매'
-		WHEN   'G069_37' THEN '이벤트'
-		WHEN   'G069_40' THEN '구매 사용'
-		WHEN   'G069_42' THEN '사은품'
-		WHEN   'G069_90' THEN '관리자'
-		WHEN   'G069_99' THEN '소멸'
-		END AS OCCUR_GB ,	
-		CASE   TCHP.OCCUR_GB
-		WHEN   'G069_12' THEN TG.GOODS_NM 
-		WHEN   'G069_13' THEN TG.GOODS_NM 
-		WHEN   'G069_20' THEN TG.GOODS_NM
-		WHEN   'G069_30' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_31' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_32' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_35' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_36' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_37' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_40' THEN TG.GOODS_NM 
-		WHEN   'G069_42' THEN TG.GOODS_NM
-		WHEN   'G069_90' THEN TCHP.OCCUR_DTL_DESC
-		WHEN   'G069_99' THEN '유효기간 경과 소멸'
-		END AS OCCUR_DTL_DESC
-			 , TCHP.PNT_AMT AS pntAmt
-			 , TCHP.UPD_DT  AS pntUploadDt
-		FROM TB_CUST_POINT_HST TCHP
-		LEFT JOIN 
-		(
-			SELECT REVIEW_SQ
-				 , ORD_NO 
-				 , ORD_DTL_NO 
-		         , GOODS_CD
-			FROM TB_REVIEW TR
-			WHERE TR.PNT_GIVE_STAT = 'G043_30'
-		) TR
-		ON TCHP.REVIEW_SQ = TR.REVIEW_SQ
-		AND (TCHP.ORD_NO = TR.ORD_NO AND TCHP.ORD_DTL_NO = TR.ORD_DTL_NO)
-		LEFT JOIN TB_ORDER_DETAIL TOD
-		ON TCHP.ORD_NO = TOD.ORD_NO
-		AND TCHP.ORD_DTL_NO = TOD.ORD_DTL_NO
-		LEFT JOIN TB_ORD_FREEGIFT TOF
-		ON TOD.ORD_NO = TOF.ORD_NO
-		LEFT JOIN TB_GOODS TG 
-		ON (TG.GOODS_CD = TOD.GOODS_CD OR TG.GOODS_CD = TR.GOODS_CD)
-		WHERE TCHP.CUST_NO = #{custNo}
-		<!-- AND CASE
-			WHEN NULLIF(TCHP.REVIEW_SQ, 0) IS NULL THEN 1
-			WHEN NULLIF(TCHP.REVIEW_SQ, 0) IS NOT NULL AND NULLIF(TR.REVIEW_SQ, 0) IS NOT NULL THEN 1
-		END <![CDATA[>]]> 0		 -->
-		AND TCHP.OCCUR_GB IN  ('G069_12','G069_13','G069_20','G069_30','G069_31','G069_32','G069_35','G069_36','G069_37','G069_40','G069_42','G069_90','G069_99')
-		AND TCHP.PNT_UPLOAD_STAT = 'G070_30'
-		AND DATE_FORMAT(TCHP.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY TCHP.REVIEW_SQ, TCHP.OCCUR_GB, PNT_AMT, GOODS_NM, TCHP.OCCUR_DTL_DESC, TCHP.UPD_DT
-	ORDER BY TCHP.UPD_DT DESC;
+		SELECT  CASE CPH.OCCUR_GB
+		            WHEN 'G069_10' THEN '상품 구매'
+		            WHEN 'G069_11' THEN '구매 취소'
+		            WHEN 'G069_12' THEN '상품 구매'
+		            WHEN 'G069_13' THEN '구매 취소'
+		            WHEN 'G069_20' THEN '리뷰'
+		            WHEN 'G069_21' THEN '리뷰'
+		            WHEN 'G069_30' THEN '이벤트'
+		            WHEN 'G069_31' THEN '회원가입'
+		            WHEN 'G069_32' THEN '생일'
+		            WHEN 'G069_35' THEN 'APP'
+		            WHEN 'G069_36' THEN '상품 구매'
+		            WHEN 'G069_37' THEN '이벤트'
+		            WHEN 'G069_40' THEN '상품 구매'
+		            WHEN 'G069_41' THEN '구매 취소'
+		            WHEN 'G069_42' THEN '사은품'
+		            WHEN 'G069_43' THEN '사은품'
+		            WHEN 'G069_44' THEN '관리자'
+		            WHEN 'G069_45' THEN '관리자'
+		            WHEN 'G069_46' THEN '적립취소'
+		            WHEN 'G069_90' THEN '관리자'
+		            WHEN 'G069_99' THEN '소멸'
+		       END                                          AS OCCUR_GB
+     , CASE CPH.OCCUR_GB
+                    WHEN 'G069_10' THEN G.GOODS_NM
+		            WHEN 'G069_11' THEN G.GOODS_NM
+		            WHEN 'G069_12' THEN G.GOODS_NM
+		            WHEN 'G069_13' THEN G.GOODS_NM
+		            WHEN 'G069_20' THEN G.GOODS_NM
+		            WHEN 'G069_21' THEN G.GOODS_NM
+		            WHEN 'G069_30' THEN '이벤트'
+		            WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_36' THEN G.GOODS_NM
+		            WHEN 'G069_37' THEN '출석체크'
+		            WHEN 'G069_40' THEN G.GOODS_NM
+		            WHEN 'G069_41' THEN G.GOODS_NM
+		            WHEN 'G069_42' THEN FR.GOODS_NM
+		            WHEN 'G069_43' THEN FR.GOODS_NM
+		            WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_45' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
+		            WHEN 'G069_99' THEN '유효기간 경과 소멸'
+		       END                                          AS  OCCUR_DTL_DESC
+		     , CPH.PNT_AMT
+		     , CPH.REG_DT AS PNT_UPLOAD_DT
+		FROM TB_CUST_POINT_HST CPH
+		LEFT JOIN TB_ORDER_DETAIL OD
+		ON  CPH.ORD_NO = OD.ORD_NO
+		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		LEFT JOIN TB_GOODS G
+		ON  OD.GOODS_CD = G.GOODS_CD
+		LEFT JOIN (SELECT FG.GOODS_NM
+		                 ,OFV.ORD_NO 
+		           FROM TB_ORD_FREEGIFT_VAL OFV
+		           INNER JOIN TB_FREE_GOODS FG
+		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		           )FR ON CPH.ORD_NO = FR.ORD_NO
+		WHERE CPH.CUST_NO = #{custNo}
+		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		GROUP BY CPH.REG_DT
+		ORDER BY CPH.REG_DT DESC
 	</select>
 
 	<!-- 고객 포인트 내역 -->

+ 208 - 207
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -387,8 +387,9 @@
 		   	 , Z.ITEMKIND_CD 
              , Z.SIZE_GB 
              , Z.REMAIN_DT
-             , RANK() OVER(ORDER BY Z.PAY_DT DESC) AS RNUM
+             , ROW_NUMBER() OVER(ORDER BY Z.REG_DT DESC) AS RNUM
 		  FROM (SELECT O.ORD_NO
+		             , O.REG_DT 
 					 , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
 					 , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
 					 , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
@@ -904,212 +905,212 @@
 	<select id="getAlreadyReviewList" parameterType="Review" resultType="Goods">
 		/* TsfReivew.getAlreadyReviewList */
 		<include refid="selectForPagingHeader"/>
-	        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
-	             , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
-	             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
-	             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
-	             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
-	             , Z.ORD_NO
-	             , Z.ORD_DT
-	             , Z.PAY_DT
-	             , Z.DELV_EDDT
-	             , Z.ORD_DTL_NO
-	             , Z.ORD_EXCH_GB
-	             , Z.GOODS_CD
-	             , Z.GOODS_NM
-	             , Z.LIST_PRICE
-	             , Z.GOODS_TYPE
-	             , Z.SYS_IMG_NM
-	             , Z.ORD_DTL_STAT
-	             , Z.ORD_QTY
-	             , Z.CNCL_RTN_QTY
-	             , Z.ORD_AMT
-	             , Z.REAL_ORD_AMT
-	             , Z.SAVE_PNT_AMT
-	             , Z.CNCL_RTN_AMT
-	             , Z.PNT_DC_AMT
-	             , Z.GFCD_USE_AMT
-	             , Z.INVOICE_NO
-	             , Z.SUPPLY_COMP_CD
-	             , Z.DELV_FEE_CD
-	             , Z.SHOT_DELV_YN
-	             , Z.CHANGEABLE_YN
-	             , Z.RETURNABLE_YN
-	             , Z.SELF_GOODS_YN
-	             , Z.BRAND_NM
-	             , Z.BRAND_ENM
-	             , Z.ORD_DTL_STAT_NM
-	             , Z.ORD_REQ_CHG_QTY
-	             , Z.ORD_CAN_CHG_QTY
-	             , Z.ITEMKIND_NM 
-	             , Z.ITEMKIND_CD 
-	             , Z.SIZE_GB 
-	             , Z.REMAIN_DT
-	             , Z.REVIEW_SQ
-	             , Z.REVIEW_GB
-	             , Z.REVIEW_CONTENT
-	             , Z.SCORE
-	             , Z.HEIGHT
-	             , Z.WEIGHT
-	             , Z.SCORE_SIZE
-	             , Z.SCORE_COLOR
-	             , Z.SCORE_FIT
-	             , Z.SCORE_THICK
-	             , Z.SCORE_WEIGHT
-	             , Z.SCORE_BALL
-	             , Z.GIVE_DUE_PNT
-	             , Z.PNT_GIVE_STAT
-	             , Z.BEST_YN
-	             , Z.GIVE_DUE_BPNT
-	             , Z.BPNT_GIVE_YN
-	             , Z.DISP_YN
-	             , Z.DEL_YN
-	             , Z.CONFIRM_YN
-	             , Z.CONFIRM_UNO
-	             , Z.CONFIRM_DT
-	             , Z.REG_NO
-	             , Z.REG_DT
-	             , Z.UPD_NO
-	             , Z.UPD_DT
-	             , Z.ADM_RPL
-	             , Z.ADM_RPL_REG_NO
-	             , Z.ADM_RPL_DT
-	             , RANK() OVER(ORDER BY Z.PAY_DT DESC) AS RNUM
-	       FROM (SELECT O.ORD_NO
-	                  , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
-	                  , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
-	                  , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
-	                  , OD.ORD_DTL_NO
-	                  , OD.ORD_EXCH_GB
-	                  , OD.GOODS_CD
-	                  , OD.GIFT_ADDR_INP_YN
-	                  , G.GOODS_NM
-	                  , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
-	                  , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD)		AS ITEM_NM
-	                  , ODI.ORD_DTL_ITEM_SQ
-	                  , ODI.OPT_CD1
-	                  , ODI.OPT_CD2
-	                  , IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
-	                  , G.LIST_PRICE
-	                  , G.GOODS_TYPE
-	                  , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
-	                         ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
-	                  , OD.ORD_DTL_STAT
-	                  , OD.ORD_QTY
-	                  , OD.CNCL_RTN_QTY
-	                  , OD.ORD_AMT
-	                  , OD.REAL_ORD_AMT
-	                  , OD.SAVE_PNT_AMT
-	                  , OD.CNCL_RTN_AMT
-	                  , OD.PNT_DC_AMT
-	                  , OD.GFCD_USE_AMT
-	                  , OD.INVOICE_NO
-	                  , OD.SUPPLY_COMP_CD
-	                  , OD.DELV_FEE_CD
-	                  , OD.SHOT_DELV_YN
-	                  , OD.CHANGEABLE_YN
-	                  , OD.RETURNABLE_YN
-	                  , G.SELF_GOODS_YN
-	                  , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
-	                  , B.BRAND_ENM
-	                  , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
-	                  , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
-	                  , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
-	                  , I.ITEMKIND_NM 
-	                  , I.ITEMKIND_CD 
-	                  , I.SIZE_GB 
-	                  , R.REVIEW_SQ
-	                  , R.REVIEW_GB
-	                  , R.REVIEW_CONTENT
-	                  , R.SCORE
-	                  , R.HEIGHT
-	                  , R.WEIGHT
-	                  , (CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
-	                                          WHEN 2 THEN '딱맞음'
-	                                         WHEN 3 THEN '큼'
-	                                                            END) AS SCORE_SIZE
-	                  , (CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
-	                                         WHEN 2 THEN '똑같음'
-	                                         WHEN 3 THEN '어두움'   
-	                                                            END) AS SCORE_COLOR
-	                  , (CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
-	                                         WHEN 2 THEN '레귤러' 
-	                                         WHEN 3 THEN '오버' 
-	                                                            END) AS SCORE_FIT
-	                  , (CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
-	                                         WHEN 2 THEN '적당함' 
-	                                         WHEN 3 THEN '도톰함'
-	                                                            END) AS SCORE_THICK
-	                   , (CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
-	                                         WHEN 2 THEN '적당함'
-	                                         WHEN 3 THEN '무거움'
-	                                                            END) AS SCORE_WEIGHT
-	                   , (CASE R.SCORE_BALL   WHEN 1 THEN '작음'
-	                                          WHEN 2 THEN '딱맞음'
-	                                          WHEN 3 THEN '큼' 
-	                                                            END) AS SCORE_BALL
-	                   , R.GIVE_DUE_PNT
-	                   , R.PNT_GIVE_STAT
-	                   , R.BEST_YN
-	                   , R.GIVE_DUE_BPNT
-	                   , R.BPNT_GIVE_YN
-	                   , R.DISP_YN
-	                   , R.DEL_YN
-	                   , R.CONFIRM_YN
-	                   , R.CONFIRM_UNO
-	                   , R.CONFIRM_DT
-	                   , R.REG_NO
-	                   , DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
-	                   , R.UPD_NO
-	                   , DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
-	                   , R.ADM_RPL
-	                   , R.ADM_RPL_REG_NO
-	                   , DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
-	                   , DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL  #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
-	    FROM TB_ORDER O
-	   INNER JOIN TB_ORDER_DETAIL OD
-	      ON O.ORD_NO = OD.ORD_NO
-	      AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
-	   INNER JOIN TB_ORDER_DETAIL_ITEM ODI
-	      ON OD.ORD_NO = ODI.ORD_NO
-	     AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-	      AND ODI.ORD_DTL_STAT IN('G013_70','G013_50','G013_60') -- 구매 확정인것만
-	   INNER JOIN TB_GOODS G
-	      ON OD.GOODS_CD = G.GOODS_CD
-	   INNER JOIN TB_BRAND B
-	      ON B.BRAND_CD = G.BRAND_CD
-	   INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
-	  	AND R.ORD_NO = O.ORD_NO
-	  	AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
-	  	AND R.DEL_YN = 'N'
-	  	AND R.DISP_YN = 'Y'
-	   LEFT JOIN TB_ITEMKIND I 
-	      ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-	    LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
-	                      	, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
-	                       FROM TB_ORDER_CHANGE_DETAIL OCD
-	                      INNER JOIN TB_ORDER_DETAIL OD
-	                         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-	                      WHERE OCD.DEL_YN = 'N'
-	                      GROUP BY OCD.ORD_DTL_NO
-	            ) OCD
-	      ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-	  LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
-	                               AND C.USE_YN = 'Y'
-	     WHERE 1=1
-	   AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
-	   AND O.CUST_NO =  #{custNo}
-	   AND O.DISP_YN = 'Y'
-	   AND O.SITE_CD =  #{siteCd}
-	   	) Z
-	 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
-	        , Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
-	        , Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
-	        , Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM, Z.ORD_DTL_STAT_NM
-	        , Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY
-	ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
-	<include refid="selectForPagingFooter"/>
-	</select>
+		        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
+		             , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
+		             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
+		             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
+		             , Z.ORD_NO
+		             , Z.ORD_DT
+		             , Z.PAY_DT
+		             , Z.DELV_EDDT
+		             , Z.ORD_DTL_NO
+		             , Z.ORD_EXCH_GB
+		             , Z.GOODS_CD
+		             , Z.GOODS_NM
+		             , Z.LIST_PRICE
+		             , Z.GOODS_TYPE
+		             , Z.SYS_IMG_NM
+		             , Z.ORD_DTL_STAT
+		             , Z.ORD_QTY
+		             , Z.CNCL_RTN_QTY
+		             , Z.ORD_AMT
+		             , Z.REAL_ORD_AMT
+		             , Z.SAVE_PNT_AMT
+		             , Z.CNCL_RTN_AMT
+		             , Z.PNT_DC_AMT
+		             , Z.GFCD_USE_AMT
+		             , Z.INVOICE_NO
+		             , Z.SUPPLY_COMP_CD
+		             , Z.DELV_FEE_CD
+		             , Z.SHOT_DELV_YN
+		             , Z.CHANGEABLE_YN
+		             , Z.RETURNABLE_YN
+		             , Z.SELF_GOODS_YN
+		             , Z.BRAND_NM
+		             , Z.BRAND_ENM
+		             , Z.ORD_DTL_STAT_NM
+		             , Z.ORD_REQ_CHG_QTY
+		             , Z.ORD_CAN_CHG_QTY
+		             , Z.ITEMKIND_NM 
+		             , Z.ITEMKIND_CD 
+		             , Z.SIZE_GB 
+		             , Z.REMAIN_DT
+		             , Z.REVIEW_SQ
+		             , Z.REVIEW_GB
+		             , Z.REVIEW_CONTENT
+		             , Z.SCORE
+		             , Z.HEIGHT
+		             , Z.WEIGHT
+		             , Z.SCORE_SIZE
+		             , Z.SCORE_COLOR
+		             , Z.SCORE_FIT
+		             , Z.SCORE_THICK
+		             , Z.SCORE_WEIGHT
+		             , Z.SCORE_BALL
+		             , Z.GIVE_DUE_PNT
+		             , Z.PNT_GIVE_STAT
+		             , Z.BEST_YN
+		             , Z.GIVE_DUE_BPNT
+		             , Z.BPNT_GIVE_YN
+		             , Z.DISP_YN
+		             , Z.DEL_YN
+		             , Z.CONFIRM_YN
+		             , Z.CONFIRM_UNO
+		             , Z.CONFIRM_DT
+		             , Z.REG_NO
+		             , Z.REG_DT
+		             , Z.UPD_NO
+		             , Z.UPD_DT
+		             , Z.ADM_RPL
+		             , Z.ADM_RPL_REG_NO
+		             , Z.ADM_RPL_DT
+		             , ROW_NUMBER() OVER(ORDER BY Z.REG_DT DESC) AS RNUM
+		       FROM (SELECT O.ORD_NO
+		                  , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
+		                  , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
+		                  , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
+		                  , OD.ORD_DTL_NO
+		                  , OD.ORD_EXCH_GB
+		                  , OD.GOODS_CD
+		                  , OD.GIFT_ADDR_INP_YN
+		                  , G.GOODS_NM
+		                  , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
+		                  , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD)		AS ITEM_NM
+		                  , ODI.ORD_DTL_ITEM_SQ
+		                  , ODI.OPT_CD1
+		                  , ODI.OPT_CD2
+		                  , IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
+		                  , G.LIST_PRICE
+		                  , G.GOODS_TYPE
+		                  , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                         ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		                  , OD.ORD_DTL_STAT
+		                  , OD.ORD_QTY
+		                  , OD.CNCL_RTN_QTY
+		                  , OD.ORD_AMT
+		                  , OD.REAL_ORD_AMT
+		                  , OD.SAVE_PNT_AMT
+		                  , OD.CNCL_RTN_AMT
+		                  , OD.PNT_DC_AMT
+		                  , OD.GFCD_USE_AMT
+		                  , OD.INVOICE_NO
+		                  , OD.SUPPLY_COMP_CD
+		                  , OD.DELV_FEE_CD
+		                  , OD.SHOT_DELV_YN
+		                  , OD.CHANGEABLE_YN
+		                  , OD.RETURNABLE_YN
+		                  , G.SELF_GOODS_YN
+		                  , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
+		                  , B.BRAND_ENM
+		                  , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
+		                  , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+		                  , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
+		                  , I.ITEMKIND_NM 
+		                  , I.ITEMKIND_CD 
+		                  , I.SIZE_GB 
+		                  , R.REVIEW_SQ
+		                  , R.REVIEW_GB
+		                  , R.REVIEW_CONTENT
+		                  , R.SCORE
+		                  , R.HEIGHT
+		                  , R.WEIGHT
+		                  , (CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
+		                                          WHEN 2 THEN '딱맞음'
+		                                         WHEN 3 THEN '큼'
+		                                                            END) AS SCORE_SIZE
+		                  , (CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
+		                                         WHEN 2 THEN '똑같음'
+		                                         WHEN 3 THEN '어두움'   
+		                                                            END) AS SCORE_COLOR
+		                  , (CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
+		                                         WHEN 2 THEN '레귤러' 
+		                                         WHEN 3 THEN '오버' 
+		                                                            END) AS SCORE_FIT
+		                  , (CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
+		                                         WHEN 2 THEN '적당함' 
+		                                         WHEN 3 THEN '도톰함'
+		                                                            END) AS SCORE_THICK
+		                   , (CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
+		                                         WHEN 2 THEN '적당함'
+		                                         WHEN 3 THEN '무거움'
+		                                                            END) AS SCORE_WEIGHT
+		                   , (CASE R.SCORE_BALL   WHEN 1 THEN '작음'
+		                                          WHEN 2 THEN '딱맞음'
+		                                          WHEN 3 THEN '큼' 
+		                                                            END) AS SCORE_BALL
+		                   , R.GIVE_DUE_PNT
+		                   , R.PNT_GIVE_STAT
+		                   , R.BEST_YN
+		                   , R.GIVE_DUE_BPNT
+		                   , R.BPNT_GIVE_YN
+		                   , R.DISP_YN
+		                   , R.DEL_YN
+		                   , R.CONFIRM_YN
+		                   , R.CONFIRM_UNO
+		                   , R.CONFIRM_DT
+		                   , R.REG_NO
+		                   , DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
+		                   , R.UPD_NO
+		                   , DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
+		                   , R.ADM_RPL
+		                   , R.ADM_RPL_REG_NO
+		                   , DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
+		                   , DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL  #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
+		    FROM TB_ORDER O
+		   INNER JOIN TB_ORDER_DETAIL OD
+		      ON O.ORD_NO = OD.ORD_NO
+		      AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
+		   INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		      ON OD.ORD_NO = ODI.ORD_NO
+		     AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		      AND ODI.ORD_DTL_STAT IN('G013_70','G013_50','G013_60') -- 구매 확정인것만
+		   INNER JOIN TB_GOODS G
+		      ON OD.GOODS_CD = G.GOODS_CD
+		   INNER JOIN TB_BRAND B
+		      ON B.BRAND_CD = G.BRAND_CD
+		   INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+		  	AND R.ORD_NO = O.ORD_NO
+		  	AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
+		  	AND R.DEL_YN = 'N'
+		  	AND R.DISP_YN = 'Y'
+		   LEFT JOIN TB_ITEMKIND I 
+		      ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+		    LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
+		                      	, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+		                       FROM TB_ORDER_CHANGE_DETAIL OCD
+		                      INNER JOIN TB_ORDER_DETAIL OD
+		                         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		                      WHERE OCD.DEL_YN = 'N'
+		                      GROUP BY OCD.ORD_DTL_NO
+		            ) OCD
+		      ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		  LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
+		                               AND C.USE_YN = 'Y'
+		     WHERE 1=1
+		   AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
+		   AND O.CUST_NO =  #{custNo}
+		   AND O.DISP_YN = 'Y'
+		   AND O.SITE_CD =  #{siteCd}
+		   	) Z
+		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
+		        , Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
+		        , Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
+		        , Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM, Z.ORD_DTL_STAT_NM
+		        , Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY
+		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
+		<include refid="selectForPagingFooter"/>
+		</select>
 	
 	<select id="getReviewAttach" parameterType="Review" resultType="Review">
 		/* TsfReivew.getReviewAttach */

+ 3 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -139,6 +139,9 @@
 		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		                             AND W.CUST_NO = #{custNo}
 		</if>
+		<if test="pageable != null">
+		WHERE G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		</if>
 	</select>
 	
 </mapper>

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

@@ -29,7 +29,7 @@
 	<select id="getWishListGoodsList" parameterType="WishList" resultType="Goods">
 		/* TsfWishlist.getWishListGoodsList*/
 		SELECT Z.*
-			      ,100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE 
+			      ,(CASE WHEN Z.LIST_PRICE > 0 THEN 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
 			      ,DATE_FORMAT(Z.REG_DT,'%Y.%m') AS REG_DT_MONTH 
 			FROM
 			(

+ 2 - 2
src/main/resources/config/application-dev.yml

@@ -71,8 +71,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: ISTYLE TEST
         log.level: 3
         module.type: 01

+ 2 - 2
src/main/resources/config/application-locd.yml

@@ -69,8 +69,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: ISTYLE TEST
         log.level: 3
         module.type: 01

+ 13 - 2
src/main/resources/config/application-run.yml

@@ -9,9 +9,20 @@ spring:
                 max-active: 10
                 max-idle: 10
                 min-idle: 2
-        host: 192.186.1.30
+        host: 172.30.90.111
         port: 6379
-        password: wivismall
+        password:
+        cluster:
+            nodes:
+                172.30.90.111:6379
+                172.30.90.112:6379
+                172.30.90.113:6379
+                172.30.90.111:6380
+                172.30.90.112:6380
+                172.30.90.113:6380
+                172.30.90.111:6381
+                172.30.90.112:6381
+                172.30.90.113:6381
 
 logging.config: classpath:log/logback-run.xml
 

+ 2 - 2
src/main/resources/config/application-tsit.yml

@@ -70,8 +70,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: KCP TEST SHOP
         log.level: 3
         module.type: 01

+ 71 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartDelvFeeSaveGoodsPopupMob.html

@@ -0,0 +1,71 @@
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<div class="lap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="popup_close">카테고리닫기</div>
+	<div class="popup_head">
+		<h2>배송비 SAVE 상품</h2>
+	</div>
+	<div class="popup_con">
+		<div class="part_goods">
+			<ul>
+				<li th:each="goods, status : ${goodsList}">
+					<div class="goods_detail">
+						<div class="thumb_box">
+							<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|">
+								<img th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
+							</a>
+						</div>
+						<div class="info_box">
+							<div class="od_name">
+								<div class="brand">
+									<span th:text="${goods.brandNm}"></span>
+								</div>
+								<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" th:text="${goods.goodsNm}"></a></div>
+							</div>
+							<div class="od_calc">
+								<p class="price">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></em>원</span>
+									<th:block th:if="${goods.listPrice != goods.currPrice}">
+										<span class="sale_price"><del><em th:text="${#numbers.formatInteger(goods.listPrice, 1, 'COMMA')}"></em>원</del></span>
+										<span class="sale_percent" th:text="${goods.dcRate + '%'}"></span>
+									</th:block>
+								</p>
+							</div>
+							<div class="od_shoppingbag">
+								<button type="button" class="btn btn_primary_line" th:onclick="fnAddCartDelvFeeSaveGoods([[${goods.goodsCd}]], [[${goods.optCd}]])"><span>쇼핑백 담기</span></button>
+							</div>
+						</div>
+					</div>
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("배송비 SAVE 상품이 없습니다.");
+			$(".popup_close").trigger("click");
+		} else {
+			$('#dlvrSavePop').show().addClass("active");
+			$("body").css({"overflow":"hidden"});
+		}
+	});
+
+	function fnAddCartDelvFeeSaveGoods(goodsCd, optCd) {
+		let compsList = [];
+		let temp 			= new Object;
+		temp.goodsCd 		= goodsCd;
+		temp.optCd 			= optCd;
+		temp.goodsQty 		= 1;
+		temp.goodsType 		= "G056_N";
+		temp.cartGb 		= "C";
+		temp.popupYn		= "Y";
+		compsList.push(temp);
+
+		cfnAddCart(compsList);
+	};
+</script>
+<!-- //다다익선 상품보기 팝업 -->
+</html>

+ 37 - 26
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -103,8 +103,9 @@
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -115,7 +116,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -124,7 +125,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -144,8 +145,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -204,8 +205,9 @@
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -216,7 +218,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -225,7 +227,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -245,8 +247,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -301,7 +303,7 @@
 				</div>
 
 				<div class="goods_dlvr_save" th:style="${'Y'.equals(order.delvYn) and order.wmsDelvFee > 0 ? 'display:block' : 'display:none'}">
-					<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+					<a th:href="|javascript:fnGetDelvFeeSaveGoods('WMS', '${order.minOrdAmt - order.compSumPrice}');|" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
 				</div>
 			</div>
 			<!-- //STYLE24 배송 -->
@@ -324,9 +326,10 @@
 						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -337,7 +340,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -346,7 +349,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -366,8 +369,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -419,7 +422,7 @@
 						</div>
 
 						<div class="goods_dlvr_save" th:if="${'Y'.equals(cart.addDelvFeeYn)}" th:style="${'Y'.equals(cart.delvYn) and cart.delvFee > 0 ? 'display:block' : 'display:none'}">
-							<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+							<a th:href="|javascript:fnGetDelvFeeSaveGoods('${cart.delvFeeCd}', '${cart.minOrdAmt - cart.compSumPrice}');|" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
 						</div>
 					</div>
 				</div>
@@ -881,12 +884,15 @@
 					$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
 						if(shotList[i].cartSq == $(this).val()) {
 							let shot = shotList[i];
+							$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || (shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y")) {
 								$(this).parent().find(".applyTmtb").show();
 							}
 
+							// 다다익선 상품보기 노출
 							if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "N") || (shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "N")) {
 								$(this).parent().find(".notApplyTmtb").show();
 							}
@@ -907,13 +913,14 @@
 					$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
 						if(wmsList[i].cartSq == $(this).val()) {
 							let wms = wmsList[i];
-							$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-							$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+							$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
 								$(this).parent().find(".applyTmtb").show();
 							}
+
 							if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "N") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "N")) {
 								$(this).parent().find(".notApplyTmtb").show();
 							}
@@ -945,8 +952,8 @@
 					$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
 						if(delvList[i].cartSq == $(this).val()) {
 							let delv = delvList[i];
-							$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-							$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+							$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {
@@ -1215,8 +1222,12 @@
 			}
 
 			// 페이지 이동
-			function fnGoToGoodsDetail(goodsCd) {
-				cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+			function fnGoToGoodsDetail(goodsCd, ordCanYn) {
+				if(ordCanYn == "Y" || !ordCanYn) {
+					cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+				} else {
+					mcxDialog.alert("현재 구매가 불가능한 상품입니다.");
+				}
 			}
 
 			// 전체선택 버튼

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

@@ -48,38 +48,11 @@
 		<!-- //옵션변경_팝업02 -->
 
 		<!-- 다다익선 할인 대상_팝업 -->
-		<div id="moresalePop" class="popup_box moresalePop">
-			<div class="lap">
-				<div class="popup_close">카테고리닫기</div>
-				<div class="popup_head">
-					<h2>다다익선 할인 상품</h2>
-					<div class="area_benefit">
-						<span class="tag primary">SALE</span>
-						<p>
-							<span>10만원 이상 구매 시 1만원 할인</span>
-							<span>5개 이상 구매 시 1만원 할인</span>
-						</p>
-					</div>
-				</div>
-				<div class="popup_con">
-
-				</div>
-			</div>
-		</div>
+		<div id="moresalePop" class="popup_box moresalePop" style="display: none;"></div>
 		<!-- //다다익선 할인 대상_팝업 -->
 
 		<!-- 배송비 SAVE_팝업 -->
-		<div id="dlvrSavePop" class="popup_box dlvrSavePop">
-			<div class="lap">
-				<div class="popup_close">카테고리닫기</div>
-				<div class="popup_head">
-					<h2>배송비 SAVE 상품</h2>
-				</div>
-				<div class="popup_con">
-
-				</div>
-			</div>
-		</div>
+		<div id="dlvrSavePop" class="popup_box dlvrSavePop" style="display: none;"></div>
 		<!-- //배송비 SAVE_팝업 -->
 
 		<!-- 옵션변경 팝업 -->
@@ -137,20 +110,6 @@
 			$("body").css({"overflow":"hidden"});
 		});
 
-		//다다익선 할인 대상_팝업
-		$(document).on("click", ".btn_moresale_pop", function(){
-			//$("#moresalePop .popup_con").load("popup_moresale.html");
-			$('#moresalePop').show().addClass("active");
-			$("body").css({"overflow":"hidden"});
-		});
-
-		//배송비 SAVE_팝업
-		$(document).on("click", ".btn_popup_save", function(){
-			//$("#dlvrSavePop .popup_con").load("popup_dlvrSave.html");
-			$('#dlvrSavePop').show().addClass("active");
-			$("body").css({"overflow":"hidden"});
-		});
-
 		//팝업_닫기
 		$(document).on("click", ".popup_close", function(){
 			$('.popup_box').hide();
@@ -269,6 +228,50 @@
 		});
 	});
 
+	//배송비 SAVE_팝업
+	function fnGetDelvFeeSaveGoods(delvFeeCd, delvFeeSaveGoodsAmt) {
+		let param = new Object();
+		param.delvFeeCd = delvFeeCd;
+		param.delvFeeSaveGoodsAmt = delvFeeSaveGoodsAmt;
+
+		gagajf.ajaxSubmit("/cart/delv/fee/save/goods/list", "html", "dlvrSavePop", param);
+	};
+
+	//다다익선 할인 대상_팝업
+	function fnGetTmtbSalesGoods(obj) {
+		// 파라미터
+		let tmtbSqList = new Array();
+		let param = new Object();
+
+		// 다다익선 정보
+		let qtyTmtbSq = $(obj).parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let amtTmtbSq = $(obj).parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let qtyTmtbYn = $(obj).parent().parent().parent().parent().find("input[name=applyQtySectionYn]").val();
+		let amtTmtbYn = $(obj).parent().parent().parent().parent().find("input[name=applyAmtSectionYn]").val();
+		let goodsCd = $(obj).parent().parent().parent().parent().find("input[name=goodsCd]").val();
+
+		if(qtyTmtbYn == "N") {tmtbSqList.push(Number(qtyTmtbSq));}
+		if(amtTmtbYn == "N") {tmtbSqList.push(Number(amtTmtbSq));}
+		if(tmtbSqList.length < 1) {mcxDialog.alert("적용가능한 다다익선이 없습니다."); return false;}
+
+		let tmtb = JSON.stringify({goodsCd : goodsCd, arrTmtbSq : tmtbSqList});
+
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/list',
+			data		: tmtb,
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				$("#moresalePop").html(result);
+			}
+		});
+	};
+
 	function getCartList(parameter) {
 		// 장바구니 정보 조회
 		$.ajax( {

+ 95 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartTmtbSalesGoodsPopupMob.html

@@ -0,0 +1,95 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+
+<!-- 다다익선 상품보기 팝업 -->
+<div class="lap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="popup_close">카테고리닫기</div>
+	<div class="popup_head">
+		<h2>다다익선 할인 상품</h2>
+		<div class="area_benefit">
+			<span class="tag primary">SALE</span>
+			<p>
+				<span th:each="desc, index : ${tmtbDcDescList}" th:text="${desc}"></span>
+			</p>
+		</div>
+	</div>
+	<div class="popup_con">
+		<div class="part_goods">
+			<ul>
+				<li th:each="goods, status : ${goodsList}">
+					<div class="goods_detail">
+						<div class="thumb_box">
+							<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|">
+								<img class="vLHTC pd_img" th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
+							</a>
+						</div>
+						<div class="info_box">
+							<div class="od_name">
+								<div class="brand">
+									<span th:text="${goods.brandGroupNm}"></span>
+								</div>
+								<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" th:text="${goods.goodsFullNm}"></a></div>
+							</div>
+							<div class="od_calc">
+								<p class="price">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></em>원</span>
+									<th:block th:if="${goods.listPrice != goods.currPrice}">
+										<span class="sale_price"><del><em th:text="${#numbers.formatInteger(goods.listPrice, 1, 'COMMA')}"></em>원</del></span>
+										<span class="sale_percent" th:text="${goods.dcRate + '%'}"></span>
+									</th:block>
+								</p>
+							</div>
+							<div class="od_shoppingbag">
+								<button type="button" class="btn btn_primary_line" th:onclick="fnAddCartTmtbSalesGoods([[${goods.goodsCd}]])"><span>쇼핑백 담기</span></button>
+							</div>
+						</div>
+					</div>
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("다다익선 적용 가능한 다른 상품이 없습니다.");
+			$(".popup_close").trigger("click");
+		} else {
+			$('#moresalePop').show().addClass("active");
+			$("body").css({"overflow":"hidden"});
+			// $("#moresalePop").modal("show");
+		}
+	});
+
+	function fnAddCartTmtbSalesGoods(goodsCd) {
+		let data = JSON.stringify({goodsCd : goodsCd});
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/optcd',
+			data		: data,
+			dataType 	: 'json',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				let compsList = [];
+				let temp 			= new Object;
+				temp.goodsCd 		= goodsCd;
+				temp.optCd 			= result.optCd;
+				temp.goodsQty 		= 1;
+				temp.goodsType 		= "G056_N";
+				temp.cartGb 		= "C";
+				temp.popupYn		= "Y";
+				compsList.push(temp);
+
+				cfnAddCart(compsList);
+			}
+		});
+	};
+</script>
+<!-- //다다익선 상품보기 팝업 -->
+</html>

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

@@ -81,7 +81,7 @@
 									<th>이메일</th>
 									<td>
 										<div class="form_field">
-											<input type="text" id="email" name="email" class="form_control"/>
+											<input type="text" id="email" name="email" data-valid-type="email" class="form_control"/>
 										</div>
 									</td>
 								</tr>

+ 0 - 21
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html

@@ -264,27 +264,6 @@
 		}
 	};
 
-	var fnDataInit = function () {
-		const $firstFailed = $('#firstFailed');
-		const $secondFailed = $('#secondFailed');
-		const $thirdFailed = $('#thirdFailed');
-		const $avlPwd = $('#avlPwd');
-		const $misPwd = $('#misPwd');
-		const $avlConPwd = $('#avlConPwd');
-
-		const gray = 'c_gray';
-		$firstFailed.attr('class', gray);
-		$secondFailed.attr('class', gray);
-		$thirdFailed.attr('class', gray);
-		$avlPwd.hide();
-		$misPwd.hide();
-		$avlConPwd.hide();
-
-		checkPwd = '';
-		checkConfirmPwd = '';
-		$('#pwdModifyForm .form_control').val('');
-	}
-
 	$(document).ready(function() {
 
 	});

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

@@ -18,11 +18,11 @@
  * 1.0  2021.04.26   jsshin      최초 작성
  *******************************************************************************
  -->
+<body>
+<th:block layout:fragment="content">
 <style>
 .hide{display:none}
 </style>
-<body>
-<th:block layout:fragment="content">
 <main class="container my">
 	<section class="content my_page">
 		<div class="inner">
@@ -39,10 +39,10 @@
 								<!-- 사용불가 비밀번호일경우 -->
 								<p class="mt10">
 									<span id="firstFailed" class="c_gray">
-										<i class="ico ico_check black mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br/>
+										<i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br/>
 									</span>
 									<span id="secondFailed" class="c_gray">
-										<i class="ico ico_check red mr5"></i>4개이상 연속되거나 동일한 문자/숫자 제외<br/>
+										<i class="ico ico_check gray mr5"></i>4개이상 연속되거나 동일한 문자/숫자 제외<br/>
 									</span>
 									<span id="thirdFailed" class="c_gray">
 										<i class="ico ico_check gray mr5"></i>아이디 제외
@@ -89,7 +89,7 @@
 							</button>
 						</div>
 						<div>
-							<button type="button" id="btnSavePassword" class="btn btn_dark btn_block" disabled="disabled">
+							<button type="button" id="btnSavePassword" class="btn btn_dark btn_block">
 								<span>확인</span>
 							</button>
 						</div>
@@ -184,11 +184,11 @@
 		if (sameConfirmPwd) {
 			$misPwd.hide();
 			$avlConPwd.show();
-			$btnSavePassword.attr('disabled', false);
+			//$btnSavePassword.attr('disabled', false);
 		} else {
 			$avlConPwd.hide();
 			$misPwd.show();
-			$btnSavePassword.attr('disabled', true);
+			//$btnSavePassword.attr('disabled', true);
 		}
 	};
 

+ 21 - 17
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -109,7 +109,7 @@
 											</div>
 											<div class="goods_box">
 												<div class="gd_item">
-													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 														<span class="thumb" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
 															<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${cart.sysImgNm}" alt="">
 														</span>
@@ -141,8 +141,8 @@
 												</div>
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}"><span class="tag primary_line">총알배송</span><span th:text="|${cart.delvResDt} 배송예정|"></span></p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -225,7 +225,7 @@
 											</div>
 											<div class="goods_box">
 												<div class="gd_item">
-													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
@@ -250,8 +250,8 @@
 												<div class="gd_exinfo">
 													<div class="gd_exinfo">
 														<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
-														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+														<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+														<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 														<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 														<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 														<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -345,7 +345,7 @@
 											</div>
 											<div class="goods_box">
 												<div class="gd_item">
-													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
@@ -369,8 +369,8 @@
 												</div>
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -875,8 +875,8 @@
 				$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
 					if(shotList[i].cartSq == $(this).val()) {
 						let shot = shotList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y") {
@@ -910,8 +910,8 @@
 				$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
 					if(wmsList[i].cartSq == $(this).val()) {
 						let wms = wmsList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
@@ -935,8 +935,8 @@
 				$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
 					if(delvList[i].cartSq == $(this).val()) {
 						let delv = delvList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {
@@ -1204,8 +1204,12 @@
 		}
 
 		// 페이지 이동
-		function fnGoToGoodsDetail(goodsCd) {
-			cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+		function fnGoToGoodsDetail(goodsCd, ordCanYn) {
+			if(ordCanYn == "Y" || !ordCanYn) {
+				cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+			} else {
+				mcxDialog.alert("현재 구매가 불가능한 상품입니다.");
+			}
 		}
 
 		// 전체선택 버튼

+ 1 - 3
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -21,7 +21,7 @@
 							<div th:each="goods, status : ${goodsList}" class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
 								<div class="item_prod">
 									<div class="item_state">
-										<a href="#none" class="itemLink">
+										<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" class="itemLink">
 											<div class="itemPic">
 												<img class="vLHTC pd_img" th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
 											</div>
@@ -89,8 +89,6 @@
 				xhr.setRequestHeader('Content-Type'	, 'application/json');
 			},
 			success 	: function(result) {
-				alert(result.goodsCd + " / " + result.optCd);
-
 				let compsList = [];
 				let temp 			= new Object;
 				temp.goodsCd 		= goodsCd;

+ 1 - 1
src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html

@@ -270,7 +270,7 @@
 
 	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
 	<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-	<script th:src="@{'/biz/goodsSession.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goodsSession.js"></script>
+	<script th:src="@{'/biz/goods.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goods.js"></script>
 
 	<script th:inline="javascript">
 /*<![CDATA[*/

+ 36 - 18
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -819,49 +819,60 @@
 		}
 
 		var fnImgOnoff = function (){
+			var nowFocus = $('.dp .itemPic');
 			var nowMov = $('.itemPic').children('.pd_mov');
 			var nowImg = $('.itemPic').children('.pd_img');
 			var ogrSrc;
 			var overSrc;
 			var srcName = nowImg.attr('src');
 			overSrc = srcName.substring(0, srcName.lastIndexOf('.'));
+			
+			var srcImg;
+			var srcdat;
 
-			var img1;
-			var img2;
-
-			$(nowMov).on('mouseover', function() {
+			$(nowFocus).on('mouseover', function() {
 				// [on] size opt
-				$(this).siblings(".itemOpt").stop().animate({"bottom": 0}, 400,"swing");
+				//$(this).siblings(".itemOpt").stop().animate({"bottom": 0}, 400,"swing");
 				// [on] mov none
-				$(this).css("opacity","0");
+				//$(this).css("opacity","0");
 				// return false;
+				$(this).children('.pd_mov').siblings(".itemOpt").addClass('on');
+				$(this).children('.pd_mov').css("opacity","0");
 			});
-			$(nowMov).on('mouseleave', function() {
+			$(nowFocus).on('mouseleave', function() {
 				// [off] size opt
-				$(this).siblings(".itemOpt").stop().animate({"bottom": -120}, 400,"swing");
+				//$(this).siblings(".itemOpt").stop().animate({"bottom": -120}, 400,"swing");
 				// [off] mov block
-				$(this).css("opacity","1");
+				//$(this).css("opacity","1");
 				// return false;
+				$(this).children('.pd_mov').siblings(".itemOpt").removeClass('on');
+				$(this).children('.pd_mov').css("opacity","1");
 			});
-			$(nowImg).on('mouseover', function() {
-				img1 = $(this).attr('src');
-				img2 = $(this).attr('data-img');
+			$(nowFocus).on('mouseover', function() {
+				//img1 = $(this).attr('src');
+				//img2 = $(this).attr('data-img');
 				// [on] size opt
-				$(this).siblings(".itemOpt").stop().animate({"bottom": 0}, 400,"swing");
+				//$(this).siblings(".itemOpt").stop().animate({"bottom": 0}, 400,"swing");
 				// [on] re-Name
 				// ogrSrc = $(this).attr('src').substring(0, srcName.lastIndexOf('.'));
 				// overSrc = $(this).attr('src').substring(0, srcName.lastIndexOf('.'));
 				// $(this).attr('src', overSrc+ '_onhover.' + /[^.]+$/.exec(srcName));
-				$(this).attr('src',img2);
+				//$(this).attr('src',img2);
 				// return false;
+				$(this).children('.pd_img').siblings(".itemOpt").addClass('on');
+				srcImg = $(this).children('.pd_img').attr('src');
+				srcdat = $(this).children('.pd_img').attr('data-img');
+				$(this).children('.pd_img').attr('src',srcdat);
 			});
-			$(nowImg).on('mouseleave', function() {
+			$(nowFocus).on('mouseleave', function() {
 				// [off] size opt
-				$(this).siblings(".itemOpt").stop().animate({"bottom": -120}, 400,"swing");
+				//$(this).siblings(".itemOpt").stop().animate({"bottom": -120}, 400,"swing");
 				// [off] re-Name
 				// $(this).attr('src', overSrc + '.' + /[^.]+$/.exec(srcName));
-				$(this).attr('src', img1);
+				//$(this).attr('src', img1);
 				// return false;
+				$(this).children('.pd_img').siblings(".itemOpt").removeClass('on');
+				$(this).children('.pd_img').attr('src', srcImg);
 			});
 		}
 
@@ -935,8 +946,15 @@
 	<script>
 		//(진행 중)
 		$(document).ready( function() {
-
+			
 		});
+		
+		/* 210427_수정 : err 이미지 스크립트 */
+		function noneImg(noneSrc){
+			$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
+			$(noneSrc).css({'opacity':'0'});
+			//$(noneSrc).attr("src", no_src);
+		}
 	</script>
 
 </th:block>

+ 49 - 52
src/main/webapp/WEB-INF/views/web/mypage/MypageCustDeliveryAddrFormWeb.html

@@ -73,62 +73,59 @@
 	}
 
 	var fnCustDeliveryAddListCallback = function (result) {
-		console.log('result', result);
+		let html = '';
 		if (result.length < 1) {
 			$('#nodata').show();
-			return;
+		} else {
+			$('#nodata').hide();
+			$.each(result, function (idx, custDeliveryAddr){
+				if (custDeliveryAddr.defaultYn  === 'Y') {
+					html += '<tr class="addrs_default">\n';
+				} else {
+					html += '<tr>\n';
+				}
+				html +=	'    <td>\n';
+				html +=	'        <div class="block_line">\n';
+				html +=	'            <ul>\n';
+				html +=	'                <li>\n';
+				html +=	'                   <span>'+custDeliveryAddr.recipNm +'</span>\n';
+				if (custDeliveryAddr.defaultYn  === 'Y') {
+					html += '                   <span class="tag">기본 배송지</span>\n';
+				}
+				if (custDeliveryAddr.shotDelvUseYn  === 'Y') {
+					html += '                   <span class="tag primary_line">총알배송</span>\n';
+				}
+				html +=	'                </li>\n';
+				html +=	'                <li>\n';
+				html +=	'                    <span class="phone_number">'+custDeliveryAddr.recipPhnno+'</span>\n';
+				html +=	'                </li>\n';
+				html +=	'                <li>\n';
+				html +=	'                   <span>'+custDeliveryAddr.recipBaseAddr + custDeliveryAddr.recipDtlAddr +'</span>\n';
+				html +=	'                </li>\n';
+				html +=	'                <li>\n';
+				html +=	'                   배송요청 사항&nbsp;:&nbsp;<span>'+ custDeliveryAddr.delvMemo +'</span>\n';
+				html +=	'                </li>\n';
+				html +=	'            </ul>\n';
+				html +=	'        </div>\n';
+				html +=	'    </td>\n';
+				html +=	'    <td>\n';
+				html +=	'        <div class="button_box">\n';
+				html +=	'            <p>';
+				html +=	'                <button type="button" class="btn btn_default btn_sm" onclick="fnModiFyCustDelvAddr(\''+custDeliveryAddr.custDelvAddrSq+'\')">';
+				html +=	'                    <span>수정</span>';
+				html +=	'                </button>';
+				html +=	'            </p>';
+				html +=	'            <p>';
+				html +=	'                <button type="button" class="btn btn_dark btn_sm" onclick="fnDeleteCustDelvAddr(\''+custDeliveryAddr.custDelvAddrSq+'\')">';
+				html +=	'                   <span>삭제</span>';
+				html +=	'                </button>';
+				html +=	'            </p>';
+				html +=	'        </div>\n';
+				html +=	'    </td>\n';
+				html += '</tr>\n';
+			});
 		}
-		$('#nodata').hide();
-		$('#custDeliveryList').html('');
-		let html = '';
-		$.each(result, function (idx, custDeliveryAddr){
-			if (custDeliveryAddr.defaultYn  === 'Y') {
-				html += '<tr class="addrs_default">\n';
-			} else {
-				html += '<tr>\n';
-			}
-			html +=	'    <td>\n';
-			html +=	'        <div class="block_line">\n';
-			html +=	'            <ul>\n';
-			html +=	'                <li>\n';
-			html +=	'                   <span>'+custDeliveryAddr.recipNm +'</span>\n';
-			if (custDeliveryAddr.defaultYn  === 'Y') {
-				html += '                   <span class="tag">기본 배송지</span>\n';
-			}
-			if (custDeliveryAddr.shotDelvUseYn  === 'Y') {
-				html += '                   <span class="tag primary_line">총알배송</span>\n';
-			}
-			html +=	'                </li>\n';
-			html +=	'                <li>\n';
-			html +=	'                    <span class="phone_number">'+custDeliveryAddr.recipPhnno+'</span>\n';
-			html +=	'                </li>\n';
-			html +=	'                <li>\n';
-			html +=	'                   <span>'+custDeliveryAddr.recipBaseAddr + custDeliveryAddr.recipDtlAddr +'</span>\n';
-			html +=	'                </li>\n';
-			html +=	'                <li>\n';
-			html +=	'                   배송요청 사항&nbsp;:&nbsp;<span>'+ custDeliveryAddr.delvMemo +'</span>\n';
-			html +=	'                </li>\n';
-			html +=	'            </ul>\n';
-			html +=	'        </div>\n';
-			html +=	'    </td>\n';
-			html +=	'    <td>\n';
-			html +=	'        <div class="button_box">\n';
-			html +=	'            <p>';
-			html +=	'                <button type="button" class="btn btn_default btn_sm" onclick="fnModiFyCustDelvAddr(\''+custDeliveryAddr.custDelvAddrSq+'\')">';
-			html +=	'                    <span>수정</span>';
-			html +=	'                </button>';
-			html +=	'            </p>';
-			html +=	'            <p>';
-			html +=	'                <button type="button" class="btn btn_dark btn_sm" onclick="fnDeleteCustDelvAddr(\''+custDeliveryAddr.custDelvAddrSq+'\')">';
-			html +=	'                   <span>삭제</span>';
-			html +=	'                </button>';
-			html +=	'            </p>';
-			html +=	'        </div>\n';
-			html +=	'    </td>\n';
-			html += '</tr>\n';
-		});
 		$('#custDeliveryList').html(html);
-
 	}
 
 	// 배송지 추가

+ 16 - 14
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -132,20 +132,7 @@
 		gagaPaging.init('searchForm2', fnSearchCallback2, 'paging2', 10);
 		gagaPaging.load(1);
 	})
-	
-	$(document).ready(function() {
 
-		// 마이페이지 LNB 설정
-		fnSetMypageLnbList(7);
-
-		// 마이페이지 location 설정
-		fnSetMypageLocation('리뷰', '_PAGE_MYPAGE_REVIEW');
-				
-		// 작성가능한 리뷰표시
-		$("#completeReview").trigger('click');
-	
-	});
-	
 	// 주문 목록 조회 콜백
 	var fnSearchCallback1 = function(result) {
 		$('#nodata1').hide();
@@ -207,7 +194,7 @@
 			$('#nodata1').show();
 		}
 		// Create pagination
-		gagaPaging.createPagination(result.paging.pageable);
+		gagaPaging.createPagination(result.paging1.pageable);
 	}
 	
 	// 주문 목록 조회 콜백
@@ -429,6 +416,21 @@
 		document.createReview.submit();
 		// cfnGoToPage(_PAGE_MYPAGE_CREATE_REVIEW + ordNo +'/'+ordDtlNo+'/'+goodsCd+'/'+reviewStat);
 	}
+	
+	
+	$(document).ready(function() {
+
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(7);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('리뷰', '_PAGE_MYPAGE_REVIEW');
+				
+		// 작성가능한 리뷰표시
+		$("#completeReview").trigger('click');
+	
+	});
+	
 	</script>
 	</th:block>
 

+ 2 - 1
src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

@@ -107,7 +107,7 @@
 										<strong class="c_primary"><span>VIP</span> 등급 혜택</strong>을 받으실 수 있습니다.
 									</p>
 									<p id="vipGrade" style="display: none;">
-										다음달에<strong class="c_primary"><span>VIP</span> 등급 혜택</strong>을 받으실 수 있습니다.
+										다음달에 <strong class="c_primary"><span>VIP</span> 등급 혜택</strong>을 받으실 수 있습니다.
 									</p>
 								</div>
 							</div>
@@ -340,6 +340,7 @@
 		if (remnantBuyAmt > 0 || remnantBuyCnt > 0) {
 			$nextGrde.text(nextCustGradePolicy.gradeCdNm);
 		}
+
 	}
 
 	// 기존 VIP / 새로운 VIP 구분

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

@@ -146,58 +146,8 @@
 			</th:block>            
             
             <!-- 관련상품 리스트 -->
-			<div class="content sticky_nav_list" th:if="${planCornerListLength>0}">
-				<div class="cont_head">
-                    <div class="sticky_nav">
-                        <ul>    
-                        	<th:block th:each="cornerData, CornerStat : ${planCornerList}">
-                            <li><a th:href="${'#brand' +CornerStat.index}" th:text="${cornerData.cornerNm}"></a></li> <!-- 섹션이동 -->
-                            </th:block>
-                        </ul>
-                    </div>
-				</div>
-				<div class="cont_body">
-                    <div class="list_content">
-                    	<th:block th:each="cornerData, CornerStat : ${planCornerList}">
-                        <div th:id="${'brand' +CornerStat.index}">
-                            <div class="item_header"> <!-- 섹션이동 -->
-                                <h4 th:text="${cornerData.cornerNm}"></h4>
-                            </div>
-                            <div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
-                            	<th:block th:each="cornerGoodsData, CornerGoodsStat : ${planCornerGoodsList}" th:if="${cornerGoodsData.cornerNm == cornerData.cornerNm}">
-                       
-                                <div class="item_prod">
-                                    <div class="item_state">
-                                        <button type="button" th:class="${cornerGoodsData.likeIt == 'likeit'}? 'itemLike likeit' : 'itemLike'" onclick="cfnPutWishList(this);" th:attr="goodsCd=${cornerGoodsData.goodsCd}, ithrCd='', contentsLoc='', planDtlSq=''">관심상품 추가</button>
-                                        <a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${cornerGoodsData.goodsCd}]])" class="itemLink">
-                                            <!-- <div class="rank ranker"><span>1</span></div> -->
-                                            <div class="itemPic">
-                                                <img alt="BLUE-a" class=" vLHTC pd_img" th:src="${goodsView + '/' +cornerGoodsData.sysImgNm}">
-                                            </div>
-                                            <p class="itemBrand" th:text="${cornerGoodsData.brandGroupNm}"></p>
-                                            <div class="itemName" th:text="${cornerGoodsData.goodsNm}"></div>
-                                            <p class="itemPrice">[[${#numbers.formatInteger(cornerGoodsData.currPrice,0,'COMMA')}]]
-                                                <span class="itemPrice_original" th:if="${cornerGoodsData.currPrice != cornerGoodsData.listPrice}" th:text="${#numbers.formatInteger(cornerGoodsData.listPrice,0,'COMMA')}"></span>
-                                                <span class=" itemPercent" th:if="${cornerGoodsData.dcRate != '0'}" th:text="|${#numbers.formatDecimal(cornerGoodsData.dcRate,0,0)}%|"></span>
-                                            </p>
-                                            <div class="itemcolorchip">
-                                                <span class="chip_color35" value="ABM">BEIGE</span>
-                                                <span class="chip_color54" value="BDS">BLACK</span>
-                                                <span class="chip_color40" value="YBR">WHITE</span>
-                                            </div>
-                                            <p class="itemBadge">
-                                                <span class="badge13">베스트 </span>
-                                            </p>
-                                            <div class="itemComment" th:if="${cornerGoodsData.goodsTnm != null}" th:text="${cornerGoodsData.goodsTnm}"></div>
-                                        </a>
-                                    </div>
-                                </div>  
-                                </th:block>          
-                          	</div>
-                          </div>
-                      </th:block>
-                  </div>         
-              </div>
+			<div class="content sticky_nav_list" id="cornerList">
+
           </div>
 		  
             <!-- //관련상품 리스트 -->  
@@ -289,9 +239,107 @@ let template =[[${templateOrd}]];
 let replyList = [[${replyList}]];
 let replyCount = [[${replyCount}]];
 let replyAttachList = [[${replyAttachList}]];
+let planCornerGoodsList = [[${planCornerGoodsList}]];
+let planCornerList = [[${planCornerList}]];
 let _mall = [[${@environment.getProperty('domain.front')}]];
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
+if(planCornerList.length>0){
+	var html = '';
+	
+	html += '<div class="cont_head">';
+	html += '     <div class="sticky_nav">';
+	html += '         <ul>    ';
+	$.each(planCornerList, function(idx, item)  {
+		html += '             <li><a href="#brand'+idx+'">'+item.cornerNm+'</a></li>';
+	})
+	
+	html += '         </ul>';
+	html += '     </div>';
+	html += '</div>';
+	html += '<div class="cont_body">';
+	html += '     <div class="list_content">';
+	$.each(planCornerList, function(idx, item)  {
+		html += '         <div id="brand'+idx+'">';
+		html += '             <div class="item_header">';
+		html += '                 <h4>'+item.cornerNm+'</h4>';
+		html += '             </div>';
+		html += '             <div class="itemsGrp">';
+		$.each(planCornerGoodsList, function(idx2, item2)  {
+			html += '                 <div class="item_prod">';
+			html += '                     <div class="item_state">';
+			html += '		<button type="button" class="itemLike';
+			if(item.likeIt == 'likeit'){
+				html += ' likeit';
+			}
+			html += ' "';
+			html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+			
+			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="'+ goodsView +'/'+item2.sysImgNm +'">';
+			html += '                             </div>';
+			html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
+			html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
+			html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
+			if (item2.currPrice != item2.listPrice) {
+				html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+			}
+			if (item2.dcRate != 0) {
+				html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
+			}
+			
+			
+			html += '                             </p>';
+			html += '                             <div class="itemcolorchip">';
+			if(!gagajf.isNull(item2.colorChips)){
+				var colorArr = item2.colorChips.split(",");
+				var colorCd = '';
+				var rgbColor = '';
+				for(let i=0; i<colorArr.length; i++){
+					var colorInfo = colorArr[i].split(":");
+					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>';
+					}else{
+						html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+					}
+				}
+			}
+			html += '                             </div>';
+			if(!gagajf.isNull(item2.icon)){
+				var iconArr = item2.icon.split(",");
+				var iconGb = '';
+				var iconNm = '';
+				html += '	<p class="itemBadge">';
+				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 += '	</p>';
+			}
+			if(item2.goodsTnm != null){
+				html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+			}
+			html += '                         </a>';
+			html += '                     </div>';
+			html += '                 </div>';
+		})
+
+		html += '             </div>';
+		html += '         </div>';
+	})
+	
+	html += '     </div>';
+	html += ' </div>';
+	
+	
+	$("#cornerList").append(html);
+	
+}
 
 if(review.length>0){
 	
@@ -409,7 +457,6 @@ if(goods1.length>0){
 			html += '	<div>';
 			html += '        <h4>';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
-				console.log("template[i].linkOpenGb"+ template[i].linkOpenGb);
 				if (template[i].linkOpenGb == 'M') { //본창
 					html += '        <a href="http://'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>';
 				}else{
@@ -777,7 +824,7 @@ var fnSearchCallback = function (result) {
 				 }
 				
 				 html += '			</div>';
-				 html += '			<p>'+item.entryVal1+'</p>';
+				 html += '			<p>'+escapeHtml(item.entryVal1)+'</p>';
 				 if (item.entryCustNo == result.custNo) {
 					 html += '			<button class="btn btn_default btn_del" value="'+item.planEntrySq+'" onclick="fnDelReply(this.value)"><span>삭제</span></button>';
 				 }
@@ -802,6 +849,18 @@ var fnSearchCallback = function (result) {
 	gagaPaging.createPagination(result.paging.pageable);
 }
 
+function escapeHtml(str) {
+	var map = {
+		'&': '&amp;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'"': '&quot;',
+		"'": '&#039;'
+	};
+	return str.replace(/[&<>"']/g, function(m) { return map[m]; });
+}
+
+
 // 댓글 삭제
 var fnDelReply = function(obj) {
 	

+ 106 - 7
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -57,21 +57,21 @@
                 </div>
 		    </div>
             <!-- 총알배송 가능 상품 리스트 -->
-			<div class="content sticky_nav_list">
-				<div class="cont_head">
+			<div class="content sticky_nav_list" id="cornerList">
+<!-- 				<div class="cont_head">
                     <div class="sticky_nav">
                         <ul>    
-                            <li><a href="#brand01">모이몰른</a></li> <!-- 섹션이동 -->
+                            <li><a href="#brand01">모이몰른</a></li> 섹션이동
                         </ul>
                     </div>
 				</div>
 				<div class="cont_body">
                     <div class="list_content">
                         <div id="brand01">
-                            <div class="item_header"> <!-- 섹션이동 -->
+                            <div class="item_header"> 섹션이동
                                 <h4>모이몰른</h4>
                             </div>
-                            <div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
+                            <div class="itemsGrp"> itemsGrp rank hot deal
                                 <div class="item_prod">
                                     <div class="item_state">
                                         <button type="button" class="itemLike">관심상품 추가</button>
@@ -101,7 +101,7 @@
                             </div>
                         </div>
                      </div>
-                </div>
+                </div> -->
 		    </div>
             <!-- //총알배송 가능 상품 리스트 -->  
         </div>
@@ -141,8 +141,107 @@
 /*<![CDATA[*/
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-
+let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
+let planCornerList = [[${planCornerList}]];
+let planCornerGoodsList = [[${planCornerGoodsList}]];
 // 로그인 확인
+if(planCornerList.length>0){
+	var html = '';
+	
+	html += '<div class="cont_head">';
+	html += '     <div class="sticky_nav">';
+	html += '         <ul>    ';
+	$.each(planCornerList, function(idx, item)  {
+		html += '             <li><a href="#brand'+idx+'">'+item.cornerNm+'</a></li>';
+	})
+	
+	html += '         </ul>';
+	html += '     </div>';
+	html += '</div>';
+	html += '<div class="cont_body">';
+	html += '     <div class="list_content">';
+	$.each(planCornerList, function(idx, item)  {
+		html += '         <div id="brand'+idx+'">';
+		html += '             <div class="item_header">';
+		html += '                 <h4>'+item.cornerNm+'</h4>';
+		html += '             </div>';
+		html += '             <div class="itemsGrp">';
+		$.each(planCornerGoodsList, function(idx2, item2)  {
+			html += '                 <div class="item_prod">';
+			html += '                     <div class="item_state">';
+			html += '		<button type="button" class="itemLike';
+			if(item.likeIt == 'likeit'){
+				html += ' likeit';
+			}
+			html += ' "';
+			html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+			
+			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="'+ goodsView +'/'+item2.sysImgNm +'">';
+			html += '                             </div>';
+			html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
+			html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
+			html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
+			if (item2.currPrice != item2.listPrice) {
+				html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+			}
+			if (item2.dcRate != 0) {
+				html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
+			}
+			
+			
+			html += '                             </p>';
+			html += '                             <div class="itemcolorchip">';
+			if(!gagajf.isNull(item2.colorChips)){
+				var colorArr = item2.colorChips.split(",");
+				var colorCd = '';
+				var rgbColor = '';
+				for(let i=0; i<colorArr.length; i++){
+					var colorInfo = colorArr[i].split(":");
+					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>';
+					}else{
+						html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+					}
+				}
+			}
+			html += '                             </div>';
+			if(!gagajf.isNull(item2.icon)){
+				var iconArr = item2.icon.split(",");
+				var iconGb = '';
+				var iconNm = '';
+				html += '	<p class="itemBadge">';
+				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 += '	</p>';
+			}
+			if(item2.goodsTnm != null){
+				html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+			}
+			html += '                         </a>';
+			html += '                     </div>';
+			html += '                 </div>';
+		})
+
+		html += '             </div>';
+		html += '         </div>';
+	})
+	
+	html += '     </div>';
+	html += ' </div>';
+	
+	
+	$("#cornerList").append(html);
+	
+}
+
 var shotBody = function () {
 	if (!cfCheckLogin() || (custAddr == null && custAddr == '')) {
 		html = '';

+ 145 - 41
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -40,55 +40,38 @@
                     </div>  
                     <div class="list_content">
                         <div class="itemsGrp rowtype"> <!-- itemsGrp rank hot deal --> <!-- rowtype 추가시 가로형태로 출력 -->
-                        <th:block th:each="SocialData, SocialStat : ${socialGoods}">
-                            <div class="item_prod" th:class="${SocialData.stockQtySum == 0 ? 'item_prod sold_out' : 'item_prod'}">
-                                <div class="item_state"> <!-- item_state AD soldout -->
-                                    <button type="button" th:class="${SocialData.likeIt == 'likeit'}? 'itemLike active' : 'itemLike'" onclick="cfnPutWishList(this);" th:attr="goodsCd=${SocialData.goodsCd}, ithrCd='', contentsLoc='', planDtlSq=''">관심상품 추가</button>
-                                    <a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${SocialData.goodsCd}]])" >
-                                        <div class="itemPic">
-                                            <img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + SocialData.sysImgNm}">
-                                        </div>
-                                        <div class="itemSpecialPrice"><span>특가</span></div>
-                                        <p class="itemBrand" th:text="${SocialData.brandGroupNm}"></p>
-                                        <div class="itemName" th:text="${SocialData.goodsNm}"></div>
-                                       <div class="itemComment" th:if="${SocialData.goodsTnm!=null}" th:text="${SocialData.goodsTnm}"></div>
-                                        <p class="itemPrice">
-                                             [[${#numbers.formatInteger(SocialData.currPrice,0,'COMMA')} + 원]]
-                                            <span class="itemPrice_original" th:text="${#numbers.formatInteger(SocialData.listPrice,0,'COMMA')} + '원'"></span>
-											<span class=" itemPercent" th:text="${#numbers.formatDecimal(SocialData.dcRate,1,0)} + '%'"></span>
-                                        </p>
-                                    </a>
-                                    	 <div class="shopBagBtn">
-                                            <button type="button" class="btn btn_defalt" onclick="socialAddCart(this)" th:attr="goodsCd=${SocialData.goodsCd}, minOrdQty=${SocialData.minOrdQty}, goodsType=${SocialData.goodsType}, optCd=${SocialData.optCd}">
-                                                <span>쇼핑백 담기</span>
-                                            </button>
-                                        </div>
-                                </div>
-                            </div>
-                            </th:block>
-                        </div>
+									<section id="infiniteContainer">
+										<div id="listBoxOuter">
+											<ul id="listBox">
+											</ul>
+										</div>
+									</section>
+								</div>
+                         <div class="last_page" id="divLastPage" style="display: none;">
+						<span>마지막 페이지입니다.</span>
+					</div>
                     </div>
+                   
                 </div>
 		    </div>
 		</th:block>
-		<th:block th:unless="${socialInfo != null}">
-				<div class="nodata" >
-					<div class="txt_box">
-						<p>
-							진행하는 핫딜이 없습니다.
-						</p>
-					</div>
-					<div class="btn_box">
-						<button class="btn btn_default" th:onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>
-					</div>
-				</div>	
-		</th:block>
+
+
         </div>
     </div>   
+<form id="socialForm" name="socialForm" action="#" th:action="@{'/social/list'}">
+	<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+	<input type="hidden" name="pageSize" value ="10"/>
+</form>
+<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+	<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
-var socialInfo = [[${socialInfo}]];
-console.log(socialInfo);
+let socialInfo = [[${socialInfo}]];
+let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
+
+
 var socialAddCart = function (obj) {
+
 	let btnType = "C";
 	let params = [];
 
@@ -109,7 +92,110 @@ var socialAddCart = function (obj) {
 		cfnAddCart(params);	
 	} 
 }
+
+let fnGetSocialList = function(result) {
+	var html = '';
+
+	$.each(result.dataList, function(idx, item) {
+		if (item.stockQtySum == 0) {
+			html += ' <div class="item_prod"class="item_prod sold_out">';
+		}else{
+			html += ' <div class="item_prod"class="item_prod">';
+		}
+		
+		html += '    <div class="item_state"> ';
+		if (item.likeIt == 'likeit') {
+			html += '        <button type="button" class="itemLike active" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}else{
+			html += '        <button type="button" class="itemLike" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}
+		
+		html += '        <a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
+		html += '            <div class="itemPic">';
+		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '            </div>';
+		html += '            <div class="itemSpecialPrice"><span>특가</span></div>';
+		html += '            <p class="itemBrand">'+item.brandGroupNm+'</p>';
+		html += '            <div class="itemName">'+item.goodsNm+'</div>';
+		if(item.goodsTnm != null){
+			html += '           <div class="itemComment">'+item.goodsTnm+'</div>';
+		}
+
+		html += '            <p class="itemPrice">';
+		html += item.currPrice.addComma() +'원';
+		if (item.currPrice != item.listPrice) {
+			html += '                <span class="itemPrice_original">'+item.listPrice.addComma()+'원</span>';
+		}
+		if (item.dcRate != 0) {
+			html += '                                 <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>';
+		}
+		html += '            </p>';
+		html += '        </a>';
+		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>';
+		html += '</div>';
+	});
+	return html;
+	
+}
+
+
+var fnSocialListSearch = function() {
+	fnSocialInfiniteScrollInit();
+	gagaInfiniteScroll.getHistory();
+}
+// 인피니트 스크롤 초기화
+var fnSocialInfiniteScrollInit = function(){
+	sessionStorage.removeItem(document.location.href);
+	//History 초기화
+	$("#listBox").html("");
+}
+
+
+//인피니트 스크롤 이벤트 발생 시 데이터 가져오기
+var fnGetInfiniteScrollDataList = function(pageNum) {
+	$("#socialForm input[name=pageNo]").val(pageNum+1);
+	gagajf.ajaxFormSubmit("/social/list",document.socialForm, gagaInfiniteScroll.jsonToHtml);
+}
+
+var fnDrawInfiniteScrollData = function (result){
+	let totalCnt = result.totalCnt;
+	gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
+
+	if (result.dataList != null && result.dataList.length > 0) {
+		let lastPage = result.paging.pageable.pageNo;
+		let endRow = result.endRow - result.paging.pageable.pageSize;
+		
+		var htm = fnGetSocialList(result, lastPage, endRow);
+		gagaInfiniteScroll.draw(htm);
+	}else{
+		if($("#socialForm input[name=pageNo]").val()==1){
+			var html = '';
+			html += '<div class="nodata" >';
+			html += '	<div class="txt_box">';
+			html += '		<p>';
+			html += '			진행하는 핫딜이 없습니다.';
+			html += '		</p>';
+			html += '	</div>';
+			html += '	<div class="btn_box">';
+			html += '		<button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>';
+			html += '	</div>';
+			html += '</div>';	
+			
+			$('#listBox').html(html);
+		}
+		$("#divLastPage").show();
+		gagaInfiniteScroll.draw('not');
+	}
+}
+
+
 $(function(){
+	fnSocialListSearch();
        /* 핫딜 countDown */
        function hotdealTimer() {
            var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
@@ -138,6 +224,24 @@ $(function(){
        setInterval(function() { hotdealTimer(); }, 1000);
        /* countDown */
 });
+
+/* $(window).on("pageshow", function(event) {
+	if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+		var historyData = sessionStorage.getItem(document.location.href);
+		if(historyData!=null){
+			historyData = JSON.parse(historyData);
+		}else{
+			historyData = {};
+		}
+		fnSocialListSearch();
+	}else{
+
+		fnSocialListSearch();
+	}
+});
+ */
+
+
 </script>
 </th:block>
 

+ 4 - 3
src/main/webapp/biz/goods.js

@@ -191,12 +191,13 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			}
 			if(videoGb=='Y'){
 				tag += '<iframe id="child" class="pd_mov" src="https://www.youtube.com/embed/'+videoUrl+'"></iframe>';
+				//tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/164MyIiv?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
 			}else{
-				tag += '<iframe id="child" class="pd_mov" src="http://v.kr.kollus.com/'+videoUrl+'?enable_initialize_focus=false&autoplay=true" frameborder="0" allowfullscreen></iframe>';
+				tag += '<iframe id="child" class="pd_mov" src="http://v.kr.kollus.com/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
 			}
 		}
-		tag += '		<img class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'" data-img="'+goodsUrl+'/'+item.sysImgNm2+'">';
-		if(!gagajf.isNull(item.sizes) && gagajf.isNull(item.videoVal)){
+		tag += '		<img class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'" data-img="'+goodsUrl+'/'+item.sysImgNm2+'" onerror="noneImg(this)">';
+		if(!gagajf.isNull(item.sizes)){
 			var sizeArr = item.sizes.split(",");
 			var minSize;
 			var maxSize;

+ 1 - 1
src/main/webapp/ux/pc/css/common.css

@@ -1780,7 +1780,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 
 
 /*  modal popup  */
-.blocker{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:auto;/*z-index:999999;*/ z-index:200; padding:0px;box-sizing:border-box;background-color:#000;background-color:rgba(0,0,0,0.75);text-align:center;}
+.blocker{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:auto;/*z-index:999999;*/ z-index:200; padding:0px;box-sizing:border-box;background-color:#000;background-color:rgba(0,0,0,0.75);text-align:center;pointer-events: none;}
 .blocker:before{content:"";display:inline-block;height:100%;vertical-align:middle;margin-right:-0.05em;}
 .blocker.behind{background-color:transparent;}
 .modal{

+ 17 - 9
src/main/webapp/ux/pc/css/layout.css

@@ -89,7 +89,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .more_category a.btn_more_cate {position:relative; display:inline-block; padding-right:16px; color:#888; font-size:16px; font-weight:300; z-index:8;}
 .more_category a.btn_more_cate:after {display:block; position:absolute; top:2px; right:0; width:6px; height:6px; border:2px solid #888; border-width:2px 2px 0 0; transform:rotate(135deg); -webkit-transform:rotate(135deg); content:''}
 .more_category.on a.btn_more_cate:after {top:5px; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); content:''}
-.more_category .cate_list {display:none; position:absolute; left:-30px; top:-22px; background:#222; min-width:180px; padding:60px 25px 25px; box-sizing:initial; border:1px solid #aaa; z-index:2;}
+.more_category .cate_list {display:none; position:absolute; left:-30px; top:-22px; background:#222; min-width:180px; padding:60px 25px 25px; box-sizing:initial; border:1px solid #aaa; z-index:5;}
 .more_category .cate_list ul li {margin-top:14px; display: none;}
 .more_category .cate_list ul li:first-child {margin-top:0}
 .more_category .cate_list ul li a {display:block; padding:5px; color:#fff; font-size:19px;}
@@ -1672,9 +1672,11 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .list_content.nodata .itemsGrp {display:none;}
 	.dp .list_content.nodata .list_defult {display:block;}
 	.dp .list_defult {display:none; text-align:center; padding: 120px 0 160px;}
-	.dp .list_defult > div:first-child {margin-bottom:46px;}
-	.dp .list_defult > div:first-child p {line-height: 2;}
+	.dp .list_defult > div:first-child {margin-bottom:40px;}
+	.dp .list_defult > div:first-child p {line-height: 2; font-size: 16px; color:#666; font-weight: 300;}
+	.dp .list_defult > div:first-child p::before {content:''; display:block; width:36px; height:46px; margin:0 auto 24px; background:url('/images/pc/ico_content_none.png') no-repeat;}
 	.dp .list_defult .ui_row {justify-content: center; margin-bottom: 0;}
+	.dp .list_defult .ui_row .btn {color:#222; font-size:14px; font-weight:300;padding: 9px 23px;}
 	
 	/* dp_sticky_nav_리스트 */
 	.dp .sticky_nav_list {margin-top:60px}
@@ -1792,7 +1794,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail {position: absolute; left: 0; bottom: 100px; z-index: 9; padding: 23px; padding-bottom: 0;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail * {display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: #fff; font-weight: 300; letter-spacing: 0;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .brand {font-size: 14px;}
-	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .tit {margin:20px 0 15px; max-height:66px; font-size:24px; line-height:1.4; word-break:keep-all; text-align:left;}
+	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .tit {margin:20px 0 15px; padding-bottom: 0; max-height:66px; font-size:24px; line-height:1.4; word-break:keep-all; text-align:left;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .sale {font-size: 14px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 9; width: 88.4%; margin:-70px auto 0;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li {height: 150px; margin-bottom: 16px;}
@@ -2677,7 +2679,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	.pd_detail .area_desc .desc_wrap {/*position:absolute; right:auto; top:0; background:#eee*/width:500px; z-index:2;}
 	.pd_detail .area_desc .desc_wrap.absbottom {position:absolute; top:auto; bottom:0px;}
-	.pd_detail .area_desc .desc_wrap.fixbottom {position:fixed; top:auto; bottom:0px;}
+	.pd_detail .area_desc .desc_wrap.fixbottom {position:fixed; top: 100px; bottom:0px;}
 	
 	.pd_detail .area_desc .desc_wrap .timer_box {position:relative; padding-bottom:30px;}
 	.pd_detail .area_desc .desc_wrap .timer_box::after{content:''; position:absolute; right:-12px; bottom:18px; border:12px solid transparent; border-top:12px solid #fff; transform:rotate(-45deg);}
@@ -2782,6 +2784,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	
 	/* pd_deal_옵션셀렉트 폼 */
 	.pd .option_box [class^="opt_"] {}
+	.pd .option_box [class^="opt_"] .select_custom .combo .list {height:170%;}
 	.option_box [class^="opt_"] .form_field {display:block; margin-top:10px;}
 	.option_box [class^="opt_"] .form_field:first-child {margin-top:0}
 	.option_box [class^="opt_"] .select_custom {min-height:52px;}
@@ -3067,7 +3070,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_desc_wrap .item_descrp .area_list::after {content:''; position:absolute; right:-62px; top:0; bottom:0; width:1px; height:100%; background:#ddd; z-index:2;}
 	.pd_desc_wrap .item_descrp .area_option {float:right;}
 	.pd_desc_wrap .item_descrp .area_option .opt_wrap {width:500px; padding-left:60px; padding-top:30px;}
-	.pd_desc_wrap .item_descrp .area_option .opt_wrap.fixtop {position:fixed; right:70px; top:80px; width:500px}
+	/* .pd_desc_wrap .item_descrp .area_option .opt_wrap.fixtop {position:fixed; right:70px; top:80px; width:500px;} */
+	.pd_desc_wrap .item_descrp .area_option .opt_wrap.fixtop {position:fixed; right:70px; top:80px; width:500px;height: calc(100% - 11%);}
+	.pd_desc_wrap .item_descrp .area_option .opt_wrap.fixtop .option_box {overflow-y: auto; height: calc(100% - 25%);}
 	.pd_desc_wrap .item_descrp .area_option .opt_wrap.absbottom {position:absolute; top:auto; bottom:0px; right:70px;}
 	@media screen and (max-width:1459px) {
 		.pd.deal .tab_detail_nav.fix ul {position:absolute; left:0; top:0; width:100%; height:60px; z-index:25;}
@@ -3587,7 +3592,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_review .area_rv_best .btn_arrow {position:absolute; right:0; top:0px; width:50px; height:24px; z-index:2;}
 	.pd_review .area_rv_best .btn_arrow::after {clear:both; display:block;}
 	.pd_review .area_rv_best .btn_arrow .swiper-button-prev,
-	.pd_review .area_rv_best .btn_arrow .swiper-button-next {display:inline-block; position:absolute; left:auto; right:auto; top:3px; bottom:auto; width:auto; height:auto; margin:0}
+	.pd_review .area_rv_best .btn_arrow .swiper-button-next {display:inline-block; position:absolute; left:auto; right:auto; top:3px; bottom:auto; width:auto; height:auto; margin:0;background:#ffffff;}
 	.pd_review .area_rv_best .btn_arrow .swiper-button-prev {content:''; display:block; position:absolute; top:3px; left:4px; width:14px; height:14px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(-135deg); -webkit-transform:rotate(-135deg);}
 	.pd_review .area_rv_best .btn_arrow .swiper-button-next {content:''; display:block; position:absolute; top:3px; right:4px; width:14px; height:14px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(45deg); -webkit-transform:rotate(45deg);}
 	.pd_review .area_rv_best .best_review {width:100%;}
@@ -3837,7 +3842,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.br_lookbook_view .swiper-button-next::after {background-position:100% 50%;}
 	.br_lookbook_view .swiper-button-prev::after {background-position:0% 50%;}
 
-	.content.br_lookbook_view.cont_visual {padding-bottom:120px;}
+	.content.br_lookbook_view.cont_visual {padding-bottom:80px;}
 	.br_lookbook_view.cont_visual .cont_head {margin-bottom:60px}
 	.br_lookbook_view.cont_visual .cont_body .area_slider {margin-left:-70px; margin-right:-70px;}
 	.br_lookbook_view.cont_visual .swiper-slide {width: auto; height: 660px;}
@@ -3853,7 +3858,10 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.br_lookbook_view.cont_visual .swiper-button-prev {left:70px;}
 	.br_lookbook_view.cont_visual .swiper-button-next::after,
 	.br_lookbook_view.cont_visual .swiper-button-prev::after {filter:invert(100%);}
-	.br_lookbook_view.cont_visual .text_cont {margin-top:80px; color:#666; font-size:16px; font-weight:200; line-height:26px;}
+	/* .br_lookbook_view.cont_visual .text_cont {margin-top:80px; color:#666; font-size:16px; font-weight:200; line-height:26px;} */
+	
+	.br_lookbook_view.cont_txts {margin-bottom:120px;pointer-events: none;}
+	.br_lookbook_view.cont_txts .text_cont {color:#666; font-size:16px; font-weight:200; line-height:26px; background: #ffffff; pointer-events: none;}
 
 	.content.br_lookbook_view.cont_items {padding-top:120px; padding-bottom:120px; background:#f5f5f5;}
 	.br_lookbook_view.cont_items .cont_head h3 {margin-bottom:40px; color:#222; font-size:24px; font-weight:500;}

+ 11 - 9
src/main/webapp/ux/pc/css/main.css

@@ -86,9 +86,10 @@
 .post-visual .txtWrap dl.w,
 .post-visual .txtWrap dl.w + button {color:#ffffff; border-color:#fff;}
 .post-visual .txtWrap dt {font-size:18px; padding-bottom:20px; font-weight:200;}
-.post-visual .txtWrap dd {font-size:62px;line-height:1;font-weight:500; padding-bottom:5px;}
-.post-visual .txtWrap dd.txt_xs {font-size:18px;line-height:1;font-weight:200;padding:20px 0 0px 0;}
-.post-visual .vrt_txt{width:auto;height:auto;font-size:18px;color:#888888;position:absolute;left:-90px;bottom:-99px;top:0;-webkit-transform:rotate(-90deg);transform:rotate(-180deg); white-space: nowrap; -webkit-writing-mode:vertical-rl;-ms-writing-mode:tb-rl;writing-mode:vertical-rl;}
+.post-visual .txtWrap dd {font-size:62px;line-height:1;font-weight:500; padding-bottom:5px; display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical; overflow:hidden;}
+.post-visual .txtWrap dd.txt_xs {font-size:18px;line-height:1;font-weight:200;padding:20px 0 0px 0; display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical; max-height:37px; overflow:hidden;}
+/* .post-visual .vrt_txt{width:auto;height:auto;font-size:18px;color:#888888;position:absolute;left:-90px;bottom:-99px;top:0;-webkit-transform:rotate(-90deg);transform:rotate(-180deg); white-space: nowrap; -webkit-writing-mode:vertical-rl;-ms-writing-mode:tb-rl;writing-mode:vertical-rl;} */
+.post-visual .vrt_txt{width: 500px;height: 20px;box-sizing: content-box;display: inline-block;text-align: left;font-size: 18px;color: #888888;position: absolute;left: -80%;bottom: 160px;position: relative;left: -65%;bottom: -160px;top: auto;-webkit-transform: rotate(-90deg);transform: rotate(-90deg);white-space: nowrap;}
 .post-visual.swiper-container {margin-left:-30px;}
 .post-visual .swiper-pagination-bullets{bottom:0px;}
 .post-visual .swiper-wrapper{width:100%;height:750px; height:auto; margin:0px auto;padding-bottom:65px;filter:drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.2));}
@@ -151,7 +152,7 @@
 		padding-left:0;
 	}
 
-	.post-visual .vrt_txt {bottom:-79px !important;}
+	.post-visual .vrt_txt {bottom:-120px !important;}
 	.post-visual.swiper-container {margin-left:0px;}
 	.main .post-visual .swiper-slide {padding-bottom:20px;}
 	.main .post-visual .swiper-slide-prev {}
@@ -221,7 +222,7 @@
 		*/
 	}   
 
-	.main .post-visual .swiper-slide .vrt_txt {left:-50px;}
+	.main .post-visual .swiper-slide .vrt_txt {left:-50%;left:-354px;}
 }
 
 .post-visual .swiper-slide img::after{
@@ -366,6 +367,7 @@
 .main_2stage .cont_body {}
 .bnnbox_crop {width:100%;}
 .bnnbox_crop::after {content:''; clear:both; display:block;}
+.bnnbox_crop > div {width: 100%;height: 230px;float: none;overflow: hidden;}
 .bnnbox_crop > .bnn_half {float:left; width:50%;}
 .bnnbox_crop > .bnn_half > a {display:block; position:relative; width:100%; height:0%; padding-top:26.0918%; overflow:hidden;}
 .bnnbox_crop > .bnn_half > a img {position:absolute; left:50%; right:0; top:50%; bottom:auto; transform:translate(-50%, -50%); width:auto; height:100%;}
@@ -575,13 +577,13 @@ header.minify .common_header.br_header::after {bottom:-565px;}
 .brand_main .brand_visual .cont_body {}
 .brand_main .brand_visual .swiper-button-prev {left:70px; opacity:0.5;}
 .brand_main .brand_visual .swiper-button-next {right:70px; opacity:0.5;}
-.brand_main .post-visual.swiper-container {margin-left:0;}
+.brand_main .post-visual .swiper-container {margin-left:0;}
 .brand_main .post-visual .swiper-wrapper {padding-bottom:0;}
-.brand_main .post-visual .swiper-slide {position:relative; max-width:1520px; padding-left:28.9473%; mask-size:86.6072% 0%, 9.3928% 21.4285%, 90.6072% 100%, 100% 78.5715%; -webkit-mask-size:86.6072% 0%, 9.3928% 21.4285%, 90.6072% 100%, 100% 78.5715%; transition:all 200ms ease;}
+.brand_main .post-visual .swiper-slide {position:relative; max-width:1520px; padding-left:28.9473%; mask-size:86.6072% 0%, 9.3928% 21.4285%, 90.6072% 100%, 100% 78.5715%; -webkit-mask-size:86.6072% 0%, 9.3928% 21.4285%, 90.6072% 100%, 100% 78.5715%; /*transition:all 200ms ease;*/}
 .brand_main .post-visual .swiper-slide img {width:1080px; margin:0;}
 .brand_main .post-visual .swiper-slide .txtWrap {opacity:0; position:absolute; padding-left:0px; top:110px; bottom:auto; left:0px; right:auto; z-index:1;}
 .brand_main .post-visual .txtWrap dt {font-size:0; padding-bottom:0;}
-.brand_main .post-visual .swiper-slide-active {opacity:1;}
+.brand_main .post-visual .swiper-slide-active {opacity:1 !important;}
 .brand_main .post-visual .swiper-slide-active .txtWrap {animation-name: fade-in;animation-duration: 1.5s;animation-delay: 1s;animation-fill-mode: both;}
 
 @keyframes fade-in {
@@ -598,7 +600,7 @@ header.minify .common_header.br_header::after {bottom:-565px;}
 }
 
 .brand_main .post-visual .swiper-slide-prev {opacity:0;}
-.brand_main .post-visual .swiper-slide-next {padding-left:0px; padding-right:440px;}
+.brand_main .post-visual .swiper-slide-next {opacity:1 !important; padding-left:0px; padding-right:440px;}
 .brand_main .post-visual .swiper-controls {position:absolute; width:auto; bottom:100px; left:190px; padding-right:15px; z-index:10;}
 .brand_main .post-visual .swiper-controls .swiper-pagination {margin-top:0}
 

+ 17 - 4
src/main/webapp/ux/pc/js/common-ui.js

@@ -87,11 +87,13 @@ $(document).ready(function() {
 				var fileReader = new FileReader();
 				fileReader.onload = (function(e) {
 					var file = e.target;
+					console.log(file);
 					$("<span class=\"pics\">" +
 						"<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
 						"<br/><span class=\"removes\">Removes image</span>" +
 						"</span>").insertAfter("#fileAdd");
 					$(".removes").click(function(){
+						$(this).parent(".pics").closest(".imgUpload").children("input").val("");
 						$(this).parent(".pics").remove();
 						cmtLa.css('display', 'block');
 						cmtIn.css('display', 'block');
@@ -492,13 +494,24 @@ $(document).ready( function() {
 
 
 	
-	
+	//210428_카테고리 재클릭 시 사라짐
 	//상품 리스트_필터
+	var listFilNum = 0;
 	$('.filter_list ul li').click(function(){ 
-		$(".filter_list ul li").removeClass('on');
+		//$(".filter_list ul li").removeClass('on');
 		$(".dp_list .sort, .sch_result .sort").removeClass('on');
-		$(this).addClass('on');
-		$("."+$(this).data('id')).addClass('on');
+		if($(this).hasClass("on")){
+			$(this).removeClass('on');
+			$("."+$(this).data('id')).removeClass('on');
+			listFilNum = 0;
+		} else {
+			$(".filter_list ul li").removeClass('on');
+			$(this).addClass('on');
+			$("."+$(this).data('id')).addClass('on');
+			listFilNum = 1;
+		}
+		console.log();
+		
 		$('.sort ul li').removeClass('on');
 		$('.sort ul li div').hide();
 		$('.container .dp_list .fillter, .container .sch_result .fillter').show();

+ 2 - 2
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js

@@ -131,9 +131,9 @@ var gagaInfiniteScroll = {
 			} else {
 			}
 
-			$addHtm.find('img.lazy').lazyload({root: null,
+			/*$addHtm.find('img.lazy').lazyload({root: null,
 						rootMargin: "100px",
-						threshold: 0});
+						threshold: 0});*/
 
 			$.each($imgs, function(index) {
 				$imgs.eq(index).on('load',function() {

+ 20 - 13
src/main/webapp/ux/style24_link.js

@@ -268,20 +268,27 @@ function cfnAddCart(cartList) {
 		success : function(result) {
 			if(result.message == "SUCCESS") {
 				if(result.cartGb == "C") {
-					mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
-						cancelBtnText: "계속 쇼핑하기",
-						sureBtnText: "쇼핑백 가기",
-						sureBtnClick: function(){
-							location.href='/cart/list/form'; 	//내 쇼핑백 이동url
+					// 룩북 및 이벤트 페이지에서 여러 타입의 상품이 들어 올 수 있음. 반복문으로 들어오므로 cartList[0].multiGoodsGb == O면 confirm 창 안띄움.
+					// 일반적인 장바구니 담기를 위해 공백이나 O가 아닌 값일때 confirm 처리
+					if(!(cartList != null && cartList[0].multiGoodsGb != null && cartList[0].multiGoodsGb == "O")) {
+						mcxDialog.confirm("<div class=" + "dialog-title" + ">" + "상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
+							cancelBtnText: "계속 쇼핑하기",
+							sureBtnText  : "쇼핑백 가기",
+							sureBtnClick : function () {
+								location.href = '/cart/list/form'; 	//내 쇼핑백 이동url
+							}
+						});
+						
+						// PC버전에서만 동작해야함(퀵메뉴)
+						if (navigator.userAgent.indexOf('Mobile') == -1) {
+							fnGetCartGoodsList();
+						}
+						
+						// 장바구니 팝업에서
+						if (cartList != null && cartList[0].popupYn != null && cartList[0].popupYn == "Y") {
+							let data = {shotDelvUseYn: $("input[name=shotDelvUseYn]:checked").val()};
+							getCartList(data);
 						}
-					});
-					
-					fnGetCartGoodsList();
-					
-					// 장바구니 팝업에서
-					if(cartList != null && cartList[0].popupYn != null && cartList[0].popupYn == "Y") {
-						let data = {shotDelvUseYn : $("input[name=shotDelvUseYn]:checked").val()};
-						getCartList(data);
 					}
 				} else if (result.cartGb == "O"){
 					let orderHtml = "";