Преглед на файлове

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

gagamel преди 5 години
родител
ревизия
b8976882d3
променени са 20 файла, в които са добавени 1288 реда и са изтрити 1168 реда
  1. 10 0
      src/main/java/com/style24/front/biz/dao/TsfOrderDao.java
  2. 9 1
      src/main/java/com/style24/front/biz/dao/TsfReviewDao.java
  3. 6 3
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  4. 11 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  5. 52 41
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  6. 10 20
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  7. 7 7
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  8. 26 32
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  9. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  10. 22 8
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  11. 21 10
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  12. 3 1
      src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html
  13. 14 7
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  14. 88 82
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewFormWeb.html
  15. 129 60
      src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html
  16. 335 260
      src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html
  17. 59 25
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  18. 377 526
      src/main/webapp/ux/pc/css/layout.css
  19. 95 59
      src/main/webapp/ux/pc/js/common-ui.js
  20. 12 25
      src/main/webapp/ux/style24_link.js

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

@@ -46,6 +46,16 @@ public interface TsfOrderDao {
 	 */
 	int getPagingOrdNoListCount(Order order);
 
+	/**
+	 * 마이페이지 주문목록 사은품 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 03. 19
+	 */
+	Collection<Order> getOrderFreeGiftListForMypage(Order order);
+
 	/**
 	 * 마이페이지 주문목록 페이징 처리 주문번호 조회
 	 *

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

@@ -52,6 +52,14 @@ public interface TsfReviewDao {
 	 */
 	Collection<Goods> getReviewGoodsOptionList(Review review);
 	
-	
+	/**
+	 * 상품평 옵션 목록
+	 * @param review
+	 * @return 
+	 * @author eskim
+	 * @since 2021. 3. 19
+	 */
+	Collection<Goods> getReviewOptionList(String goodsCd);
+
 
 }

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

@@ -92,10 +92,13 @@ public class TsfOrderService {
 	}
 	
 	private GagaMap setOrderMap(Collection<Order> ordDtlList) {
+		Order order = ordDtlList.iterator().next();
+
 		GagaMap map = new GagaMap();
-		map.set("giftPackYn", ordDtlList.iterator().next().getGiftPackYn());
-		map.set("ordNo", ordDtlList.iterator().next().getOrdNo());
-		map.set("ordDt", ordDtlList.iterator().next().getOrdDt());
+		map.set("giftPackYn", order.getGiftPackYn());
+		map.set("ordNo", order.getOrdNo());
+		map.set("ordDt", order.getOrdDt());
+		map.set("freeGiftList", orderDao.getOrderFreeGiftListForMypage(order));
 		map.set("ordDtlList", ordDtlList);
 
 		return map;

+ 11 - 0
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.front.biz.dao.TsfReviewDao;
+import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
@@ -54,5 +55,15 @@ public class TsfReviewService {
 		return reviewList;
 	}
 	
+	/**
+	 * 상품평 옵션 목록
+	 * @param review
+	 * @return 
+	 * @author eskim
+	 * @since 2021. 3. 19
+	 */
+	public Collection<Goods> getReviewOptionList(String goodsCd) {
+		 return reviewDao.getReviewOptionList(goodsCd);
+	}
 	
 }

+ 52 - 41
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -1,6 +1,7 @@
 package com.style24.front.biz.web;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 
 import org.apache.commons.lang3.StringUtils;
@@ -22,12 +23,14 @@ import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCounselService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.biz.service.TsfGoodsService;
+import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.env.TsfConstants;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.CardPromotion;
+import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.Counsel;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
@@ -76,6 +79,9 @@ public class TsfGoodsController extends TsfBaseController {
 	@Autowired
 	private TsfReviewService reviewService;
 
+	@Autowired
+	private TsfRendererService rendererService;
+	
 	@Value("${has-ssl}")
 	private String hasSsl;
 
@@ -235,6 +241,7 @@ public class TsfGoodsController extends TsfBaseController {
 				mav.setViewName(super.getDeviceViewName("goods/GoodsDetailForm"));
 			}
 		}
+		log.info("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
 		return mav;
 	}
 
@@ -622,27 +629,57 @@ public class TsfGoodsController extends TsfBaseController {
 		
 		Review review = new Review();
 		review.setGoodsCd(goods.getGoodsCd());
+		mav.addObject("reviewCount", reviewService.getReviewTotalCount(review));	// 전체상품평 건수 
 		review.setRownum(1);
 		review.setGoodsType(goods.getGoodsType());
 		mav.addObject("reviewList", reviewService.getReviewList(review));	// 전체상품평 유무 확인
-		
-		
 		review.setBestYn("Y");
 		review.setRownum(0);	// 전체 조회
 		mav.addObject("bestReviewList", reviewService.getReviewList(review));	//베스트상품평
-		
 		review.setPhotoYn("Y");
 		review.setBestYn("");
 		review.setRownum(0);	// 전체 조회
 		mav.addObject("photoReviewList", reviewService.getReviewList(review));	//포토상품평
-
+		
+		// 상품평에 등록된 사이즈 정보
+		mav.addObject("reviewOptionList", reviewService.getReviewOptionList(goods.getGoodsCd()));	
+		
+		// 유야동: 베이비(07), 키즈여아(08), 키즈남아(09), 키즈공통(10), 주니어여야(11), 주니어남아(12), 주니어공통(13), 성인G: 유아동 제외 전체
+		// 유야동 키 공통코드 G091, 성인 키 공통코드 G090
+		String[] arrItem = {"07","08","09","10","11","12","13"}; 
+		ArrayList<String>  itemList = new ArrayList<>(Arrays.asList(arrItem));
+		
+		// 키전체 
+		Collection<CommonCode> reviewHeightList = new ArrayList<CommonCode>();
+		log.info("goods.getItemkindCd().substring(0, 2) => {} ",goods.getItemkindCd().substring(0, 2) );
+		if (itemList.contains(goods.getItemkindCd().substring(0, 2))) {
+			reviewHeightList = rendererService.getAvailCommonCodeList("G091");
+		}else {
+			reviewHeightList = rendererService.getAvailCommonCodeList("G090");
+		}
+		
+		// 상품평 키
+		mav.addObject("reviewHeightList", reviewHeightList);
+		
+		// 유야동 몸무게 공통코드 G093, 성인 몸무게 공통코드 G092
+		// 몸무게
+		Collection<CommonCode> reviewWeightList = new ArrayList<CommonCode>();
+		if (itemList.contains(goods.getItemkindCd().substring(0, 2))) {
+			reviewWeightList = rendererService.getAvailCommonCodeList("G093");
+		}else {
+			reviewWeightList = rendererService.getAvailCommonCodeList("G092");
+		}
+		
+		// 상품평 몸무게
+		mav.addObject("reviewWeightList", reviewWeightList);
+		
 		mav.setViewName(super.getDeviceViewName("goods/GoodsReviewForm"));
 		return mav;
 	}
 	
 	/**
 	 * 상품평 목록
-	 * @param counsel - 상담정보
+	 * @param review
 	 * @return
 	 * @author eskim
 	 * @since 2021. 3. 16
@@ -671,35 +708,6 @@ public class TsfGoodsController extends TsfBaseController {
 		return result;
 	}
 
-	/**
-	 * 상품상세 -  상품평 - 베스트 레이어
-	 * @return
-	 * @author eskim
-	 * @since 2021. 3. 8
-	 */
-	@PostMapping("/review/best/layer/{goodsCd}")
-	public ModelAndView goodsReviewBestForm(@PathVariable String goodsCd) {
-		ModelAndView mav = new ModelAndView();
-		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
-		Goods paramsGoods = new Goods();
-		paramsGoods.setGoodsCd(goodsCd);
-		setGoods(paramsGoods);
-//		Goods goods = goodsService.getGoodsInfo(paramsGoods);
-//
-//		// 상품 기본정보
-//		mav.addObject("goodsInfo", goods);
-		
-		Review review = new Review();
-		review.setGoodsCd(paramsGoods.getGoodsCd());
-		review.setBestYn("Y");
-		mav.addObject("reviewList", reviewService.getReviewList(review));
-
-		mav.addObject("params", paramsGoods);
-		
-		mav.setViewName(super.getDeviceViewName("goods/GoodsReviewBestForm"));
-		return mav;
-	}
-
 	/**
 	 * 상품상세 -  상품평 - 포토/영상 리스트 레이어
 	 * @return
@@ -723,24 +731,27 @@ public class TsfGoodsController extends TsfBaseController {
 	}
 
 	/**
-	 * 상품상세 -  상품평 - 포토/영상 상세 레이어
+	 * 상품상세 -  상품평 상세 레이어
 	 * @return
 	 * @author eskim
 	 * @since 2021. 3. 8
 	 */
-	@PostMapping("/review/photo/detail/layer/{goodsCd}")
-	public ModelAndView goodsReviewPhotoDetailForm(@PathVariable String goodsCd) {
+	@GetMapping("/review/detail/layer")
+	public ModelAndView goodsReviewPhotoDetailForm(Review review) { 
+		log.info("goodsReviewPhotoDetailForm {}", review);
 		ModelAndView mav = new ModelAndView();
 		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
 		Goods paramsGoods = new Goods();
-		paramsGoods.setGoodsCd(goodsCd);
+		paramsGoods.setGoodsCd(review.getGoodsCd());
 		setGoods(paramsGoods);
-		Goods goods = goodsService.getGoodsInfo(paramsGoods);
+		// Goods goods = goodsService.getGoodsInfo(paramsGoods);
 
 		// 상품 기본정보
-		mav.addObject("goodsInfo", goods);
+		mav.addObject("params", paramsGoods);
+		
+		mav.addObject("reviewList", reviewService.getReviewList(review));
 
-		mav.setViewName(super.getDeviceViewName("goods/GoodsReviewPhotoDetailForm"));
+		mav.setViewName(super.getDeviceViewName("goods/GoodsReviewBestForm"));
 		return mav;
 	}
 

+ 10 - 20
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -19,6 +19,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
@@ -49,12 +52,6 @@ import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-import com.gagaframework.web.rest.server.GagaResponseStatus;
-
-import lombok.extern.slf4j.Slf4j;
-
 /**
  * 마이페이지 Controller
  * 
@@ -235,19 +232,15 @@ public class TsfMypageController extends TsfBaseController {
 	@PostMapping("/order/list")
 	@ResponseBody
 	public GagaMap getOrderList(@RequestBody Order order) {
-		GagaMap map = new GagaMap();
-		ModelAndView mav = new ModelAndView();
+		GagaMap result = new GagaMap();
 
 		// 페이징 처리 설정
-		// order.setPageable(new TscPageRequest(order.getPageNo() - 1, 5));
 		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
 		pageable.setTotalCount(orderService.getPagingOrdNoListCount(order));
 		order.setPageable(pageable);
-		log.info("pageable: {}", pageable);
-		log.info("totalCount {}", pageable.getTotalCount());
-		log.info("order >>> {}", order);
 
 		// 페이징 처리 및 주문정보 조회
+		Collection<GagaMap> orderList = new ArrayList<>();
 		List<Integer> ordNoList = new ArrayList<>();
 
 		for (Order tmpOrder : orderService.getPagingOrdNoList(order)) {
@@ -256,16 +249,13 @@ public class TsfMypageController extends TsfBaseController {
 
 		if (ordNoList.size() > 0) {
 			order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
+			orderList = orderService.getOrderListForMypage(order);
 		}
 
-		map.set("orderList", orderService.getOrderListForMypage(order));
-		map.set("orderInfo", order);
-		
-		// mav.setViewName(super.getDeviceViewName("mypage/MypageOrderList"));
-		
-		// map.set("mav", mav);
-		// map.set("paging", order.getPageable());
-		return map;
+		result.set("orderList", orderList);
+		result.set("orderInfo", order);
+
+		return result;
 	}
 
 	/**

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

@@ -375,7 +375,7 @@
 	</select>
 	
 	<select id="getMypageCouponList" resultType="Coupon" parameterType="Coupon">
-		/* TsfCoupon.getMypageCouponList -- custNo 변경 예정*/
+		/* TsfCoupon.getMypageCouponList */
 		SELECT T.*
 		FROM 
 		(
@@ -442,7 +442,7 @@
 											)A ON TC.CPN_ID = A.CPN_ID 
 				WHERE 1=1
 					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-					AND A.CUST_NO = 1000039
+					AND A.CUST_NO = #{custNo}
 					AND A.USED_DT IS NULL
 					AND NOW() BETWEEN A.AVAIL_STDT AND A.AVAIL_EDDT
 			)Z
@@ -510,7 +510,7 @@
 											)A ON TC.CPN_ID = A.CPN_ID 
 				WHERE 1=1
 					AND TC.CPN_STAT = 'G232_11'  /*쿠폰 상태 - 진행*/
-					AND A.CUST_NO = 1000039
+					AND A.CUST_NO = #{custNo}
 					AND A.USED_DT IS NULL
 					AND A.AVAIL_EDDT BETWEEN DATE_ADD(NOW(), INTERVAL -3 MONTH) AND A.AVAIL_EDDT
 			)F
@@ -519,27 +519,27 @@
 	</select>
 	
 	<select id="getMypageCouponInfo" resultType="Coupon" parameterType="Coupon">
-		/* TsfCoupon.getMypageCouponInfo -- custNo 변경 예정*/
+		/* TsfCoupon.getMypageCouponInfo*/
 		SELECT COUNT(*) AS ALL_COUPON_CNT
 			,(  SELECT COUNT(*) AS USE_COUPON
 				FROM tb_coupon A INNER JOIN tb_cust_coupon B ON A.CPN_ID = B.CPN_ID 
 				WHERE 1=1
 				  AND A.CPN_ID = B.CPN_ID 
-				  AND B.CUST_NO = 1000039
+				  AND B.CUST_NO = #{custNo}
 				  AND A.CPN_STAT = 'G232_11'
 				  AND NOW() BETWEEN A.AVAIL_STDT AND A.AVAIL_EDDT ) AS USE_COUPON_CNT
 		    ,(  SELECT COUNT(*) AS USE_COUPON
 				FROM tb_coupon A INNER JOIN tb_cust_coupon B ON A.CPN_ID = B.CPN_ID 
 				WHERE 1=1
 				  AND A.CPN_ID = B.CPN_ID 
-				  AND B.CUST_NO = 1000039
+				  AND B.CUST_NO = #{custNo}
 				  AND A.CPN_STAT = 'G232_11'
 				  AND NOW() BETWEEN A.AVAIL_STDT AND A.AVAIL_EDDT 
 				  AND NOW() BETWEEN DATE_ADD(A.AVAIL_EDDT , INTERVAL -7 DAY) AND A.AVAIL_EDDT ) AS EXPIRE_COUPON_CNT
 		FROM tb_coupon A INNER JOIN tb_cust_coupon B ON A.CPN_ID = B.CPN_ID 
 		WHERE 1=1
 		  AND A.CPN_ID = B.CPN_ID 
-		  AND B.CUST_NO = 1000039
+		  AND B.CUST_NO = #{custNo}
 		  AND A.CPN_STAT = 'G232_11'
 	</select>
 	

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

@@ -4,7 +4,7 @@
 
 	<!-- 상품권 기본정보  -->
 	<select id="getGiftcardInfo" parameterType="GiftCard" resultType="GiftCard">
-		<!-- TsfGiftcard.getGiftcardInfo -->
+		/*TsfGiftcard.getGiftcardInfo*/
 		SELECT SUM(CG.RM_GFCD_AMT) AS USE_GIFT/*사용가능한 보유 금액*/
 		      ,(SELECT COUNT(*) 
 		        FROM TB_CUST_GIFTCARD CG2 
@@ -12,7 +12,7 @@
 		          AND CUST_NO = #{custNo}
 		          AND CG2.RM_GFCD_AMT <![CDATA[>]]> 0
 		          AND NOW() BETWEEN CG2.USE_ST_DATE AND CG2.USE_EXP_DATE) AS TOTAL_COUNT /*총 상품권 수*/
-		      ,(SELECT COUNT(*)
+		      ,(SELECT SUM(CG3.RM_GFCD_AMT)
 				FROM TB_CUST_GIFTCARD CG3
 				WHERE NOW() BETWEEN CG3.USE_ST_DATE AND CG3.USE_EXP_DATE
 				  AND  NOW() BETWEEN DATE_ADD(CG3.USE_EXP_DATE, INTERVAL -1 MONTH) AND USE_EXP_DATE
@@ -26,33 +26,27 @@
 	</select>
 	
 	<select id="getGiftcardUseList" parameterType="GiftCard" resultType="GiftCard">
-		<!-- TsfGiftcard.getGiftcardUseList -->
-		SELECT A.* 
-		      ,(CASE A.OCCUR_GB WHEN 'G074_11'THEN '+' 
-		                        WHEN 'G074_12'THEN '-'
-		                        WHEN 'G074_13'THEN '+'
-		                        WHEN 'G074_14'THEN '-'
-		                        WHEN 'G074_15'THEN '-'
-		                        WHEN 'G074_16'THEN '-'
-		                        WHEN 'G074_17'THEN '+'
-		                        WHEN 'G074_18'THEN '+'
-		                        WHEN 'G074_19'THEN '-'
-		       END) AS BALANCE
-		      ,(CASE A.OCCUR_GB WHEN 'G074_11'THEN '상품권 등록'        
-                         WHEN 'G074_12'THEN '상품권 사용'       
-                         WHEN 'G074_13'THEN '상품권 사용취소'     
-                         WHEN 'G074_14'THEN '상품권 유효기간만료'   
-                         WHEN 'G074_15'THEN '상품권 파기'       
-                         WHEN 'G074_16'THEN '상품권 현금전환'     
-                         WHEN 'G074_17'THEN '결품으로 인한 기간 연장'
-                         WHEN 'G074_18'THEN '오환불로 인한 금액추가' 
-                         WHEN 'G074_19'THEN '오환불로 인한 금액차감' 
-               END) AS BALANCE_NAME
-		      ,B.GOODS_CD 
-		      ,D.GOODS_NM 
-		FROM TB_CUST_GIFTCARD_HST A LEFT JOIN TB_ORDER_DETAIL B ON A.ORD_DTL_NO = B.ORD_DTL_NO AND A.ORD_NO = B.ORD_NO
-									LEFT JOIN TB_CUST_GIFTCARD C ON A.CUST_GFCD_SQ =C.CUST_GFCD_SQ 
-									LEFT JOIN TB_GOODS D ON B.GOODS_CD = D.GOODS_CD 
+		/*TsfGiftcard.getGiftcardUseList*/
+		SELECT A.GFCD_HST_SQ
+		      , A.CUST_NO
+		      , A.OCCUR_GB
+		      , A.OCCUR_DTL_DESC
+		      , A.GFCD_AMT
+		      , A.CUST_GFCD_SQ
+		      , A.ORD_NO
+		      , A.ORD_DTL_NO
+		      , A.REG_NO
+		      , A.REG_DT
+		      , A.UPD_NO
+		      , A.UPD_DT
+		      , B.GOODS_CD 
+		      , D.GOODS_NM 
+		FROM TB_CUST_GIFTCARD_HST A INNER JOIN TB_ORDER_DETAIL B 
+													ON A.ORD_DTL_NO = B.ORD_DTL_NO AND A.ORD_NO = B.ORD_NO
+									INNER JOIN TB_CUST_GIFTCARD C 
+													ON A.CUST_GFCD_SQ =C.CUST_GFCD_SQ 
+									INNER JOIN TB_GOODS D 
+													ON B.GOODS_CD = D.GOODS_CD 
 		WHERE 1=1
 		 AND A.CUST_NO = #{custNo}
 		 <choose>
@@ -67,7 +61,7 @@
 	</select>
 	
 	<select id="getGiftcardOwnList" parameterType="GiftCard" resultType="GiftCard">
-		<!-- TsfGiftcard.getGiftcardOwnList -->
+		/*TsfGiftcard.getGiftcardOwnList*/
 		 SELECT  CUST_GFCD_SQ
 				 , CUST_NO
 				 , GFCD_NO
@@ -87,7 +81,7 @@
 	</select>
 	
 	<insert id="saveGiftcardApi" parameterType="GiftCard">
-		<!-- TsfGiftcard.saveGiftcardApi -->
+		/*TsfGiftcard.saveGiftcardApi*/
 		INSERT INTO TB_GIFTCARD_API_HST
 		(
 		   GFCD_NO
@@ -108,7 +102,7 @@
 	</insert>
 	
 	<insert id="getGiftcardUseConfirm" parameterType="GiftCard">
-		<!-- TsfGiftcard.getGiftcardUseConfirm -->
+		/*TsfGiftcard.getGiftcardUseConfirm*/
 		INSERT INTO TB_CUST_GIFTCARD
 		(
 			CUST_NO

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

@@ -181,7 +181,7 @@
 		                      AND B.USE_YN = 'Y'
 		INNER JOIN TB_BRAND_GROUP D ON B.BRAND_GROUP_NO = D.BRAND_GROUP_NO
 		                            AND D.USE_YN = 'Y'
-		LEFT OUTER JOIN TB_DELV_FEE_POLICY E ON G.SUPPLY_COMP_CD = E.SUPPLY_COMP_CD
+		INNER JOIN TB_DELV_FEE_POLICY E ON G.SUPPLY_COMP_CD = E.SUPPLY_COMP_CD
 		                                     AND G.DELV_FEE_CD =  E.DELV_FEE_CD
 		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		                              AND IFNULL(#{custNo}, 0) = W.CUST_NO
@@ -622,6 +622,7 @@
 		FROM TB_GOODS_RES_SELL
 		WHERE GOODS_CD = #{goodsCd}
 		AND DELV_RES_DT > NOW()
+		AND USE_YN = 'Y'
 		ORDER BY DELV_RES_DT
 		LIMIT 1
 	</select>

+ 22 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -17,7 +17,7 @@
 
 	<!-- 마이페이지 주문 목록 조회 -->
 	<select id="getOrderListForMypage" parameterType="Order" resultType="Order">
-		/* TscOrder.getOrderListForMypage */
+		/* TsfOrder.getOrderListForMypage */
 		SELECT O.ORD_NO
 		     , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
 		     , CASE OD.GIFT_PACK_YN WHEN 'Y' THEN DATE_FORMAT(O.ORD_DT + INTERVAL 3 DAY, '%Y.%m.%d')
@@ -50,7 +50,7 @@
 		     , OD.SUPPLY_COMP_CD
 		     , OD.DELV_FEE_CD
 		     , OD.SHOT_DELV_YN
-		     , OD.CHANGABLE_YN
+		     , OD.CHANGEABLE_YN
 		     , OD.RETURNABLE_YN
 		     , G.SELF_GOODS_YN
 		     , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)						AS BRAND_NM
@@ -125,7 +125,7 @@
 
 	<!-- 마이페이지 주문 상태 별 수량 조회 -->
 	<select id="getOrderStatCount" parameterType="Order" resultType="Order">
-		/* TscOrder.getOrderStatCount */
+		/* TsfOrder.getOrderStatCount */
 		SELECT SUM(Z.ORDER_RECEIPT)                          AS ORDER_RECEIPT_COUNT
 		     , SUM(Z.PAYMENT_COMPLETE)                       AS PAYMENT_COMPLETE_COUNT
 		     , SUM(Z.GOODS_PREPARE)                          AS GOODS_PREPARE_COUNT
@@ -178,7 +178,7 @@
 
 	<!-- 마이페이지 주문목록 페이징 처리 주문번호 수 조회 -->
 	<select id="getPagingOrdNoListCount" parameterType="Order" resultType="int">
-		/* TscOrder.getPagingOrdNoList */
+		/* TsfOrder.getPagingOrdNoList */
 		SELECT COUNT(*) AS CNT
 		  FROM (SELECT O.ORD_NO
 				  FROM TB_ORDER O
@@ -198,7 +198,7 @@
 
 	<!-- 마이페이지 주문목록 페이징 처리 주문번호 조회 -->
 	<select id="getPagingOrdNoList" parameterType="Order" resultType="Order">
-		/* TscOrder.getPagingOrdNoList */
+		/* TsfOrder.getPagingOrdNoList */
 		<include refid="selectForPagingHeader"/>
 		SELECT O.ORD_NO
 		     , RANK() OVER(ORDER BY O.ORD_DT DESC) AS NUMB
@@ -216,10 +216,24 @@
 		 GROUP BY O.ORD_NO
 		<include refid="selectForPagingFooter"/>
 	</select>
+	
+	<!-- 마이페이지 주문목록 사은품 조회 -->
+	<select id="getOrderFreeGiftListForMypage" parameterType="Order" resultType="Order">
+		/* TsfOrder.getPagingOrdNoList */
+		SELECT FG.GOODS_NM
+			 , OFV.USE_POINT
+		  FROM TB_ORD_FREEGIFT OFG
+		 INNER JOIN TB_ORD_FREEGIFT_VAL OFV
+		    ON OFG.ORD_FREEGIFT_SQ = OFV.ORD_FREEGIFT_SQ
+		 INNER JOIN TB_FREE_GOODS FG
+		    ON OFV.PRODUCT_NO = FG.PRODUCT_NO
+		   AND OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		 WHERE OFG.ORD_NO = #{ordNo}
+	</select>
 
 	<!-- 마이페이지 주문상세 금액정보 조회 -->
 	<select id="getOrderAmtForMypage" parameterType="Order" resultType="Order">
-		/* TscOrder.getOrderAmtForMypage */
+		/* TsfOrder.getOrderAmtForMypage */
 		SELECT SUM(OD.ORD_AMT)          AS ORD_AMT
 			 , SUM(OD.CPN1_DC_AMT)      AS CPN1_DC_AMT
 			 , SUM(OD.TMTB1_DC_AMT)     AS TMTB1_DC_AMT
@@ -248,7 +262,7 @@
 
 	<!-- 마이페이지 주문상세 결제정보 조회 -->
 	<select id="getPaymentInfoForMypage" parameterType="Order" resultType="Order">
-		/* TscOrder.getPaymentInfoForMypage */
+		/* TsfOrder.getPaymentInfoForMypage */
 		SELECT PAY_SQ
 		     , ORD_NO
 		     , PAY_DT
@@ -312,7 +326,7 @@
 
 	<!-- 마이페이지 주문상세 배송지 정보 조회 -->
 	<select id="getOrderDeliveryAddrInfo" parameterType="Order" resultType="Order">
-		/* TscOrder.getOrderDeliveryAddrInfo */
+		/* TsfOrder.getOrderDeliveryAddrInfo */
 		SELECT DA.DELV_ADDR_SQ
 			 , DA.RECIP_NM
 			 , DA.RECIP_PHNNO

+ 21 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -30,11 +30,6 @@
 		INNER JOIN TB_ORDER_DETAIL OD ON R.ORD_NO = OD.ORD_NO 
 		                              AND R.ORD_DTL_NO  = OD.ORD_DTL_NO
 		                              AND R.GOODS_CD = OD.GOODS_CD
-		INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_NO = ODI.ORD_NO 
-		                                    AND OD.ORD_DTL_NO  = ODI.ORD_DTL_NO
-		<if test='goodsType != null and goodsType != "G056_S" '>
-		                              AND OD.GOODS_CD = ODI.ITEM_CD 
-		</if>
 		INNER JOIN TB_CUSTOMER C ON R.REG_NO  = C.CUST_NO
 		AND R.GOODS_CD = #{goodsCd}
 		<if test='bestYn != null and bestYn == "Y"'>
@@ -93,18 +88,20 @@
 		     , C.CUST_ID 
 		     , (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') AS SYS_IMG_NM
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
+		     <![CDATA[
+		     , (SELECT MAX(REVIEW_SQ) FROM TB_REVIEW WHERE REVIEW_SQ < #{reviewSq} AND GOODS_CD = R.GOODS_CD AND REVIEW_GB = 'P' AND DEL_YN = 'N') AS PREV_REVIEW_SQ
+		     , (SELECT MIN(REVIEW_SQ) FROM TB_REVIEW WHERE REVIEW_SQ > #{reviewSq} AND GOODS_CD = R.GOODS_CD AND REVIEW_GB = 'P' AND DEL_YN = 'N') AS NEXT_REVIEW_SQ
+		     ]]>
 		     , RANK() OVER(ORDER BY R.REVIEW_SQ DESC) AS RNUM
 		FROM TB_REVIEW R 
 		INNER JOIN TB_GOODS G ON R.GOODS_CD = G.GOODS_CD
 		INNER JOIN TB_ORDER_DETAIL OD ON R.ORD_NO = OD.ORD_NO 
 		                               AND R.ORD_DTL_NO  = OD.ORD_DTL_NO 
-		INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_NO = ODI.ORD_NO 
-		                                    AND OD.ORD_DTL_NO  = ODI.ORD_DTL_NO
-		<if test='goodsType != null and goodsType != "G056_S" '>
-		                              AND OD.GOODS_CD = ODI.ITEM_CD 
-		</if>
 		INNER JOIN TB_CUSTOMER C ON R.REG_NO  = C.CUST_NO
 		AND R.GOODS_CD = #{goodsCd}
+		<if test="reviewSq != null and reviewSq != ''" >
+		AND R.REVIEW_SQ = #{reviewSq}
+		</if>
 		<if test='bestYn != null and bestYn == "Y"'>
 		AND R.BEST_YN = 'Y'
 		</if>
@@ -155,5 +152,19 @@
 		WHERE R.REVIEW_SQ = #{reviewSq} 
 		AND R.GOODS_CD = #{goodsCd}
 	</select>
+	
+	<!-- 상품평 옵션 목록 -->
+	<select id="getReviewOptionList" parameterType="String" resultType="Goods">
+		/* TsfReivew.getReviewOptionList */
+		SELECT DISTINCT ODI.OPT_CD2
+		FROM TB_REVIEW R 
+		INNER JOIN TB_ORDER_DETAIL OD ON R.ORD_NO = OD.ORD_NO 
+		                              AND R.ORD_DTL_NO  = OD.ORD_DTL_NO
+		                              AND R.GOODS_CD  = OD.GOODS_CD 
+		INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_NO = ODI.ORD_NO 
+		                                    AND OD.ORD_DTL_NO  = ODI.ORD_DTL_NO
+		INNER JOIN TB_GOODS G ON ODI.ITEM_CD = G.GOODS_CD
+		WHERE R.GOODS_CD = #{goodsCd}
+	</select>
 
 </mapper>

+ 3 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html

@@ -19,6 +19,7 @@
 	<meta property="og:locale" content="ko_KR"/>
 	<meta property="og:site_name" th:content="${metaBrowserTitle}" content="한세공식몰 스타일24"/>
 	
+	<!-- 추천솔루션 meta -->
 	<meta property="eg:cuid" content="" />
 	<meta property="eg:itemId" content="" />
 	<meta property="eg:itemName" content="" />
@@ -40,6 +41,7 @@
 	<meta property="eg:extraImage" content="" />
 	<meta property="eg:locale" content="" />
 	<meta property="eg:etc1" content="" />
+	<!-- 추천솔루션 meta -->
 	
 	<title th:text="${metaBrowserTitle}">한세공식몰 스타일24</title>
 	<link rel="icon" th:href="@{/images/favicon.ico}" href="favicon.ico" type="image/x-icon"/>
@@ -100,7 +102,7 @@
 		}
 		var eglqueueCuid = '1252aed4-78dc-46e8-b784-94ac42e86dd4';
 		var hCustId = gCustId ? hex_sha512(gCustId).toString().hashCode() : '';
-		var hEmail = gCustId ? hex_sha512(gEmail).toString().hashCode() : '';
+		var hEmail = gEmail;
 		
 		/* Eiengine Script (Visit) */
 		window._eglqueue = window._eglqueue || [];

+ 14 - 7
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -206,7 +206,7 @@
 												<ul class="list">
 													<li class="selected" id="selfNoGoodsOpt">선택</li> 
 													<th:block th:each="goodsOption, status : ${goodsOptionList}" >
-													<li th:attr="aria-disabled=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}">
+													<li th:attr="aria-disabled=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}" th:onclick="jfViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsOption.optCd}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">
 														<div th:text="${goodsOption.optNm}">상품옵션</div>
 														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt"  th:id="${goodsOption.optCd}" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
@@ -284,7 +284,7 @@
 										<!-- 베스트 리뷰 등록시 노출 -->
 										<div class="best_review" th:if="${bestReviewList != null and !bestReviewList.empty}">
 											<th:block th:each="bestReview, status : ${bestReviewList}" th:if="${status.first}">
-											<a href="javascript:void(0);" id="btn_pdBestReview_pop"  th:onclick="cfGoodsBestReview([[${goodsInfo.goodsCd}]])" >
+											<a href="javascript:void(0);" id="btn_pdBestReview_pop"  th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y',[[${bestReview.reviewSq}]])" >
 												<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
 													<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
 													<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
@@ -703,19 +703,26 @@
 	//사이즈 클릭시
 	var jfViewStock = function(obj, goodsCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
 		var $obj = $(obj);
-
-		var $target = $obj.parent().parent().children('input[name="opt"]');
-		$target.prop("checked",true);
+		var selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		var $target = null;
+		if (selfGoodsYn == "Y"){
+			$target = $obj.parent().parent().children('input[name="opt"]');
+			$target.prop("checked",true);
+			$("#selectOptCd1").html(optCd2);
+		}else{
+			$target = $obj.children('input[name="opt"]');
+			
+		}
 		var addPrice  = $target.attr("addPrice");
 		var optCd  = $target.attr("optCd");
-		$("#selectOptCd1").html(optCd2);
+		
 		if (Number(addPrice) > 0) $("#selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
 		$("#cartForm  input[name=optCd]").val(optCd);
 		$("#cartForm  input[name=optCd1]").val(optCd1);
 		$("#cartForm  input[name=optCd2]").val(optCd2);
 		$("#cartForm  input[name=addPrice]").val(addPrice);
 		$("#cartForm  input[name=ordQty]").val("");
-		var selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		
 
 		var maxCnt = maxOrdQty;
 		var params = new Object();

+ 88 - 82
src/main/webapp/WEB-INF/views/web/goods/GoodsReviewFormWeb.html

@@ -329,8 +329,7 @@
 										</th:block>
 									</div>
 									<div class="pic" th:unless="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
-										<span class="thumb">
-										<img th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" alt="">
+										<span class="thumb" th:style="${'background-image:url('+imgGoodsUrl+ '/'+goodsInfo.sysImgNm+');'}">
 										</span>
 									</div>
 									<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.score*100/5), 0,0)}">
@@ -357,7 +356,7 @@
 							<th:block th:if="${photoReview.reviewAttachList != null and !photoReview.reviewAttachList.empty}">
 							<th:block th:each="reviewAttach, attachStatus : ${photoReview.reviewAttachList}" th:if="${attachStatus.first}">
 							
-							<a href="javascript:void(0);" th:onclick="cfGoodsReviewPhotoDetail([[${goodsInfo.goodsCd}]])">
+							<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]], '', [[${photoReview.reviewSq}]])">
 								<div class="pic">
 									<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
 								</div>
@@ -377,84 +376,76 @@
 			<div class="area_rv_all">
 			<form id="goodsReviewForm" name="goodsReviewForm" action="#" th:action="@{'/goods/review/list'}">
 			<input type="hidden" name="pageNo" value ="1"/>
-			<input type="hidden" name="pageSize" value ="20"/>
+			<input type="hidden" name="pageSize" value ="1"/>
 			<input type="hidden" name="goodsCd" th:value ="${goodsInfo.goodsCd}"/>
 			<input type="hidden" name="goodsType" th:value ="${goodsInfo.goodsType}"/>
-				<h6>전체리뷰<span>(9,999+)</span></h6>
+				<h6>전체리뷰<span>(<span id="reviewCount" th:text="${(reviewCount <= 9999) ? #numbers.formatInteger(reviewCount, 0,'COMMA') : '9,999+'}">9,999+</span>)</span></h6>
 				<div class="selection">
-					<form class="form_wrap">
-						<div class="form_field">
-							<div class="select_custom sort_opt1">
-								<div class="combo">
-									<div class="select">평점 전체</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" -->
-										<li class="selected">평점 전체</li> 
-										<li>5점&nbsp;&starf;&starf;&starf;&starf;&starf;</li>
-										<li>4점&nbsp;&starf;&starf;&starf;&starf;</li>
-										<li>3점&nbsp;&starf;&starf;&starf;</li>
-										<li>2점&nbsp;&starf;&starf;</li>
-										<li>1점&nbsp;&starf;</li>
-									</ul>
-								</div>
+					<div class="form_field">
+						<div class="select_custom sort_opt1">
+							<div class="combo">
+								<div class="select">평점 전체</div>
+								<ul class="list" onclick="jfReviewSearch();" >
+									<!-- 선택처리 class="selected" -->
+									<li class="selected" >평점 전체<input type="hidden" name="reviewScore" value=""/></li> 
+									<li>5점&nbsp;&starf;&starf;&starf;&starf;&starf;<input type="hidden" name="reviewScore" value="5"/></li>
+									<li>4점&nbsp;&starf;&starf;&starf;&starf;<input type="hidden" name="reviewScore" value="4" scoreId="4"/></li>
+									<li>3점&nbsp;&starf;&starf;&starf;<input type="hidden" name="reviewScore" value="3"/></li>
+									<li>2점&nbsp;&starf;&starf;<input type="hidden" name="reviewScore" value="2"/></li>
+									<li>1점&nbsp;&starf;<input type="hidden" name="reviewScore" value="1"/></li>
+								</ul>
 							</div>
-							<div class="select_custom sort_opt2">
-								<div class="combo">
-									<div class="select" th:text="${(goodsInfo.selfGoodsYn == 'Y')? '사이즈 전체' :'옵션 전체'}">사이즈 전체</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" -->
-										<li class="selected" th:text="${(goodsInfo.selfGoodsYn == 'Y')? '사이즈 전체' :'옵션 전체'}">사이즈 전체</li> 
-										<li>90</li>
-										<li>95</li>
-										<li>100</li>
-										<li>105</li>
-										<li>110</li>
-									</ul>
-								</div>
+						</div>
+						<div class="select_custom sort_opt2" th:if="${reviewOptionList != null and !reviewOptionList.empty}">
+							<div class="combo">
+								<th:block th:if="${(goodsInfo.selfGoodsYn == 'Y')}">
+								<div class="select">사이즈 전체<input type="hidden" name="reviewOption" value=""/></div>
+								</th:block>
+								<th:block th:unless="${(goodsInfo.selfGoodsYn == 'Y')}">
+								<div class="select">옵션 전체<input type="hidden" name="reviewOption" value=""/></div>
+								</th:block>
+								<ul class="list">
+									<!-- 선택처리 class="selected" -->
+									<li class="selected" th:text="${(goodsInfo.selfGoodsYn == 'Y')? '사이즈 전체' :'옵션 전체'}">사이즈 전체</li> 
+									<li th:each="reviewOption, status : ${reviewOptionList}" >
+									<th:block th:text="${reviewOption.optCd2}"></th:block>
+									<input type="hidden" name="reviewOption" th:value="${reviewOption.optCd2}"/>
+									</li>
+								</ul>
 							</div>
-							<div class="select_custom sort_opt3">
-								<div class="combo">
-									<div class="select">키 전체</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" -->
-										<li class="selected">키 전체</li> 
-										<li>150cm 이하</li>
-										<li>150~155cm</li>
-										<li>155~160cm</li>
-										<li>160~165cm</li>
-										<li>165~170cm</li>
-										<li>175~180cm</li>
-										<li>185~190cm</li>
-										<li>190~200cm</li>
-									</ul>
-								</div>
+						</div>
+						<div class="select_custom sort_opt3" th:if="${reviewHeightList != null and !reviewHeightList.empty}">
+							<div class="combo">
+								<div class="select">키 전체<input type="hidden" name="reviewHeight" value=""/></div>
+								<ul class="list">
+									<!-- 선택처리 class="selected" -->
+									<li class="selected">키 전체<input type="hidden" name="reviewHeight" value=""/></li> 
+									<li th:each="reviewHeight, status : ${reviewHeightList}" >
+									<th:block th:text="${reviewHeight.cdNm}"></th:block>
+									<input type="hidden" name="reviewHeight" th:value="${reviewHeight.cd}"/>
+									</li>
+								</ul>
 							</div>
-							<div class="select_custom sort_opt4">
-								<div class="combo">
-									<div class="select">몸무게 전체</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" -->
-										<li class="selected">몸무게 전체</li> 
-										<li>40kg 이하</li>
-										<li>40~45kg</li>
-										<li>45~50kg</li>
-										<li>50~55kg</li>
-										<li>55~60kg</li>
-										<li>60~65kg</li>
-										<li>65~70kg</li>
-										<li>75~80kg</li>
-										<li>85~85kg</li>
-										<li>90~95kg</li>
-									</ul>
-								</div>
+						</div>
+						<div class="select_custom sort_opt4" th:if="${reviewWeightList != null and !reviewWeightList.empty}">
+							<div class="combo">
+								<div class="select">몸무게 전체<input type="hidden" name="reviewWeight" value=""/></div>
+								<ul class="list">
+									<!-- 선택처리 class="selected" -->
+									<li class="selected">몸무게 전체<input type="hidden" name="reviewWeight" value=""/></li> 
+									<li th:each="reviewWeight, status : ${reviewWeightList}" >
+									<th:block th:text="${reviewWeight.cdNm}"></th:block>
+									<input type="hidden" name="reviewWeight" th:value="${reviewWeight.cd}"/>
+									</li>
+									
+								</ul>
 							</div>
-						</div>				
-					</form>
+						</div>
+					</div>
 				</div>
 				<!-- 나열조건결과 있을 때 노출 내용 -->
 				<div class="review_list">
 					<ul  id="ulGoodsReviewQna">
-						
 					</ul>
 				</div>
 				<div class="ui_row">
@@ -492,7 +483,7 @@
 			$('#goodsReviewForm  input[name="secretYn"]').val('N');
 		} */
 		// Initialize a pagination
-		gagaPaging.init('goodsReviewForm', fnGetListCallback, 'pageNav', 20);
+		gagaPaging.init('goodsReviewForm', fnGetListCallback, 'pageNav', 1);
 
 		// Load data
 		gagaPaging.load(1);
@@ -510,7 +501,7 @@
 				tag += '	<div class="info_box">\n';
 				tag += '		<div class="star_score">\n';
 				tag += '			<span class="star">\n';
-				tag += '				<em class="progbar" style="width:70%;"></em>\n'; //<!-- 평점 style로 표기 -->
+				tag += '				<em class="progbar" style="width:'+(item.score*20)+'%;"></em>\n'; //<!-- 평점 style로 표기 -->
 				tag += '			</span>\n';
 				tag += '		</div>\n';
 				tag += '		<div class="writer">\n';
@@ -523,7 +514,11 @@
 				tag += '			<dl>\n';
 				tag += '				<div>\n';
 				tag += '					<dt>구매옵션</dt>\n';
-				tag += '					<dd>'+ item.optCd1 +' / '+ item.optCd2 +'</dd>\n';
+				if (item.goodsOptionList != null && item.goodsOptionList.length > 0){
+					$.each(item.goodsOptionList, function(gIdx, goodsOption){
+				tag += '					<dd>'+ goodsOption.optCd1 +' / '+ goodsOption.optCd2 +'</dd>\n';		
+					});
+				}
 				tag += '				</div>\n';
 				tag += '			</dl>\n';
 				tag += '		</div>\n';
@@ -533,7 +528,7 @@
 				tag += '					<dt>키/몸무게</dt>\n';
 				tag += '					<dd>'+ item.height +'cm/'+ item.weight +'kg</dd>\n';
 				tag += '				</div>\n';
-				if (!gagajf.isNuil(item.sizeGb) ){	// 사이즈구분값이 있을경우 노출
+				if (!gagajf.isNull(item.sizeGb) ){	// 사이즈구분값이 있을경우 노출
 					tag += '				<div>\n';
 					tag += '					<dt>사이즈</dt>\n';
 					tag += '					<dd>'+ item.scoreSizeNm +'</dd>\n';
@@ -570,19 +565,24 @@
 				tag += '		<div class="photo_list">\n';
 				tag += '			<ul>\n';
 				if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
-					tag += '				<li>\n';
-					tag += '					<a href="">\n';
-					tag += '						<div class="pic">\n';
-					tag += '							<span class="thumb mov" style="background-image:url(\'/images/pc/thumb/tmp_pdLookbook3.jpg\');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
-					tag += '						</div>\n';
-					tag += '					</a>\n';
-					tag += '				</li>\n';
+					var fileGbClass = '';
+					$.each(item.reviewAttachList, function(aIdx, reviewAttach){
+						fileGbClass = '';
+						if (reviewAttach == "M") fileGbClass = "mov";
+				tag += '				<li>\n';
+				tag += '					<a href="javascript:void();" onclick="cfGoodsBestReview(\''+item.goodsCd+'\');">\n';
+				tag += '						<div class="pic">\n';
+				tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+				tag += '						</div>\n';
+				tag += '					</a>\n';
+				tag += '				</li>\n';		
+					});	
 				}
 				tag += '			</ul>\n';
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '	<div class="txt_review_box">\n';
-				tag += '		<p>' + item.reviewContent '+</p>\n';
+				tag += '		<p>' + item.reviewContent +'</p>\n';
 				tag += '	</div>\n';
 				if (!gagajf.isNull(item.admRpl)){
 					tag += '	<div class="reply_box">\n';
@@ -611,6 +611,12 @@
 		gagaPaging.createPagination(result.paging.pageable);
 	}
 	
+	var jfReviewSearch = function(obj){
+		debugger;
+		$obj = $(obj);
+		
+	}
+	
 	$(document).ready( function() {
 
 		var sort_selecter01 = new sCombo('.area_rv_all .selection .select_custom.sort_opt1');

+ 129 - 60
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html

@@ -1,6 +1,5 @@
 <!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"
+<html lang="ko" xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
 	layout:decorator="web/common/layout/MypageLayoutWeb">
 <!--
@@ -17,68 +16,123 @@
  *******************************************************************************
  -->
 <body>
-
-<th:block layout:fragment="content">
-<!--  container -->
-	<div class="my_cont">
-		<div class="sec_head">
-			<h3>나의 쿠폰</h3>
-		</div>
-		<div class="sec_body">
-			<div class="save_area mypage_coupon">
-				<p>내가 보유한 할인 쿠폰<strong th:text="${#numbers.formatInteger(couponInfo.allCouponCnt,0,'COMMA')}"></strong>장</p>
-				<ul>
-					<li>사용 가능 할인 쿠폰 <span th:text="${#numbers.formatInteger(couponInfo.useCouponCnt,0,'COMMA')} + '장'"></span></li>
-					<li>7일 이내 마감 쿠폰 <span th:text="${#numbers.formatInteger(couponInfo.expireCouponCnt,0,'COMMA')} + '장'"></span></li>
-				</ul>
-			</div>
-			<div class="coupon_list">
-				<ul class="clear">
-					<th:block th:each="CouponData, CouponStat : ${couponList}">
-					<li th:class="${CouponData.userYn == 'Y' ? '' : 'off'}">
-						<div class="cp_top">
-							<div class="cp_detail">
-								<p class="tit" th:text="${CouponData.cpnNm}"></p>
-								<th:block th:if="${CouponData.dcWay == '할인율'}">
-								<strong class="sale_t won_t"><span th:text="${CouponData.dcPval}"></span>%</strong>
-								</th:block>
-								<th:block th:unless="${CouponData.dcWay == '할인율'}">
-								<strong class="sale_t won_t"><span th:text="${#numbers.formatInteger(CouponData.dcPval,0,'COMMA')}"></span>원</strong>
-								</th:block>
-								
-								<p class="cp_cont"><span th:text="${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}"></span>원 이상 구매시 최대 <span th:text="${#numbers.formatInteger(CouponData.maxDcAmt,0,'COMMA')}"></span>원 할인</p>
-								<span class="cp_cnt"><span th:text="${CouponData.cnt}"></span>장 보유</span>
+	<th:block layout:fragment="content">
+		<!--  container -->
+		<!-- CONT-BODY -->
+		<div class="content myCoupon">
+			<!-- 페이지특정 클래스 = myCoupon -->
+			<div class="cont_body">
+				<div class="lnb">
+					<!-- 마이페이지 lnb 영역 -->
+				</div>
+				<div class="cont">
+					<div class="sec_head">
+						<h3 class="subH1">쿠폰</h3>
+					</div>
+					<div class="sec_body">
+						<div class="highlight_area">
+							<div class="have_amount">
+								<div class="total_amount">
+									나의 보유 쿠폰&nbsp;<span><em
+										th:text="${#numbers.formatInteger(couponInfo.allCouponCnt,0,'COMMA')}"></em>장</span>
+								</div>
+								<dl>
+									<div>
+										<dt>
+											<span class="tag primary_line">D-<em>7</em></span>7일 이내 소멸 예정
+										</dt>
+										<dd>
+											<em
+												th:text="${#numbers.formatInteger(couponInfo.expireCouponCnt,0,'COMMA')}"></em>장
+										</dd>
+									</div>
+								</dl>
 							</div>
-							<span class="cp_shape"></span>
 						</div>
-					
-						<th:block th:if="${CouponData.userYn == 'Y'}">
-						<div class="cp_date">
-							<span th:text="${CouponData.availStdt}"></span> ~ <span th:text="${CouponData.availEddt}"></span>
-						</div>
-						</th:block>
-						
-						<th:block th:unless="${CouponData.userYn == 'Y'}">
-						<div class="cp_date">
-							<span class="cp_off">사용완료</span>
-						</div>
-						</th:block>
-						
-						<div class="cp_info">
-							<button type="button" th:onclick="useInfoCoupon([[${CouponData.cpnId}]])" class="coupon_pop_btn"><span>사용안내</span></button>
+						<div class="content_area">
+							<!-- 데이터 있을 시 -->
+							<div class="list_box">
+								<div class="coupon_list">
+									<ul>
+										<th:block th:if="${couponList != null and !couponList.empty}"
+											th:each="CouponData, CouponStat : ${couponList}">
+											<li>
+												<!-- 쿠폰사용 기한 -->
+												<div
+													th:class="${CouponData.userYn == 'coupon' ? '' : 'coupon disabled'}">
+													<div>
+														<p class="cp_name" th:text="${CouponData.cpnNm}"></p>
+														<p class="cp_cont">
+															<th:block th:if="${CouponData.dcWay == '할인율'}">
+																<span><em th:text="${CouponData.dcPval}"></em>%</span>
+															</th:block>
+															<th:block th:unless="${CouponData.dcWay == '할인율'}">
+																<span><em
+																	th:text="${#numbers.formatInteger(CouponData.dcPval,0,'COMMA')}"></em>원</span>
+															</th:block>
+
+														</p>
+														<p class="cp_condition">
+															[[${#numbers.formatInteger(CouponData.buyLimitAmt,0,'COMMA')}]]원
+															이상 구매 시 최대
+															[[${#numbers.formatInteger(CouponData.maxDcAmt,0,'COMMA')}]]원
+															할인 <span><em class="tag primary_line"
+																th:text="${CouponData.cnt}+' 장 보유'"></em></span>
+														</p>
+													</div>
+													<th:block th:if="${CouponData.userYn == 'Y'}">
+														<p class="cp_date">
+															<span th:text="${CouponData.availStdt}"></span>&nbsp;~&nbsp;<span
+																th:text="${CouponData.availEddt}"></span>
+														</p>
+													</th:block>
+													<th:block th:unless="${CouponData.userYn == 'Y'}">
+														<p class="cp_date">사용완료</p>
+													</th:block>
+
+												</div> <!-- 쿠폰사용 기한-->
+												<button type="button" id="btn_couponInfo_pop"
+													class="btn_underline"
+													th:onclick="useInfoCoupon([[${CouponData.cpnId}]])">
+													<span>사용안내</span>
+												</button>
+											</li>
+									</ul>
+								</div>
+							</div>
+							<!-- //데이터 있을 시 -->
+							<!-- 데이터 없을 시 -->
+							<div class="nodata" style="display: none;">
+								<div class="txt_box">
+									<p>
+										현재 노출 할 수 있는 쿠폰이 없습니다.<br>
+									</p>
+								</div>
+								<!-- 버튼 필요시 -->
+								<!-- <div class="btn_box">
+										<button class="btn btn_default"><span>행동하기</span></button>
+									</div> -->
+								<!-- //버튼 필요시 -->
+							</div>
+							<!-- 데이터 없을 시 -->
 						</div>
-					</li>
-					</th:block>
-				</ul>
+					</div>
+				</div>
 			</div>
 		</div>
-	</div>
-	
-	<!-- 쿠폰 사용 내역 팝업 -->
-	<div class="modal coupon_popup" tabindex="-1" role="dialog" aria-labelledby="PopupBasicLabel" aria-hidden="true" id="couponDetailPop"></div>
+		<!-- // CONT-BODY -->
+
+		<!-- 쿠폰 사용 내역 팝업 -->
+		<div class="modal coupon_popup" tabindex="-1" role="dialog"
+			aria-labelledby="PopupBasicLabel" aria-hidden="true"
+			id="couponDetailPop"></div>
 
-	<!-- // container -->	
-<script th:inline="javascript">
+		<!-- // container -->
+		<script th:inline="javascript">
+
+let couponList = ([[${couponList}]]);	
+
+console.log(couponList);
 // 사용안내 모달
 var useInfoCoupon = function (id) {
 	 $.ajax( {
@@ -96,8 +150,23 @@ var useInfoCoupon = function (id) {
 	return false; 
 }
 
-$(document).ready(function() {
+if(couponList.length>0){
+	$(".nodata").hide();
+}else{
+	$(".nodata").show();
+}
+
 
+
+
+$(document).ready(function() {
+	
+	if(couponList.length>0){
+		$(".nodata").hide();
+	}else{
+		$(".nodata").show();
+	}
+	
 	// 마이페이지 LNB 설정
 	fnSetMypageLnbList(4);
 	
@@ -107,7 +176,7 @@ $(document).ready(function() {
 
 });
 </script>
-</th:block>
+	</th:block>
 
 </body>
 </html>

+ 335 - 260
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -1,6 +1,5 @@
 <!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"
+<html lang="ko" xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
 	layout:decorator="web/common/layout/MypageLayoutWeb">
 <!--
@@ -18,283 +17,359 @@
  -->
 <body>
 
-<th:block layout:fragment="content">
-<!--  container -->
-	<div class="my_cont">
-		<div class="sec_head">
-			<h3>STYLE24 상품권</h3>
-		</div>
-		<div class="sec_body">
-			<div class="save_area mypage_coupon">
-				<p>사용 가능한 보유 금액<strong th:text="${#numbers.formatInteger(giftcardInfo.useGift,0,'COMMA')}"></strong>원</p>
-				<ul>
-					<li>보유 상품권 <span th:text="${#numbers.formatInteger(giftcardInfo.totalCount,0,'COMMA')} + '장'"></span></li>
-					<li>한달 이내 소멸 예정 <span th:text="${#numbers.formatInteger(giftcardInfo.expireCount,0,'COMMA')} + '장'"></span></li>
-				</ul>
-			</div>
-			<div class="gift_search">
-				<div class="gift_sea_wrap clear">
-					<label for="gift_input">상품권 등록</label>
-					<input type="text" id="gift_input" placeholder="상품권 번호를 입력해주세요.">
-					<button type="button" class="btn btn_dark" onclick="giftcardSave()">등록</button>
-				</div>
-			</div>
-			<div class="com_info_txt">
-				<p class="tit">상품권 등록 안내</p>
-				<ul>
-					<li>상품권은 상품 구매시 현금과 동일하게 사용됩니다.</li>
-					<li>상품권은 등록한 해당 몰에서만 사용이 가능합니다.</li>
-					<li>사용 후 남은 잔액은 상품권 잔액으로 환불되며,유효기간 내에 사용 가능합니다.</li>
-					<li>유효기간이 지난 상품권의 잔액은 자동 소멸됩니다.</li>
-					<li>상품권은 현금성 결제 수단에 포함되어 주문시 포인트 적립이 가능합니다.</li>
-					<li>상품권으로 결제한 금액은 마이페이지>주문상세페이지에서 현금영수증을 발급 받으실 수 있습니다.</li>
-				</ul>
-			</div>
-			<div class="my_tab coupon_tab">
-				<ul>
-					<li><a href="javascript:void(0);" id="SearchUseGiftcard">사용내역</a></li>
-					<li><a href="javascript:void(0);" id="SearchOwnGiftcard">보유 상품권</a></li>
-				</ul>
-				<!-- <div class="form_field" id="dateField">
-					<select id="searchDt" onchange="fnChangeDate(this)">
-						
-					</select> 
-				</div> -->
-					<div class="form_field" id="dateField">
-						<div class="select_custom type1">
-							<div class="combo">
-								<div class="select"></div> <!-- 셀렉박스 -->
-									<ul id="searchDt" class="list" style="width:200px; margin:0 auto">
+	<th:block layout:fragment="content">
+		<!--  container -->
+		<div class="content myVoucher">
+			<!-- 페이지특정 클래스 = myVoucher -->
+			<div class="cont_body">
+			<div class="lnb">
+						<!-- 마이페이지 lnb 영역 -->
+					</div>
+				<div class="cont">
+					<div class="sec_head">
+						<h3 class="subH1">상품권</h3>
+					</div>
+					<div class="sec_body">
+						<div class="highlight_area">
+							<div class="have_amount">
+								<div class="total_amount">
+									나의 보유 금액&nbsp;<span><em
+										th:text="${#numbers.formatInteger(giftcardInfo.useGift,0,'COMMA')}"></em>원</span>
+								</div>
+								<dl>
+									<div>
+										<dt>보유 상품권</dt>
+										<dd>
+											<em
+												th:text="${#numbers.formatInteger(giftcardInfo.totalCount,0,'COMMA')}"></em>장
+										</dd>
+									</div>
+									<div>
+										<dt>
+											<span class="tag primary_line">D-<em>30</em></span>한 달 이내 소멸
+											예정
+										</dt>
+										<dd>
+											<em
+												th:text="${#numbers.formatInteger(giftcardInfo.expireCount,0,'COMMA')}"></em>원
+										</dd>
+									</div>
+								</dl>
+							</div>
+						</div>
+						<div class="input_area">
+							<form class="form_wrap">
+								<div class="form_field">
+									<label class="input_label"><span>상품권 등록</span></label>
+									<div class="input_wrap">
+										<input type="text" class="form_control" id="gift_input"
+											placeholder="상품권 번호를 입력해주세요">
+									</div>
+									<button type="button" class="btn btn_dark"
+										onclick="giftcardSave()">
+										<span>등록</span>
+									</button>
+								</div>
+							</form>
+						</div>
+						<div class="com_info_txt">
+							<p class="tit">상품권 등록 안내</p>
+							<ul>
+								<li>상품권은 상품 구매시 현금과 동일하게 사용됩니다.</li>
+								<li>상품권은 등록한 해당 몰에서만 사용이 가능합니다.(YES24와 중복 사용불가)</li>
+								<li>사용 후 남은 잔액은 상품권 잔액으로 환불되며, 유효기간 내에 사용 가능합니다.</li>
+								<li>유효기간이 지난 상품권의 잔액은 자동 소멸됩니다.</li>
+								<li>상품권은 현금성 결제 수단에 포함되어 주문시 포인트 적립이 가능합니다.</li>
+								<li>상품권으로 결제한 금액은 마이페이지 > 주문상세페이지에서 현금영수증을 발급 받으실 수 있습니다.</li>
+							</ul>
+						</div>
+						<div class="content_area">
+							<div class="taps">
+								<div>
+									<ul>
+										<li id="SearchUseGiftcard"><a href="javascript:void(0);" >사용내역</a></li>
+										<li id="SearchOwnGiftcard"><a href="javascript:void(0);" >보유
+												상품권</a></li>
 									</ul>
+								</div>
+							</div>
+							<div class="select_box" id="dateField">
+								<div class="form_field">
+									<div class="select_custom month">
+										<div class="combo">
+											<div class="select"></div>
+											<ul class="list" id="searchDt">
+											</ul>
+										</div>
+									</div>
+								</div>
 							</div>
+							<!-- 데이터 있을 시 -->
+							<div class="list_box" id="giftcardList"></div>
+							<!-- //데이터 있을 시 -->
 						</div>
 					</div>
 				</div>
 			</div>
-			<div id="giftcardList">
-			</div>
 		</div>
-	</div>
-<!-- // CONT-BODY -->					
+		<!-- // CONT-BODY -->
 <script th:inline="javascript">
-var date = new Date();
-var year = date.getFullYear();
-var month = date.getMonth()+1;
-
-//동적으로 날짜 년도 append
-function appendYear(){
- 
-    for(var i=year; i<=year; i++){
-       	for (var j= 1; j <=month; j++) {
-       		$("#searchDt").prepend("<li onclick='fnChangeDate(this.value)' value='"+year+""+j+"'>"+i+"년"+j +"월 </li>");
-		}
-    }
-    $(".select").append("<li class='selected' value='"+year+""+month+"'>"+year+"년"+ month +"월 </li>"); // 현재년도 선택 */
-}
- 
-appendYear($("#searchDt"));
-
-// 사용내역 조회
-$("#SearchUseGiftcard").click(function(){
-	// class제거 추가
-	$("#SearchOwnGiftcard").removeClass("on");
-	$("#SearchUseGiftcard").addClass("on");
-	$("#giftcardList").attr("class","order_list");
-	
-	// 날짜 필드 
-	$("#dateField").css("display","block");
-	
-	let data = {searchDt : year+""+month,
-				month : month};
-
-	var jsonData = JSON.stringify(data);
-	
-	$.ajax(
-			{
-				type 	 : "POST",
-				data	 : jsonData,
-				url 	 : '/mypage/gift/use/list',
-				contentType: 'application/json',
-					dataType : 'json',
-				success  : function(result){
-					useGiftcard(result);
-				}
+	var date = new Date();
+	var year = date.getFullYear();
+	var month = date.getMonth() + 1;
+
+	//동적으로 날짜 년도 append
+	function appendYear() {
+
+		for (var i = year; i <= year; i++) {
+			for (var j = 1; j <= month; j++) {
+				$("#searchDt").prepend(
+						"<li onclick='fnChangeDate(this.value)' value='"
+								+ year + "" + j + "'>" + i
+								+ "년" + j + "월 </li>");
 			}
-	)
-});
-
-function useGiftcard(result) {
-	
-	let giftcardUseList = result.giftcardUseList;
-	
-	let tmtbHtml = "";
-	
-	tmtbHtml += '<section class="order_row mt30">';
-	tmtbHtml += '<div class="tbl track_tbl type2">';
-	tmtbHtml += '<table>';
-	tmtbHtml += '<colgroup>';
-	tmtbHtml += '<col width="750px">';
-	tmtbHtml += '<col width="150px">';
-	tmtbHtml += '<col width="*">';
-	tmtbHtml += '</colgroup>';
-	tmtbHtml += '<thead>';
-	tmtbHtml += '<tr>';
-	tmtbHtml +=	'<th>내용</th>';
-	tmtbHtml += '<th>증감/차감</th>';
-	tmtbHtml += '<th>일자</th>';
-	tmtbHtml += '</tr>';
-	tmtbHtml += '</thead>';
-	tmtbHtml += '<tbody>';
-	
-	
-	for(let i=0; i<giftcardUseList.length; i++){
-		let useGiftcard = giftcardUseList[i];
-		tmtbHtml +='<tr>';
-		if(useGiftcard.goodsNm != null){
-			tmtbHtml +='<td class="t_l pl40">'+ useGiftcard.goodsNm + '</td>';	
-		}else{
-			tmtbHtml +='<td class="t_l pl40">'+ useGiftcard.balanceName + '</td>';	
 		}
-		tmtbHtml += '<td class="c_primary">'+ useGiftcard.balance + ' ' + useGiftcard.gfcdAmt.addComma() + '</td>';
-		tmtbHtml += '<td>'+ useGiftcard.regDt + '</td>';
+		$(".select").append(
+				"<li class='selected' value='"+year+""+month+"'>"
+						+ year + "년" + month + "월 </li>"); // 현재년도 선택 */
+	}
+
+	appendYear($("#searchDt"));
+
+	// 사용내역 조회
+	$("#SearchUseGiftcard").click(function() {
+		// class제거 추가
+		$("#SearchOwnGiftcard").removeClass("active");
+		$("#SearchUseGiftcard").addClass("active");
+		$("#giftcardList").attr("class", "order_list");
+
+		// 날짜 필드 
+		$("#dateField").css("display", "block");
+
+		let data = {
+			searchDt : year + "" + month,
+			month : month
+		};
+
+		var jsonData = JSON.stringify(data);
+
+		$.ajax({
+			type : "POST",
+			data : jsonData,
+			url : '/mypage/gift/use/list',
+			contentType : 'application/json',
+			dataType : 'json',
+			success : function(result) {
+				useGiftcard(result);
+			}
+		})
+	});
+
+	function useGiftcard(result) {
+
+		let giftcardUseList = result.giftcardUseList;
+
+		let tmtbHtml = "";
+		tmtbHtml += '<div class="tbl type5">';
+		tmtbHtml += '<table>';
+		tmtbHtml += '<colgroup>';
+		tmtbHtml += '<col width="10%">';
+		tmtbHtml += '<col width="*">';
+		tmtbHtml += '<col width="18%">';
+		tmtbHtml += '<col width="18%">';
+		tmtbHtml += '</colgroup>';
+		tmtbHtml += '<thead>';
+		tmtbHtml += '<tr>';
+		tmtbHtml += '<th scope="col"><span class="sr-only">차감</span></th>';
+		tmtbHtml += '<th scope="col">내용</th>';
+		tmtbHtml += '<th scope="col">사용금액</th>';
+		tmtbHtml += '<th scope="col">일자</th>';
 		tmtbHtml += '</tr>';
+		tmtbHtml += '</thead>';
+
+		if (giftcardUseList.length <= 0) {
+			tmtbHtml += '<tbody>';
+			tmtbHtml += '</tbody>';
+			tmtbHtml += '</table>';
+			tmtbHtml += '</div>';
+			tmtbHtml += '<div class="nodata">';
+			tmtbHtml += '<div class="txt_box">';
+			tmtbHtml += '<p>현재 노출 할 수 있는 이용내역이 없습니다.<br></p>';
+			tmtbHtml += '</div>';
+			tmtbHtml += '</div>';
+
+		} else {
+			tmtbHtml += '<tbody>';
+
+			for (let i = 0; i < giftcardUseList.length; i++) {
+				let useGiftcard = giftcardUseList[i];
+				tmtbHtml += '<tr>';
+				tmtbHtml += '<td><span class="tag deepgray">차감</span></td>';
+				tmtbHtml += '<td>';
+				tmtbHtml += '<div class="txt_content">'	+ useGiftcard.goodsNm + '</div>';
+				tmtbHtml += '</td>';
+				tmtbHtml += '<td><span class="amount_minus"> <em>'
+						+ '-'
+						+ ' '
+						+ useGiftcard.gfcdAmt.addComma()
+						+ '</em>원';
+				tmtbHtml += '</span></td>';
+				tmtbHtml += '<td>' + useGiftcard.regDt
+						+ '</td>';
+				tmtbHtml += '</tr>';
+			}
+			tmtbHtml += '</tbody>';
+			tmtbHtml += '</table>';
+			tmtbHtml += '</div>';
+
+		}
+
+		$("#giftcardList").html(tmtbHtml);
 	}
-	
-	tmtbHtml += '</tbody>';
-	tmtbHtml += '</table>';
-	tmtbHtml += '</div>';
-	tmtbHtml += '</section>';
-	
-	$("#giftcardList").html(tmtbHtml);
-}
-
-// 보유상품권 조회
-$("#SearchOwnGiftcard").click(function(){
-	$("#SearchUseGiftcard").removeClass("on");
-	$("#SearchOwnGiftcard").addClass("on");
-	$("#giftcardList").attr("class","gift_list");
-	
-	// 날짜 필드 
-	$("#dateField").css("display","none");
-	let data = {};
-	
-	var jsonData = JSON.stringify(data);
-	
-	$.ajax(
-			{
-				type 	 : "POST",
-				data	 : jsonData,
-				url 	 : '/mypage/gift/own/list',
-				contentType: 'application/json',
-					dataType : 'json',
-				success  : function(result){
-					ownGiftcard(result);
+
+	// 보유상품권 조회
+	$("#SearchOwnGiftcard").click(function() {
+		$("#SearchUseGiftcard").removeClass("active");
+		$("#SearchOwnGiftcard").addClass("active");
+		$("#giftcardList").attr("class", "gift_list");
+
+		// 날짜 필드 
+		$("#dateField").css("display", "none");
+		let data = {};
+
+		var jsonData = JSON.stringify(data);
+
+		$.ajax({
+			type : "POST",
+			data : jsonData,
+			url : '/mypage/gift/own/list',
+			contentType : 'application/json',
+			dataType : 'json',
+			success : function(result) {
+				ownGiftcard(result);
+			}
+		})
+	});
+
+	function ownGiftcard(result) {
+
+		let giftcardOwnList = result.giftcardOwnList;
+
+		let tmtbHtml2 = "";
+
+		if (giftcardOwnList == null) {
+			tmtbHtml2 += '<div class="nodata">';
+			tmtbHtml2 += '<div class="txt_box">';
+			tmtbHtml2 += '<p>현재 노출 할 수 있는 상품권이 없습니다.<br></p>';
+			tmtbHtml2 += '</div>';
+			tmtbHtml2 += '</div>';
+		} else {
+
+			tmtbHtml2 += '<div class="voucher_list">';
+			tmtbHtml2 += '<ul>';
+				for (let i = 0; i < giftcardOwnList.length; i++) {
+				let ownGiftcard = giftcardOwnList[i];
+
+				tmtbHtml2 += '<li>';
+				if (ownGiftcard.rmGfcdAmt == 0) {
+					tmtbHtml2 += '<div class="voucher disable">';
+				} else {
+					tmtbHtml2 += '<div class="voucher">';
 				}
+
+				tmtbHtml2 += '<div>';
+				tmtbHtml2 += '<p class="vch_name">'	+ ownGiftcard.gfcdNm + '</p>';
+				tmtbHtml2 += '<p class="vch_price"><span class="tag primary_line"><em>'	+ ownGiftcard.chgGfcdAmt.addComma()	+ '</em>원권</span></p>';
+				if (ownGiftcard.rmGfcdAmt > 0) {
+					tmtbHtml2 += '<p class="vch_remain">'+ ownGiftcard.rmGfcdAmt.addComma()+ '원</p>';
+				} else {
+					tmtbHtml2 += '<p class="vch_remain">전액소진</p>';
+				}
+
+				tmtbHtml2 += '<p class="vch_code">'	+ ownGiftcard.gfcdNo + '</p>';
+				tmtbHtml2 += '</div>';
+				tmtbHtml2 += '<div class="vch_date">~&nbsp;<span>'	+ ownGiftcard.useExpDate	+ '</span></div>';
+				tmtbHtml2 += '</div>';
+				tmtbHtml2 += '</li>';
 			}
-	)
-});
-
-function ownGiftcard(result) {
-	
-	let giftcardOwnList = result.giftcardOwnList;
-	
-	let tmtbHtml2 = "";
-	
-
-	tmtbHtml2 += '<ul class="clear">';
-
-	for(let i=0; i<giftcardOwnList.length; i++){
-		let ownGiftcard = giftcardOwnList[i];
-
-		if(ownGiftcard.rmGfcdAmt > 0){
-			tmtbHtml2 += '<li>';
-		}else{
-			tmtbHtml2 += '<li class="off">';
-		}	
-		tmtbHtml2 += '<div class="gift_shape">';
-		tmtbHtml2 += '<strong>' + ownGiftcard.gfcdNm + '</strong>';
-		tmtbHtml2 += '<div class="gift_price01">' +ownGiftcard.chgGfcdAmt.addComma() + ' 원권' +'</div>';
-		tmtbHtml2 += '<div class="gift_price02">';
-		tmtbHtml2 += '<span class="pr_t">잔액</span><span class="pr_num">'+ownGiftcard.rmGfcdAmt.addComma()+'</span>원'
-		tmtbHtml2 += '<div>';
-		tmtbHtml2 += '<div class="gift_price03">' +ownGiftcard.gfcdNo + '</div>';
-		tmtbHtml2 += '</div>';
-		tmtbHtml2 += '<div class="gift_date">';
-		tmtbHtml2 += '~ <span>' +ownGiftcard.useExpDate + '</span>';
-		tmtbHtml2 += '</div>';
-		tmtbHtml2 += '</li>';
+			tmtbHtml2 += '</ul>';
+			tmtbHtml2 += '</div>';
+
+		}
+
+		$("#giftcardList").html(tmtbHtml2);
+
 	}
-	
-	tmtbHtml2 += '</ul>';		
-		
-	$("#giftcardList").html(tmtbHtml2);
-
-}
-
-function fnChangeDate(obj) {
-
-	var seletedDate = obj.toString();
-	var splitMonth = seletedDate.substr(4);
-	
-	data = {month : splitMonth,
-			searchDt : seletedDate};
-
- 	var jsonData = JSON.stringify(data);
-	
-	$.ajax(
-			{
-				type 	 : "POST",
-				data	 : jsonData,
-				url 	 : '/mypage/gift/use/list',
-				contentType: 'application/json',
-					dataType : 'json',
-				success  : function(result){
-					useGiftcard(result);
-				}
+
+	function fnChangeDate(obj) {
+
+		var seletedDate = obj.toString();
+		var splitMonth = seletedDate.substr(4);
+
+		data = {
+			month : splitMonth,
+			searchDt : seletedDate
+		};
+
+		var jsonData = JSON.stringify(data);
+
+		$.ajax({
+			type : "POST",
+			data : jsonData,
+			url : '/mypage/gift/use/list',
+			contentType : 'application/json',
+			dataType : 'json',
+			success : function(result) {
+				useGiftcard(result);
 			}
-		)  
-}
-
-// 상품권 등록 버튼 누를 시 
-function giftcardSave() {
-	if($("#gift_input").val() == "" || $("#gift_input").val() == null){
-		mcxDialog.alert("상품권 번호를 입력해주세요.");
-		return;
+		})
 	}
-	
- 	data = {gfcdNo : $("#gift_input").val()};
-
- 	var jsonData = JSON.stringify(data);
- 	
- 	mcxDialog.confirm("상품권을 등록 하시겠습니까?", {
-		cancelBtnText: "취소",
-		sureBtnText: "확인",
-		sureBtnClick: function() {
-			
-			gagajf.ajaxJsonSubmit('/mypage/gift/use/confirm', jsonData, function() {
-				cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
-			});
+
+	// 상품권 등록 버튼 누를 시 
+	function giftcardSave() {
+		if ($("#gift_input").val() == ""
+				|| $("#gift_input").val() == null) {
+			mcxDialog.alert("상품권 번호를 입력해주세요.");
+			return;
 		}
+
+		data = {
+			gfcdNo : $("#gift_input").val()
+		};
+
+		var jsonData = JSON.stringify(data);
+
+		mcxDialog.confirm("상품권을 등록 하시겠습니까?", {
+			cancelBtnText : "취소",
+			sureBtnText : "확인",
+			sureBtnClick : function() {
+
+				gagajf.ajaxJsonSubmit(
+						'/mypage/gift/use/confirm', jsonData,
+						function() {
+							cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
+						});
+			}
+		});
+
+	}
+
+	$(document).ready(function() {
+
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(6);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('상품권', '_PAGE_MYPAGE_GIFTCARD');
+
+		// 전체내역 표시
+		$("#SearchUseGiftcard").trigger('click');
+
+		// 셀렉트박스 활성화
+		$('.select_custom.month').each(function(index) {
+			var selecter01 = new sCombo($(this));
+		});
 	});
-	
-}
-
-$(document).ready(function() {
-
-	// 마이페이지 LNB 설정
-	fnSetMypageLnbList(6);
-	
-	// 마이페이지 location 설정
-	fnSetMypageLocation('상품권', '_PAGE_MYPAGE_GIFTCARD');
-	
-	// 전체내역 표시
-	$("#SearchUseGiftcard").trigger('click');
-
-	// 셀렉트박스 활성화
-	$('.select_custom.type1').each(function(index) {
-		var selecter01 = new sCombo($(this));
-	});
-});
 </script>
 </th:block>
 

+ 59 - 25
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -129,13 +129,13 @@
 						<div class="form_field">
 							<label class="input_label sr-only">선택기간 시작</label>
 							<div class="input_wrap">
-								<input type="text" class="form_control period_datepicker hasDatepicker" name="stDate" value="" id="stDate" onchange="fnCheckPeriod(this);">
+								<input type="text" class="form_control period_datepicker hasDatepicker" value="" id="stDate" onchange="fnCheckPeriod(this);">
 							</div>
 						</div>
 						<div class="form_field">
 							<label class="input_label sr-only">선택기간 끝</label>
 							<div class="input_wrap">
-								<input type="text" class="form_control period_datepicker hasDatepicker" name="edDate" value="" id="edDate" onchange="fnCheckPeriod(this);">
+								<input type="text" class="form_control n_input period_datepicker hasDatepicker" value="" id="edDate" onchange="fnCheckPeriod(this);">
 							</div>
 						</div>
 						<button type="button" class="btn btn_dark btn_sm" onclick="fnSearchOrderList();"><span>조회</span></button>
@@ -263,7 +263,7 @@
 		fnSetMypageLocation('주문확인/배송조회');
 		
 		// datepicker 설정
-		$(".my_datepicker").datepicker();
+		$('.period_datepicker').datepicker();
 
 		// 셀렉트박스 활성화
 		$('.select_custom.order_status').each(function(index) {
@@ -418,6 +418,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="goods_cont">\n';
 				$.each(order.ordDtlList, function (index, ordDtl) {
+					console.log(ordDtl);
 					tag += '		<div class="goods_info">\n';
 					tag += '			<div class="order_desc">\n';
 					tag += '				<div class="goods_box">\n';
@@ -492,6 +493,9 @@
 
 						// 교환신청 버튼(배송중, 출고완료, 배송완료)
 						if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60') {
+							console.log(ordDtl);
+							console.log(ordDtl.changeableYn);
+							console.log(ordDtl.returnableYn);
 							// 교환/반품 가능한 상품
 							if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'Y') {
 								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
@@ -575,27 +579,32 @@
 						}
 						
 						// 배송중, 배송완료
-						if ((ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60') && (ordDtl.changeableYn == 'N' || ordDtl.returnableYn == 'N')) {
-							// 교환신청 불가 상품
-							tag += '			<div class="order_text">\n';
-							if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
-								tag += '				<p>해당 상품은 교환이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
+						if ((ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60')) {
+							// 교환/반품 신청 불가 상품 처리
+							if (ordDtl.changeableYn == 'N' || ordDtl.returnableYn == 'N') {
+								// 교환신청 불가 상품
+								tag += '			<div class="order_text">\n';
+								if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
+									tag += '				<p>해당 상품은 교환이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
+								}
+								// 반품신청 불가 상품
+								else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
+									tag += '				<p>해당 상품은 반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
+								}
+								// 교환/반품신청 불가 상품
+								else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'N') {
+									tag += '				<p>해당 상품은 교환/반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
+								}
+								
+								// 배송완료
+								if (ordDtl.ordDtlStat == 'G013_60') {
+									tag += '				<p>15일 후 자동으로 구매확정됩니다.</p>\n';
+								}
+								
+								tag += '			</div>';
+							} else {
+								tag += '			<div class="order_text"><p>15일 후 자동으로 구매확정됩니다.</p></div>\n';
 							}
-							// 반품신청 불가 상품
-							else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
-								tag += '				<p>해당 상품은 반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
-							}
-							// 교환/반품신청 불가 상품
-							else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'N') {
-								tag += '				<p>해당 상품은 교환/반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>\n';
-							}
-							
-							// 배송완료
-							if (ordDtl.ordDtlStat == 'G013_60') {
-								tag += '				<p>15일 후 자동으로 구매확정됩니다.</p>\n';
-							}
-							
-							tag += '			</div>';
 						}
 
 						// 구매확정
@@ -604,12 +613,37 @@
 						}
 					}
 					tag += '		</div>';
-					tag += '	</div>';
-					tag += '</div>';
 				});
+				tag += '	</div>';
+				//사은품 처리
+				if (order.freeGiftList != null && order.freeGiftList.length > 0) {
+					tag += '	<div className="goods_foot">';
+					tag += '		<div className="order_gift">';
+					tag += '			<span className="title">사은품</span>';
+					tag += '			<ul>';
+					$.each(order.freeGiftList, function(index, freeGift) {
+						tag += '				<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+					});
+					tag += '			</ul>';
+					tag += '		</div>';
+					tag += '	</div>';
+				}
+				tag += '</div>';
 			});
 		} else {
 			// 데이터 없음 표시
+			tag += '<div class="nodata">';
+			tag += '	<div class="txt_box">';
+			tag += '		<p>';
+			tag += '			현재 노출 할 수 있는 데이터가 없습니다.<br>';
+			tag += '		</p>';
+			tag += '	</div>';
+			//tag += '	<!-- 버튼 필요시 -->';
+			//tag += '	<div class="btn_box">';
+			//tag += '		<button class="btn btn_default"><span>행동하기</span></button>';
+			//tag += '	</div>';
+			//tag += '	<!-- //버튼 필요시 -->';
+			tag += '</div>';
 		}
 
 		return tag;

Файловите разлики са ограничени, защото са твърде много
+ 377 - 526
src/main/webapp/ux/pc/css/layout.css


+ 95 - 59
src/main/webapp/ux/pc/js/common-ui.js

@@ -31,20 +31,30 @@
 * * * * * * * * * * * * * * * * * * * * * */
 $(document).ready(function(){
 
+
+	// history back
+	$(".back").on("click", function () {
+		history.back()
+	});
+
 	// header minify
 	$(function(){
 		$(window).scroll(function(){
 			//var scroll = $(this).scrollTop();
-			var headerH =  $('#header').outerHeight();
+			var headerH =  $('#header .hd_top_banner').outerHeight() + $('#header .area').outerHeight();
+			var miniGnbH = $('#header.minify .gnb').outerHeight();
 			if ($(window).scrollTop() > headerH){
 				//header minify
 				$("#header").addClass("minify");
 				$("#header .hd_top_banner,#header .common_header > .area").hide();
+				$("#container").css("padding-top",headerH + miniGnbH);
+				
 			}
 			else {
 				//header minify
 				$("#header").removeClass("minify");
 				$("#header .hd_top_banner,#header .common_header > .area").show();
+				$("#container").css("padding-top","0px");
 			}
 		});
 	});
@@ -57,65 +67,25 @@ $(document).ready(function(){
 			if ($(window).scrollTop() > brheaderH){
 				//header minify
 				$("#br_header").addClass("minify");
-				$("#br_header .hd_top_banner,#br_header .common_header.br_header .util_group").hide();
+				$("#br_header .hd_top_banner,#br_header .common_header.br_header .area").hide();
+				$(".common_header.br_header .gnb .nav #brd_nav .home").show();
 			}
 			else {
 				//header minify
 				$("#br_header").removeClass("minify");
-				$("#br_header .hd_top_banner,#br_header .common_header.br_header .util_group").show();
+				$("#br_header .hd_top_banner,#br_header .common_header.br_header .area").show();
+				$(".common_header.br_header .gnb .nav #brd_nav .home").hide();
 			}
 		});
 	});
 
-	// history back
-	$(".back").on("click", function () {
-		history.back()
-	});
-
-	//통합검색 - 레이어 열고닫기
-	$(document).on('click','.common_header .search .promotion_search, .common_header .search .btn_open_search',function(e){
-		$('body').addClass('lock');
-		$("#header .common_search").addClass('active'); 
-		return false;
-	}).on('click','.common_search .btn_close_search',function(e){
-		$("#header .common_search").removeClass('active'); 
-		$('body').removeClass('lock');
-		return false;
-	});		
-
-	//브랜드 통합검색 - 레이어 열고닫기
-	$(document).on('click','.common_header.br_header .search .promotion_search, .common_header.br_header .search .btn_open_search',function(e){
-		$('body').addClass('lock');
-		$("#br_header .common_search.schBrand").addClass('active'); 
-		return false;
-	}).on('click','.common_search .btn_close_search',function(e){
-		$("#br_header .common_search.schBrand").removeClass('active'); 
-		$('body').removeClass('lock');
-		return false;
-	});
-
-	//통합검색 - 검색어 입력 시 
-	$(document).on('keyup','.common_search .area_input input',function(e){
-		var searchValue = $(this).val();
-		if(searchValue.length > 0) {
-			$('.common_search .area_result .default_box').hide();	
-			$('.common_search .area_result .searching_box').show();	
-		} else if (searchValue.length == 0) {
-			$('.common_search .area_result .searching_box').hide();	
-			$('.common_search .area_result .default_box').show();	
-		}
+	// items like on/off
+	$(function(){ 
+		$(".itemLike").click(function () {
+		  $(this).toggleClass("likeit");
+		});
 	});
 
-	//통합검색 - 슬라이드 컨트롤러 > 지금 고객님들이 많이 보고 있어요 
-	$(document).on('click','.common_search .realtime_slider .btn_pause',function(e){
-		realtimeItemSwiper.autoplay.stop();
-		$(this).hide();
-		$('.common_search .realtime_slider .btn_play').show();
-	}).on('click','.common_search .realtime_slider .btn_play',function(e){
-		realtimeItemSwiper.autoplay.start();
-		$(this).hide();
-		$('.common_search .realtime_slider .btn_pause').show();
-	});
 
 });
 /* * * * * * * * * * * * * * * * * * * * * * * 
@@ -302,7 +272,6 @@ function sCombo(selector){
 };
 
 
-
 // selectBrand on/off
 $( document ).ready( function() {
 	$("#selectBrand .brandbox input").on("click", function() {
@@ -312,7 +281,12 @@ $( document ).ready( function() {
 });
 
 
-
+// dropDownMenu
+$(document).on('click','.tgl_dropdown',function(e){
+	$(this).next('.dropdown_menu').slideToggle(300);
+	$(this).toggleClass('on');
+	return false;
+});
 
 
 /* alert */
@@ -353,6 +327,57 @@ $.datepicker.setDefaults($.datepicker.regional['kr']);
 
 $(document).ready( function() {
 
+	$(function(){
+		if($(".content").hasClass("dp_hotdeal") || $(".content").hasClass("dp_Bulletship")){
+			$('.container').closest('div').addClass('omitt');
+		}
+	});
+
+	//통합검색 - 레이어 열고닫기
+	$(document).on('click','.common_header .search .promotion_search, .common_header .search .btn_open_search',function(e){
+		$('body').addClass('lock');
+		$("#header .common_search").addClass('active'); 
+		return false;
+	}).on('click','.common_search .btn_close_search',function(e){
+		$("#header .common_search").removeClass('active'); 
+		$('body').removeClass('lock');
+		return false;
+	});		
+
+	//브랜드 통합검색 - 레이어 열고닫기
+	$(document).on('click','.common_header.br_header .search .promotion_search, .common_header.br_header .search .btn_open_search',function(e){
+		$('body').addClass('lock');
+		$("#br_header .common_search.schBrand").addClass('active'); 
+		return false;
+	}).on('click','.common_search .btn_close_search',function(e){
+		$("#br_header .common_search.schBrand").removeClass('active'); 
+		$('body').removeClass('lock');
+		return false;
+	});
+
+	//통합검색 - 검색어 입력 시 
+	$(document).on('keyup','.common_search .area_input input',function(e){
+		var searchValue = $(this).val();
+		if(searchValue.length > 0) {
+			$('.common_search .area_result .default_box').hide();	
+			$('.common_search .area_result .searching_box').show();	
+		} else if (searchValue.length == 0) {
+			$('.common_search .area_result .searching_box').hide();	
+			$('.common_search .area_result .default_box').show();	
+		}
+	});
+
+	//통합검색 - 슬라이드 컨트롤러 > 지금 고객님들이 많이 보고 있어요 
+	$(document).on('click','.common_search .realtime_slider .btn_pause',function(e){
+		realtimeItemSwiper.autoplay.stop();
+		$(this).hide();
+		$('.common_search .realtime_slider .btn_play').show();
+	}).on('click','.common_search .realtime_slider .btn_play',function(e){
+		realtimeItemSwiper.autoplay.start();
+		$(this).hide();
+		$('.common_search .realtime_slider .btn_pause').show();
+	});
+
 	/* 고객센터_accordion */
 	$(document).on('click','.cs .foldGroup .fold_head',function(e){
 		$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
@@ -405,13 +430,6 @@ $(document).ready( function() {
 		return false;
 	});
 
-	/* dropDownMenu */
-	$(document).on('click','.tgl_dropdown',function(e){
-		$(this).next('.dropdown_menu').slideToggle(300);
-		$(this).toggleClass('on');
-		return false;
-	});
-
 	/* 전시 팝업 샘플팝업1 : 수정예정 */
 	$(document).on('click','#coupon_pop',function(e){
 		$("#coupon_modal_01").modal("show");
@@ -455,6 +473,24 @@ $(document).ready( function() {
 	$("body").mouseup(function(e){down = false;});
 	/* //드래그 스크롤 : 수정 예정 */
 	
+	//상품 리스트_필터
+	$('.filter_list ul li').click(function(){ 
+		$(".filter_list ul li").removeClass('on');
+		$(".dp_list .sort, .sch_result .sort").removeClass('on');
+		$(this).addClass('on');
+		$("."+$(this).data('id')).addClass('on');
+		$('.sort ul li').removeClass('on');
+		$('.sort ul li div').hide();
+		$('.container .dp_list .fillter, .container .sch_result .fillter').show();
+	});
+
+	// 카테고리
+	$('.tap_close').click(function(){ 
+		$(this).parent().removeClass('on');
+		$('.filter_content .sort ul li div').hide();
+		$('.filter_content .sort ul li, .container .filter_list ul li').removeClass('on');
+		$('.container .dp_list .sort, .container .sch_result .sort').removeClass('on');
+	});
 });
 
 

+ 12 - 25
src/main/webapp/ux/style24_link.js

@@ -35,9 +35,8 @@ const _PAGE_GOODS_QNA_LAYER = _frontUrl + "/goods/qna/layer/";										// 상
 const _PAGE_GOODS_QNA_CREATE_LAYER = _frontUrl + "/goods/qna/create/layer/";						// 상품문의레이어
 const _PAGE_GOODS_DELIVERY_LAYER = _frontUrl + "/goods/delivery/layer/";							// 배송/교환/반품 레이어
 const _PAGE_GOODS_REVIEW_LAYER = _frontUrl + "/goods/review/layer/";								// 상품평 레이어
-const _PAGE_GOODS_REVIEW_BEST_LAYER = _frontUrl + "/goods/review/best/layer/";						// 상품평- 베스트 리뷰 (list)
-const _PAGE_GOODS_REVIEW_PHOTO_LAYER = _frontUrl + "/goods/review/photo/layer/";					// 상품평- 포토/영상 리뷰 (list)
-const _PAGE_GOODS_REVIEW_PHOTO_DETAIL_LAYER = _frontUrl + "/goods/review/photo/detail/layer/";		// 상품평- 포토/영상 리뷰 (detail)
+const _PAGE_GOODS_REVIEW_DETAIL_LAYER = _frontUrl + "/goods/review/detail/layer";					// 상품평- 상세(베스트, 포토)
+const _PAGE_GOODS_REVIEW_PHTO_LIST_LAYER = _frontUrl + "/goods/review/photo/layer/";				// 상품평- 포토/영상 리뷰 (list)
 const _PAGE_GOODS_CPN_DOWNLOAD = "/goods/coupon/download";											// 상품쿠폰다운로드
 
 //== 장바구니 ==/
@@ -230,6 +229,8 @@ function cfnAddCart(cartList) {
 						location.href='/cart/list/form'; 	//내 쇼핑백 이동url
 					}
 				});
+			}else{
+				location.href='/cart/list/form'; 
 			}
 		}
 	});
@@ -511,14 +512,18 @@ function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
 *		cfGoodsBestReviewInfo(goodsCd);
 * </pre>
 */
-function cfGoodsBestReview(goodsCd) {
+function cfGoodsReviewDetail(goodsCd, bestYn, reviewSq) {
 	var str = '<div class="modal fade pd_pop pd_bestreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="pdBestReviewLabel" aria-hidden="true"></div>';
 
 	if ($('#layer_review_best').length == 0) {
 		$('body').append(str);
 	}
-
-	cfOpenLayer(_PAGE_GOODS_REVIEW_BEST_LAYER+goodsCd, 'layer_review_best');
+	
+	var params = new Object();
+	params.goodsCd = goodsCd;
+	params.bestYn = bestYn;
+	params.reviewSq = reviewSq;
+	cfOpenLayer(_PAGE_GOODS_REVIEW_DETAIL_LAYER, 'layer_review_best' ,params );
 }
 
 /**
@@ -536,25 +541,7 @@ function cfGoodsReviewPhoto(goodsCd) {
 		$('body').append(str);
 	}
 
-	cfOpenLayer(_PAGE_GOODS_REVIEW_PHOTO_LAYER+goodsCd, 'layer_review_photo');
-}
-
-/**
-* @type   : function
-* @access : public
-* @desc   : 상품평- 포토/영상 리뷰 상세 보기
-* <pre>
-*		cfGoodsPhotoReviewDetail(goodsCd);
-* </pre>
-*/
-function cfGoodsReviewPhotoDetail(goodsCd) {
-	var str = '<div class="modal fade pd_pop pd_photoreviewdetail_pop" id="layer_review_photo_detail" tabindex="-1" role="dialog" aria-labelledby="pdPhotoReviewDetailLabel" aria-hidden="true"></div>';
-
-	if ($('#layer_review_photo_detail').length == 0) {
-		$('body').append(str);
-	}
-
-	cfOpenLayer(_PAGE_GOODS_REVIEW_PHOTO_DETAIL_LAYER+goodsCd, 'layer_review_photo_detail');
+	cfOpenLayer(_PAGE_GOODS_REVIEW_PHTO_LIST_LAYER+goodsCd, 'layer_review_photo');
 }
 
 /**

Някои файлове не бяха показани, защото твърде много файлове са промени