Ver Fonte

상품상세 연관상품정보

eskim há 5 anos atrás
pai
commit
9804f74b81

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

@@ -212,5 +212,15 @@ public interface TsfGoodsDao {
 	 * @since 2021. 03. 08
 	 */
 	Delivery getGoodsDeliveryInfo(String goodsCd);
+	
+	/**
+	 * 상품 다다익선 목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 3. 8
+	 */
+	Collection<Goods> getTmtbGoodsList(Goods goods);
 
 }

+ 10 - 0
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -420,5 +420,15 @@ public class TsfGoodsService {
 		return goodsDao.getGoodsDeliveryInfo(goodsCd);
 	}
 	
+	/**
+	 * 상품 다다익선 목록
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 3. 8
+	 */
+	public Collection<Goods> getTmtbGoodsList(Goods goods) {
+		return goodsDao.getTmtbGoodsList(goods);
+	}
 	
 }

+ 88 - 0
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -412,4 +412,92 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("goods/GoodsDeliveryForm"));
 		return mav;
 	}
+	
+	/**
+	 * 상품상세 - 다다익선 상품
+	 * 
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/detail/tmtb/frame")
+	public ModelAndView goodsTmtbForm(Goods goods) {  
+
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		setGoods(goods);
+		goods.setMaxRownum(20);
+		mav.addObject("goodsList", goodsService.getTmtbGoodsList(goods));
+		//log.info("goodsTmtbForm = goods{}", goods);
+		mav.addObject("params", goods);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
+		return mav;
+	}
+	
+	/**
+	 * 상품상세 - 함께본 상품
+	 * 
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/detail/together/frame")
+	public ModelAndView goodsTogetherForm(Goods goods) {  
+
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		setGoods(goods);
+		goods.setMaxRownum(15);
+		mav.addObject("goodsList", goodsService.getTmtbGoodsList(goods));
+		//log.info("goodsTogetherForm = goods{}", goods);
+		mav.addObject("params", goods);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
+		return mav;
+	}
+	
+	/**
+	 * 상품상세 - 추천 상품
+	 * 
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/detail/recommend/frame")
+	public ModelAndView goodsRecommendForm(Goods goods) {  
+
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		setGoods(goods);
+		goods.setMaxRownum(15);
+		mav.addObject("goodsList", goodsService.getTmtbGoodsList(goods));
+		//log.info("goodsRecommendForm = goods{}", goods);
+		mav.addObject("params", goods);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
+		return mav;
+	}
+	
+	/**
+	 * 상품상세 - 비슷한 상품
+	 * 
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/detail/like/frame")
+	public ModelAndView goodsLikeForm(Goods goods) {  
+
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		setGoods(goods);
+		goods.setMaxRownum(15);
+		mav.addObject("goodsList", goodsService.getTmtbGoodsList(goods));
+		//log.info("goodsLikeForm = goods{}", goods);
+		mav.addObject("params", goods);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
+		return mav;
+	}
 }

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

@@ -125,6 +125,7 @@ public class Goods extends TscBaseDomain {
 
 	private String mobileYn;
 	private String delvResDt;		// 예약판매 출고예정일
+	private int maxRownum;			// 조회건수
 
 	//상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:상위컨텐츠-모바일,70:하위컨텐츠-모바일,80:상품상세(as-is,입점))
 	private String goodsTitle; 			// 10:상품타이틀
@@ -133,5 +134,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsTopDesc;		// 40:상위컨텐츠, 60:상위컨텐츠-모바일
 	private String goodsDownDesc;		// 50:하위컨텐츠, 70:하위컨텐츠-모바일
 	private String goodsDesc;			// 80:상품상세(as-is,입점)
+	
+	private String goodsOtherGb;		// tmtb:다다익선상품, together:함께본상품  recommmend:추천상품  like: 비슷한상품
 
 }

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

@@ -355,7 +355,7 @@
 		WHERE  A.REL_GOODS_CD = G.GOODS_CD
 		AND    A.CUST_NO = C.CUST_NO
 		AND    A.REL_GOODS_CD = #{relGoodsCd}
-		<if test='secretYn != null and secretYn == "Y" '>
+		<if test='secretYn != null and secretYn == "N" '>
 		AND    A.SECRET_YN = #{secretYn}
 		</if>
 		AND    A.SITE_CD = #{siteCd}

+ 80 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -642,4 +642,84 @@
 		LIMIT 1
 	</select>
 	
+	<!-- 상품 다다익선 목록 -->
+	<select id="getTmtbGoodsList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getTmtbGoodsList */
+		SELECT Z.*
+		     , 100 - ROUND((CURR_PRICE / LIST_PRICE) * 100 ,0) AS DC_RATE
+		FROM (
+		      SELECT B.GOODS_CD 
+		           , G.GOODS_NM
+		           , CONCAT(IF(IFNULL(G.GOODS_GB,'') IN ('G073_11','G073_15', ''), '',IFNULL(CONCAT('[',FN_GET_CODE_NM('G073',G.GOODS_GB),']'),'') )
+		                   ,IF(G.FOREIGN_BUY_YN='Y','[해외구매대행]','' )
+		                   ,IF(G.PARALLEL_IMPORT_YN = 'Y','[병행수입]','')
+		                   ,IF(G.ORDER_MADE_YN='Y','[주문제작]','')
+		                   ,G.GOODS_NM ) AS GOODS_FULL_NM
+		          , G.GOODS_STAT
+		          , G.GOODS_TYPE
+		          , G.MIN_ORD_QTY 
+		          , (CASE WHEN E.DISP_NM_LANG = 'EN' THEN E.BRAND_GROUP_ENM ELSE E.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
+		          , G.LIST_PRICE
+		          , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD, G.CURR_PRICE,#{custGb}) AS CURR_PRICE
+		          , G.MAIN_COLOR_CD
+		          , (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 MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
+		          , S.STOCK_QTY
+		          , S.SOLDOUT_YN
+		          , S.OPT_CD
+		          , V.VIDEO_GB_M
+		          , V.VIDEO_VAL_M
+		          , V.VIDEO_GB_S
+		          , V.VIDEO_VAL_S
+		          , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
+		      FROM TB_TMTB A
+		      INNER JOIN TB_TMTB_APPLY_GOODS B ON a.TMTB_SQ  = B.TMTB_SQ
+		      INNER JOIN TB_GOODS G ON B.GOODS_CD = G.GOODS_CD
+		                            AND G.GOODS_STAT = 'G008_90'
+		                            AND G.SELF_MALL_YN = 'Y'
+		      INNER JOIN TB_BRAND D ON G.BRAND_CD = D.BRAND_CD
+		                    AND D.USE_YN = 'Y'
+		      INNER JOIN TB_BRAND_GROUP E ON D.BRAND_GROUP_NO = E.BRAND_GROUP_NO
+		                            AND E.USE_YN = 'Y'
+		      
+		      LEFT OUTER JOIN (SELECT GOODS_CD
+		                            , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                                       ELSE CURR_STOCK_QTY END) AS STOCK_QTY
+		                            , MIN(SOLDOUT_YN) AS SOLDOUT_YN
+		                            , MIN(CASE WHEN SOLDOUT_YN = 'N' THEN OPT_CD 
+		                                       ELSE 'XXX' END) AS OPT_CD 
+		                       FROM VW_STOCK
+		                       WHERE DISP_YN = 'Y'
+		                       GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
+		      LEFT OUTER JOIN (SELECT MAX(GOODS_CD) AS GOODS_CD 
+		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_GB END) AS  VIDEO_GB_M
+		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_VAL END) AS  VIDEO_VAL_M
+		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_GB END) AS  VIDEO_GB_S
+		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_VAL END) AS  VIDEO_VAL_S
+		                       FROM (
+		                             SELECT A.DISPLOC_VAL AS GOODS_CD
+		                                  , B.VIDEO_GB 
+		                                  , B.VIDEO_VAL 
+		                                  , A.REG_DT 
+		                                  , RANK() OVER(PARTITION BY A.DISPLOC_VAL ORDER BY A.REG_DT ) RNUM 
+		                             FROM TB_VIDEO_DISPLOC  A
+		                             INNER JOIN  TB_VIDEO B ON A.VIDEO_SQ = B.VIDEO_SQ 
+		                                                    AND B.DISP_YN ='Y'
+		                             WHERE A.DISPLOC_GB ='G'
+		                             AND A.DISP_YN = 'Y'
+		                            ) V
+		                       ) V ON G.GOODS_CD = V.GOODS_CD
+		      LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
+		                              AND IFNULL(#{custNo}, 0) = W.CUST_NO
+		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
+		      AND A.TMTB_STAT ='G232_11'
+		      AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM tb_tmtb_apply_goods WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N')
+		      <![CDATA[
+		      AND B.GOODS_CD <> #{goodsCd}
+		       ]]>
+		      ORDER BY A.TMTB_SQ 
+		) Z
+		LIMIT #{maxRownum}
+	</select>
+	
 </mapper>

+ 394 - 609
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -38,7 +38,11 @@
 									<div class="swiper-container">
 										<div class="swiper-wrapper">
 										<th:block th:each="goodsImg, status : ${goodsImgList}">
-											<div class="swiper-slide" th:classappend="${status.first}? 'on' : ''"><a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt=""></span></a></div>
+											<div class="swiper-slide" th:classappend="${status.first}? 'on' : ''" 
+													th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+															or #strings.contains(goodsImg.sysImgNm,'_L1.')
+															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt=""></span></a></div>
 										</th:block>	
 										</div>
 									</div>
@@ -49,7 +53,11 @@
 						<div class="thumb_list_wrap"  th:if="${goodsImgList != null and !goodsImgList.empty}" >
 							<ul>
 								<th:block th:each="goodsImg, status : ${goodsImgList}">
-								<li th:id="${'navLocate'+ status.count}"  th:classappend="${status.first}? 'on' : ''"><a href=""><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt=""></span></a></li>
+								<li th:id="${'navLocate'+ status.count}"  th:classappend="${status.first}? 'on' : ''" 
+									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+												or #strings.contains(goodsImg.sysImgNm,'_L1.')
+												or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt=""></span></a></li>
 								</th:block>
 							</ul>
 						</div>
@@ -376,58 +384,8 @@
 		</div>
 		<!-- 상품 대표설명 -->
 		<!-- 함께하면 할인되는 다다익선 상품 -->
-		<div class="content wide pd_together">
-			<div class="cont_head">
-				<h3 class="subH1 t_c mb40">함께하면 할인되는 다다익선 상품</h3>
-			</div>
-			<div class="cont_body">
-				<!-- CONT-BODY -->
-				<div class="area_slider">
-					<div class="swiper-container">
-						<div class="swiper-wrapper">
-							<div class="swiper-slide">
-								<div class="item_prod">
-									<div class="item_state">
-										<a href="#none" class="itemLink">
-											<div class="itemPic">
-												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												<button type="button" class="itemLike">관심상품 추가</button>
-											</div>
-											<p class="itemBrand">BRAND NAME1</p>
-											<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class="itemPercent">10%</span>
-											</p>
-										</a>
-									</div>
-								</div>
-							</div>
-							<div class="swiper-slide">
-								<div class="item_prod">
-									<div class="item_state">
-										<a href="#none" class="itemLink">
-											<div class="itemPic">
-												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												<button type="button" class="itemLike">관심상품 추가</button>
-											</div>
-											<p class="itemBrand">BRAND NAME1</p>
-											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class="itemPercent">10%</span>
-											</p>
-										</a>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Add Scrollbar -->
-						<div class="swiper-scrollbar"></div> 
-					</div>
-				</div>
-				<!-- // CONT-BODY -->
-			</div>
+		<div class="content wide pd_together" id="goodsTmtbArea">
+			
 		</div>
 		<!-- // 함께하면 할인되는 다다익선 상품 -->
 		<!-- 상품상세정보 -->
@@ -629,61 +587,7 @@
 		</div>
 		<!-- //상품상세정보 -->
 		<!-- 이 상품과 함께 본 상품 -->
-		<div class="content wide pd_clickother">
-			<div class="cont_head">
-				<h3 class="subH1 t_c mb40">이 상품과 함께 본 상품</h3>
-			</div>
-			<div class="cont_body">
-				<!-- CONT-BODY -->
-				<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdClickother1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdClickother1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Add Pagination -->
-						<div class="swiper-pagination"></div>
-						<!-- Add Arrows -->
-						<div class="swiper-button-next"></div>
-						<div class="swiper-button-prev"></div>
-					</div>
-				<!-- // CONT-BODY -->
-			</div>
+		<div class="content wide pd_clickother" id="goodsTogetherbArea">
 		</div>
 		<!-- // 이 상품과 함께 본 상품 -->
 		<!-- STYLE24의 스타일링 추천 -->
@@ -725,7 +629,12 @@
 															<div class="item_prod" th:classappend="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}? 'unable' : ''"
 																					th:attr="goodsCd=${lookbookGoods.goodsCd}, optCd=${lookbookGoods.optCd}, minOrdQty=${lookbookGoods.minOrdQty},  goodsType=${lookbookGoods.goodsType}, ithrCd=${ithrCd}, contentsLoc=${contentsLoc}"> <!-- 판매불가 상품에 unable 추가 -->
 																<div class="item_state">
+																	<th:block th:if="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
+																	<a href="javascript:void(0);" class="itemLink" >
+																	</th:block>
+																	<th:block th:unless="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
 																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
+																	</th:block>
 																		<div class="itemPic">
 																			<img alt="" class="vLHTC pd_img"  th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm}">
 																		</div>
@@ -760,137 +669,11 @@
 		</div>
 		<!-- // STYLE24의 스타일링 추천 -->
 		<!-- 브랜드 추천상품 -->
-			<div class="content wide pd_brand">
-				<div class="cont_head">
-					<h3 class="subH1 t_c mb40"><span>NIKE</span> 추천상품</h3>
-				</div>
-				<div class="cont_body">
-					<!-- CONT-BODY -->
-					<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdRelate1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdRelate1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Add Pagination -->
-						<div class="swiper-pagination"></div>
-						<!-- Add Arrows -->
-						<div class="swiper-button-next"></div>
-						<div class="swiper-button-prev"></div>					
-					</div>
-					<!-- // CONT-BODY -->
-				</div>
-			</div>
+		<div class="content wide pd_brand" id="goodsRecommendbArea">
+		</div>
 			<!-- // 브랜드 추천상품 -->
 		<!-- 이 상품과 비슷한 상품 -->
-		<div class="content wide pd_relate">
-			<div class="cont_head">
-				<h3 class="subH1 t_c mb40">이 상품과 비슷한 상품</h3>
-			</div>
-			<div class="cont_body">
-				<!-- CONT-BODY -->
-				<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdRelate1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdRelate1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdRelate1.jpg">
-													<button type="button" class="itemLike">관심상품 추가</button>
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Add Pagination -->
-						<div class="swiper-pagination"></div>
-						<!-- Add Arrows -->
-						<div class="swiper-button-next"></div>
-						<div class="swiper-button-prev"></div>					
-					</div>
-				<!-- // CONT-BODY -->
-			</div>
+		<div class="content wide pd_relate" id="goodsLikebArea">
 		</div>
 		<!-- // 이 상품과 비슷한 상품 -->
 	</div>
@@ -2242,376 +2025,92 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 
-	$(document).ready( function() {
-		// 상품 대표설명 > 좌측 상품썸네일 navi, 우측 상품정보 고정 
-		$(window).scroll(function(){
-			var scrollTop= $(window).scrollTop();
-			var firstFixed =  $('#header').outerHeight();
-			var thumbListWrap_h = $('.pd_detail .thumb_list_wrap').outerHeight();
-			var descWrap_h = $('.pd_detail .desc_wrap').outerHeight();
-			var secondFixed_left =  firstFixed + $('.pd_detail').outerHeight() - $('.pd_detail .thumb_nav_wrap').outerHeight();
-			var secondFixed_right =  firstFixed + $('.pd_detail .desc_wrap').outerHeight() - $(window).outerHeight();
-			var secondFixed_right2 =  firstFixed + $('.pd_detail').outerHeight() - $(window).outerHeight();
+	// 다다익선 상품
+	var jfGoodsTmtbSearch = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/tmtb/frame", "html", "goodsTmtbArea", params);
+	}
+	
+	// 함께본 상품
+	var jfGoodsTogetherSearch = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/together/frame", "html", "goodsTogetherbArea", params);
+	}
+	
+	// 추천 상품
+	var jfGoodsRecommendSearch = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/recommend/frame", "html", "goodsRecommendbArea", params);
+	}
+	
+	// 비슷한 상품
+	var jfGoodsLikeSearch = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/like/frame", "html", "goodsLikebArea", params);
+	}
 
-			/* 좌측 상품썸네일 navi 고정 */
-			if (scrollTop > firstFixed){  
-				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixbottom').addClass('fixtop');
-			}
-			else if (scrollTop < firstFixed){
-				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop');
-			}
-			if (scrollTop > secondFixed_left){
-				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop').addClass('fixbottom');
-			} 
-			
-			/* 우측 상품정보 고정 */
-			if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right) {
-				$('.pd_detail .area_desc .desc_wrap').removeClass('absbottom').addClass('fixbottom');
-			}
-			else if (thumbListWrap_h > descWrap_h && scrollTop < secondFixed_right) {
-				$('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom');
-			}
-			if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right2) {
-				$('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom').addClass('absbottom');
-			}
-		});
+	
+	//사이즈 클릭시
+	var jfViewStock = function(obj, goodsCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
+		let $obj = $(obj);
 
-		//슬라이드 - 상품 대표설명 > 좌측 상품썸네일 navi
-		var thumbNavSwiper = new Swiper('.area_pic .thumb_nav_wrap .swiper-container', {
-			direction: 'vertical',
-			slidesPerView: 6,
-			slidesPerGroup : 6,
-			spaceBetween: 10,
-			navigation: {
-				nextEl: '.area_pic .thumb_nav_wrap .swiper-button-next',
-				prevEl: '.area_pic .thumb_nav_wrap .swiper-button-prev',
-			},
-		});
+		var $target = $obj.parent().parent().children('input[name="rdi-optsize"]');
+		$target.prop("checked",true);
+		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();
 
-		//상품 대표설명 > 상품썸네일 1개일때
-		var thumblist = $('.area_pic .thumb_list_wrap li');	
-		var thumblistLength = thumblist.length;
-		if (thumblistLength == 1) {
-			thumblist.parents('.area_pic').addClass('onlyitem');
-		} else {
-			thumblist.parents('.area_pic').removeClass('onlyitem');
-		}
+		var maxCnt = maxOrdQty;
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		params.optCd = optCd;
+		params.optCd1 = optCd1;
+		params.optCd2 = optCd2;
+		params.selfGoodsYn = selfGoodsYn;
 
-		//상품 대표설명 > 좌측 상품썸네일 6개 이하일때
-		var thumbnavSlide = $('.area_pic .thumb_nav_wrap .swiper-container .swiper-slide');	
-		var thumbnavLength = thumbnavSlide.length;
-		if (thumbnavLength < 7) {
-			thumbnavSlide.parents('.thumbnav').addClass('disabled');
-		} else {
-			thumbnavSlide.parents('.thumbnav').removeClass('disabled');
-		}
+		$.get("/goods/detail/ajaxGoodsStockQty", $.param(params), function(result) {
+			var itemCnt = eval(result); //해당 아이템에 선택되어진 사이즈의 수량
 
-		//상품 대표설명 > 좌측 상품썸네일 navi 선택시 해당 대표 썸네일 위치로 이동
-		$(document).on('click','.pd_detail .area_pic .thumbnav .swiper-slide a',function(e){
-			e.preventDefault();
-			var hdHeight = $('#header').outerHeight();
-			var targetThumb = $($(this).attr('href'));
-			var topThumb = targetThumb.offset().top - hdHeight;
-			$(this).parents('.thumbnav').find('.swiper-slide').removeClass('on');
-			$(this).parent('.swiper-slide').addClass('on');
-			targetThumb.siblings('li').removeClass('on');
-			targetThumb.addClass('on');
-			$('html,body').animate({scrollTop : topThumb}, 500);
-			return false;
-		});
+			if (maxCnt > itemCnt) {
+				maxCnt = itemCnt;
+			}
 
-		//상품 대표설명 > 우측 상품정보 
-		/* 1차 옵션선택 후 2차 옵션 활성화 */
-		var opt_selecter01 = new sCombo('.opt_select .select_custom.item_opt1');
-		var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2');
-		$('.opt_select .select_custom .combo .list > li').click(function(e) {
-			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
-			return false;
-		});
-		
-		/* 행사 남은시간 */
-		function promotionTimer() {
-			var endTime = new Date('30 March 2021 9:56:00 GMT+0900'); // 남은시간 지정		
-				endTime = (Date.parse(endTime) / 1000);
+			if (minOrdQty > itemCnt) {
+				$target.prop("disabled", true);
+			}else{
+				$("#cartForm  input[name=ordQty]").val(minOrdQty);
+				$("#cartForm  input[name=maxOrdQty]").val(maxCnt);
+				$("#cartForm  input[name=minOrdQty]").val(minOrdQty);
+				$("#cartForm  input[name=cea]").val(minOrdQty);
+				$("#cartForm  input[name=cea]").attr("readonly",false);
+				$("#cartForm  input[name=stock]").val(itemCnt);
 
-				var now = new Date();
-				now = (Date.parse(now) / 1000);
+				jfSetTotalPrice();
+			}
 
-				var timeLeft = endTime - now;
+		}, "text");
+	}
+	
+	// 수량 변경 클릭
+	var jfAdjustOrderEa = function(obj) {
 
-				var days = Math.floor(timeLeft / 86400); 
-				var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
-				var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
-				var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
-
-				if (hours < '10') { hours = '0' + hours; }
-				if (minutes < '10') { minutes = '0' + minutes; }
-				if (seconds < '10') { seconds = '0' + seconds; }
-
-				$('#d-days').html(days);
-				$('#d-hours').html(hours);
-				$('#d-minutes').html(minutes);
-				$('#d-seconds').html(seconds);		
-		}
-		setInterval(function() { promotionTimer(); }, 1000);
-
-		/* 상품옵션변경 팝업 > 수량조절 */
-//		
-		
-		//스타일링 추천 picker	
-		$(document).on('mouseenter','.pd_recommend .area_slider .item_picker button',function(e){
-			$(this).parents('.item_picker').find('.pick_descr').show();
-			return false;
-		}).on('mouseleave','.pd_recommend .area_slider .item_picker button', function(e){
-			$(this).parents('.item_picker').find('.pick_descr').hide();
-			return false;
-		});   
-
-		//상품상세정보 더보기   
-		$(document).on('click','.pd_descrp .btn_more_box button',function(e){
-			$('.pd_descrp .cont_body').toggleClass('on'); 
-			$(this).toggleClass('active');
-			$(this).parent('.btn_more_box').toggleClass('covered');
-			var descrpToggle = $(this).find('span');
-			$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
-			return false;
-		}); 
-
-		//관심상품 등록
-		$(document).on('click','.pd .itemLike',function(e){
-			$(this).toggleClass('active');
-			return false;
-		});	
-
-		//슬라이드 - 함께하면 할인되는 다다익선 상품
-		var togetherItemSwiper = new Swiper('.pd .pd_together .area_slider .swiper-container', {
-			slidesPerView: 6,
-			spaceBetween: 20,
-			scrollbar: {
-				el: '.pd_together .swiper-scrollbar',
-				hide: true,
-			},
-		});  
-
-		//슬라이드 - 브랜드 추천상품
-		var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
-			slidesPerView: 5,
-			spaceBetween: 20,
-			navigation: {
-				nextEl: '.pd_brand .swiper-button-next',
-				prevEl: '.pd_brand .swiper-button-prev',
-			},
-			pagination: {
-				el: '.pd_brand .swiper-pagination',
-				clickable: true,
-			},
-		});  
-
-		
-		//슬라이드 - 이 상품과 함께 본 상품 
-		var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
-			slidesPerView: 5,
-			spaceBetween: 20,
-			navigation: {
-				nextEl: '.pd_clickother .swiper-button-next',
-				prevEl: '.pd_clickother .swiper-button-prev',
-			},
-			pagination: {
-				el: '.pd_clickother .swiper-pagination',
-				clickable: true,
-			},
-		});			
-
-		//슬라이드 - STYLE24의 스타일링 추천
-		var rcmdItemSwiper = new Swiper('.pd .pd_recommend .area_slider .swiper-container', {
-			slidesPerView: 1,
-			spaceBetween: 0,
-			navigation: {
-				nextEl: '.pd_recommend .swiper-button-next',
-				prevEl: '.pd_recommend .swiper-button-prev',
-			},
-			pagination: {
-				el: '.pd_recommend .swiper-pagination',
-				clickable: true,
-			},
-		});			
-
-		//슬라이드 - 이 상품과 비슷한 상품 
-		var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
-			slidesPerView: 5,
-			spaceBetween: 20,
-			navigation: {
-				nextEl: '.pd_relate .swiper-button-next',
-				prevEl: '.pd_relate .swiper-button-prev',
-			},
-			pagination: {
-				el: '.pd_relate .swiper-pagination',
-				clickable: true,
-			},
-		});	  
-
-		//alert -쇼핑백담기
-		/* document.getElementById("btn_add_cart").onclick = function(){
-			mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
-				cancelBtnText: "계속 쇼핑하기",
-				sureBtnText: "쇼핑백 가기",
-				sureBtnClick: function(){
-					location.href=''; 	//내 쇼핑백 이동url
-				}
-			});
-		}; */
-
-		//팝업 - 공통 닫기 sample
-	/* 	$(document).on('click','.modal a.close-modal',function(e){
-			$(".modal").modal("hide");
-			return false;
-		}); */
-		
-		//팝업 - 쿠폰받기
-		$(document).on('click','#btn_saleCoupon_pop',function(e){
-			$("#saleCouponPop").modal("show"); //할인쿠폰받기
-			//$("#epCouponPop").modal("show"); ep채널 쿠폰받기
-			return false;
-		});
-
-		//팝업 - 쇼핑혜택 > 자세히보기
-		$(document).on('click','#btn_bnfShopping_pop',function(e){
-			$("#bnfShoppingPop").modal("show");
-			return false;
-		});
-
-		//팝업 - 사이즈정보
-		$(document).on('click','#btn_infoSize_pop',function(e){
-			$("#infoSizePop").modal("show");
-			return false;
-		});			
-
-		//팝업 - 사이즈정보 > 탭
-		$(document).on('click','.info_size_pop .tab_nav ul li',function(e){
-			$(this).addClass('active').siblings().removeClass('active');
-			$('.info_size_pop .tab_cont_wrap .tab_cont').hide();		
-			$('.info_size_pop .tab_cont_wrap .tab_cont').eq($(this).index()).show();
-			return false;
-		});
-
-		//팝업 - 사이즈정보 > 서브탭
-		$(document).on('click','.info_size_pop .sub_tab_nav ul li',function(e){
-			$(this).addClass('active').siblings().removeClass('active');
-			$(this).parents('.tab_cont').find('.sub_tab_cont').hide();
-			$(this).parents('.tab_cont').find('.sub_tab_cont').eq($(this).index()).show();
-			return false;
-		});
-		
-		//팝업 - 재입고 알림 신청
-		$(document).on('click','#btn_pushRestock_pop',function(e){
-			//선택옵션 호출
-			var opt_selecter03 = new sCombo('.opt_select .select_custom.item_opt3');
-			var opt_selecter04 = new sCombo('.opt_select .select_custom.item_opt4');
-			
-			$("#pushRestockPop").modal("show");
-			return false;
-		});					 
-
-		//팝업 - 상품리뷰
-		$(document).on('click','#btn_pdReview_pop',function(e){
-			$('body').addClass('lock');
-			$("#pdReviewPop .full_pop_container").load("pd_review_pop.html");
-			$("#pdReviewPop").show(); 
-			return false;
-		}).on('click','#btn_close_reviewPop',function(e){
-			$("#pdReviewPop").hide(); 
-			$('body').removeClass('lock');
-			return false;
-		});
-		
-		//팝업 - 상품 베스트 리뷰 (detail)
-		$(document).on('click','#btn_pdBestReview_pop, .area_rv_best .best_review a',function(e){
-			$("#pdBestReviewPop .modal-content").load("pd_bestreviewdetail_pop.html");
-			$("#pdBestReviewPop").modal("show");
-			return false;
-		});	  
-
-		//팝업 - 포토/영상 리뷰 (detail)
-		$(document).on('click','.area_rv_photo .photo_list a, .area_rv_all .review_list .photo_list a, .pd_photoreviewlist_pop .photo_list ul li a',function(e){
-			$("#pdPhotoReviewDetailPop .modal-content").load("pd_photoreviewdetail_pop.html");
-			$("#pdPhotoReviewDetailPop").modal("show");
-			return false;
-		});				  
-		
-		//팝업 - 포토/영상 리뷰 (list)
-		$(document).on('click','#btn_more_photoreview, #btn_pdPhotoReviewList_pop',function(e){
-			$("#pdPhotoReviewListPop .modal-content").load("pd_photoreviewlist_pop.html");
-			$("#pdPhotoReviewListPop").modal("show");
-			return false;
-		});		
-		
-	});
-	
-	//사이즈 클릭시
-	var jfViewStock = function(obj, goodsCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
-		let $obj = $(obj);
-
-		var $target = $obj.parent().parent().children('input[name="rdi-optsize"]');
-		$target.prop("checked",true);
-		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();
-		params.goodsCd = goodsCd;
-		params.optCd = optCd;
-		params.optCd1 = optCd1;
-		params.optCd2 = optCd2;
-		params.selfGoodsYn = selfGoodsYn;
-
-		$.get("/goods/detail/ajaxGoodsStockQty", $.param(params), function(result) {
-			var itemCnt = eval(result); //해당 아이템에 선택되어진 사이즈의 수량
-
-			if (maxCnt > itemCnt) {
-				maxCnt = itemCnt;
-			}
-
-			if (minOrdQty > itemCnt) {
-				$target.prop("disabled", true);
-			}else{
-				$("#cartForm  input[name=ordQty]").val(minOrdQty);
-				$("#cartForm  input[name=maxOrdQty]").val(maxCnt);
-				$("#cartForm  input[name=minOrdQty]").val(minOrdQty);
-				$("#cartForm  input[name=cea]").val(minOrdQty);
-				$("#cartForm  input[name=cea]").attr("readonly",false);
-				$("#cartForm  input[name=stock]").val(itemCnt);
-
-				jfSetTotalPrice();
-			}
-
-		}, "text");
-	}
-	
-	// 수량 변경 클릭
-	var jfAdjustOrderEa = function(obj) {
-
-		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
-			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-				mcxDialog.alert("사이즈를 선택하세요.");
-				return false;
-			}
-		}else{
-			// 세트작업시 작업요망 eskim
-			/* var targetSize=$('.sizelist').length;	//구성품 갯수;
-			var itemSize = $('.option').find('.item').find('input[type=radio]:checked').length;	//사이즈 선택 상품수
-			if (targetSize > itemSize){
-				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
-				return false;
-			} */
-		}
+		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return false;
+			}
+		}else{
+			// 세트작업시 작업요망 eskim
+			/* var targetSize=$('.sizelist').length;	//구성품 갯수;
+			var itemSize = $('.option').find('.item').find('input[type=radio]:checked').length;	//사이즈 선택 상품수
+			if (targetSize > itemSize){
+				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+				return false;
+			} */
+		}
 
 		var $obj = $(obj);
 		var $target = $obj.parent().children('input[name="cea"]');
@@ -2764,21 +2263,20 @@
 		var params = [];
 		
 		$target.each(function(){
-			
-			if ($target.hasClass('unbale')) {
+			if ($(this).hasClass('unable')) {
 				
 			}else{
-				debugger;
+				
 				var obj = new Object();
-				obj.goodsCd = $target.attr("goodsCd");
-				obj.optCd = $target.attr("optCd");
-				obj.goodsQty = $target.attr("minOrdQty");
-				obj.goodsType = $target.attr("goodsType");
+				obj.goodsCd = $(this).attr("goodsCd");
+				obj.optCd = $(this).attr("optCd");
+				obj.goodsQty = $(this).attr("minOrdQty");
+				obj.goodsType = $(this).attr("goodsType");
 				//obj.dealGoodsCd = $("#cartForm  input[name=goodsType]").val();
 				obj.cartGb = btnType;
 				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
-				obj.ithrCd = $target.attr("ithrCd");
-				obj.contentsLoc = $target.attr("contentsLoc");
+				obj.ithrCd = $(this).attr("ithrCd");
+				obj.contentsLoc = $(this).attr("contentsLoc");
 				obj.planDtlSq = '';
 				params.push(obj);
 			}
@@ -2787,9 +2285,296 @@
 		});
 		
 		// 장바구니담기
-		cfnAddCart(params);
+		if (params.length > 0){
+			cfnAddCart(params);	
+		}
 	}
 	
+	$(document).ready( function() {
+		
+		var params = new Object();
+		params.goodsCd = [[${params.goodsCd}]];
+		params.viewDt = [[${params.viewDt}]];
+		params.preview = [[${params.preview}]];
+		params.adminYn = [[${params.adminYn}]];
+		params.goodsType = [[${params.goodsType}]];
+		params.supplyCompCd = [[${params.supplyCompCd}]];
+		params.brandGroupNm = [[${goodsInfo.brandGroupNm}]];
+		
+
+		// 다다익선 상품(ajax html)
+		params.goodsOtherGb = "tmtb";
+		params.ithrCd = "tmtb";
+		params.contentsLoc = "tmtb";
+		jfGoodsTmtbSearch(params);
+		
+		// 함께본 상품(ajax html)
+		params.goodsOtherGb = "together";
+		params.ithrCd = "tmtb";
+		params.contentsLoc = "tmtb";
+		jfGoodsTogetherSearch(params);
+		
+		// 추천 상품(ajax html)
+		params.goodsOtherGb = "recommend";
+		params.ithrCd = "tmtb";
+		params.contentsLoc = "tmtb";
+		jfGoodsRecommendSearch(params);
+		
+		// 비슷한 상품(ajax html)
+		params.goodsOtherGb = "like";
+		params.ithrCd = "tmtb";
+		params.contentsLoc = "tmtb";
+		jfGoodsLikeSearch(params);
+	
+		
+		// 상품 대표설명 > 좌측 상품썸네일 navi, 우측 상품정보 고정 
+		$(window).scroll(function(){
+			var scrollTop= $(window).scrollTop();
+			var firstFixed =  $('#header').outerHeight();
+			var thumbListWrap_h = $('.pd_detail .thumb_list_wrap').outerHeight();
+			var descWrap_h = $('.pd_detail .desc_wrap').outerHeight();
+			var secondFixed_left =  firstFixed + $('.pd_detail').outerHeight() - $('.pd_detail .thumb_nav_wrap').outerHeight();
+			var secondFixed_right =  firstFixed + $('.pd_detail .desc_wrap').outerHeight() - $(window).outerHeight();
+			var secondFixed_right2 =  firstFixed + $('.pd_detail').outerHeight() - $(window).outerHeight();
+
+			/* 좌측 상품썸네일 navi 고정 */
+			if (scrollTop > firstFixed){  
+				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixbottom').addClass('fixtop');
+			}
+			else if (scrollTop < firstFixed){
+				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop');
+			}
+			if (scrollTop > secondFixed_left){
+				$('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop').addClass('fixbottom');
+			} 
+			
+			/* 우측 상품정보 고정 */
+			if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right) {
+				$('.pd_detail .area_desc .desc_wrap').removeClass('absbottom').addClass('fixbottom');
+			}
+			else if (thumbListWrap_h > descWrap_h && scrollTop < secondFixed_right) {
+				$('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom');
+			}
+			if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right2) {
+				$('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom').addClass('absbottom');
+			}
+		});
+
+		//슬라이드 - 상품 대표설명 > 좌측 상품썸네일 navi
+		var thumbNavSwiper = new Swiper('.area_pic .thumb_nav_wrap .swiper-container', {
+			direction: 'vertical',
+			slidesPerView: 6,
+			slidesPerGroup : 6,
+			spaceBetween: 10,
+			navigation: {
+				nextEl: '.area_pic .thumb_nav_wrap .swiper-button-next',
+				prevEl: '.area_pic .thumb_nav_wrap .swiper-button-prev',
+			},
+		});
+
+		//상품 대표설명 > 상품썸네일 1개일때
+		var thumblist = $('.area_pic .thumb_list_wrap li');	
+		var thumblistLength = thumblist.length;
+		if (thumblistLength == 1) {
+			thumblist.parents('.area_pic').addClass('onlyitem');
+		} else {
+			thumblist.parents('.area_pic').removeClass('onlyitem');
+		}
+
+		//상품 대표설명 > 좌측 상품썸네일 6개 이하일때
+		var thumbnavSlide = $('.area_pic .thumb_nav_wrap .swiper-container .swiper-slide');	
+		var thumbnavLength = thumbnavSlide.length;
+		if (thumbnavLength < 7) {
+			thumbnavSlide.parents('.thumbnav').addClass('disabled');
+		} else {
+			thumbnavSlide.parents('.thumbnav').removeClass('disabled');
+		}
+
+		//상품 대표설명 > 좌측 상품썸네일 navi 선택시 해당 대표 썸네일 위치로 이동
+		$(document).on('click','.pd_detail .area_pic .thumbnav .swiper-slide a',function(e){
+			e.preventDefault();
+			var hdHeight = $('#header').outerHeight();
+			var targetThumb = $($(this).attr('href'));
+			var topThumb = targetThumb.offset().top - hdHeight;
+			$(this).parents('.thumbnav').find('.swiper-slide').removeClass('on');
+			$(this).parent('.swiper-slide').addClass('on');
+			targetThumb.siblings('li').removeClass('on');
+			targetThumb.addClass('on');
+			$('html,body').animate({scrollTop : topThumb}, 500);
+			return false;
+		});
+
+		//상품 대표설명 > 우측 상품정보 
+		/* 1차 옵션선택 후 2차 옵션 활성화 */
+		var opt_selecter01 = new sCombo('.opt_select .select_custom.item_opt1');
+		var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2');
+		$('.opt_select .select_custom .combo .list > li').click(function(e) {
+			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
+			return false;
+		});
+		
+		/* 행사 남은시간 */
+		function promotionTimer() {
+			var endTime = new Date('30 March 2021 9:56:00 GMT+0900'); // 남은시간 지정		
+				endTime = (Date.parse(endTime) / 1000);
+
+				var now = new Date();
+				now = (Date.parse(now) / 1000);
+
+				var timeLeft = endTime - now;
+
+				var days = Math.floor(timeLeft / 86400); 
+				var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+				var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+				var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+
+				if (hours < '10') { hours = '0' + hours; }
+				if (minutes < '10') { minutes = '0' + minutes; }
+				if (seconds < '10') { seconds = '0' + seconds; }
+
+				$('#d-days').html(days);
+				$('#d-hours').html(hours);
+				$('#d-minutes').html(minutes);
+				$('#d-seconds').html(seconds);		
+		}
+		setInterval(function() { promotionTimer(); }, 1000);
+
+		/* 상품옵션변경 팝업 > 수량조절 */
+//		
+		
+		//스타일링 추천 picker	
+		$(document).on('mouseenter','.pd_recommend .area_slider .item_picker button',function(e){
+			$(this).parents('.item_picker').find('.pick_descr').show();
+			return false;
+		}).on('mouseleave','.pd_recommend .area_slider .item_picker button', function(e){
+			$(this).parents('.item_picker').find('.pick_descr').hide();
+			return false;
+		});   
+
+		//상품상세정보 더보기   
+		$(document).on('click','.pd_descrp .btn_more_box button',function(e){
+			$('.pd_descrp .cont_body').toggleClass('on'); 
+			$(this).toggleClass('active');
+			$(this).parent('.btn_more_box').toggleClass('covered');
+			var descrpToggle = $(this).find('span');
+			$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
+			return false;
+		}); 
+
+		//슬라이드 - STYLE24의 스타일링 추천
+		var rcmdItemSwiper = new Swiper('.pd .pd_recommend .area_slider .swiper-container', {
+			slidesPerView: 1,
+			spaceBetween: 0,
+			navigation: {
+				nextEl: '.pd_recommend .swiper-button-next',
+				prevEl: '.pd_recommend .swiper-button-prev',
+			},
+			pagination: {
+				el: '.pd_recommend .swiper-pagination',
+				clickable: true,
+			},
+		});			
+		
+
+		//alert -쇼핑백담기
+		/* document.getElementById("btn_add_cart").onclick = function(){
+			mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
+				cancelBtnText: "계속 쇼핑하기",
+				sureBtnText: "쇼핑백 가기",
+				sureBtnClick: function(){
+					location.href=''; 	//내 쇼핑백 이동url
+				}
+			});
+		}; */
+
+		//팝업 - 공통 닫기 sample
+	/* 	$(document).on('click','.modal a.close-modal',function(e){
+			$(".modal").modal("hide");
+			return false;
+		}); */
+		
+		//팝업 - 쿠폰받기
+		$(document).on('click','#btn_saleCoupon_pop',function(e){
+			$("#saleCouponPop").modal("show"); //할인쿠폰받기
+			//$("#epCouponPop").modal("show"); ep채널 쿠폰받기
+			return false;
+		});
+
+		//팝업 - 쇼핑혜택 > 자세히보기
+		$(document).on('click','#btn_bnfShopping_pop',function(e){
+			$("#bnfShoppingPop").modal("show");
+			return false;
+		});
+
+		//팝업 - 사이즈정보
+		$(document).on('click','#btn_infoSize_pop',function(e){
+			$("#infoSizePop").modal("show");
+			return false;
+		});			
+
+		//팝업 - 사이즈정보 > 탭
+		$(document).on('click','.info_size_pop .tab_nav ul li',function(e){
+			$(this).addClass('active').siblings().removeClass('active');
+			$('.info_size_pop .tab_cont_wrap .tab_cont').hide();		
+			$('.info_size_pop .tab_cont_wrap .tab_cont').eq($(this).index()).show();
+			return false;
+		});
+
+		//팝업 - 사이즈정보 > 서브탭
+		$(document).on('click','.info_size_pop .sub_tab_nav ul li',function(e){
+			$(this).addClass('active').siblings().removeClass('active');
+			$(this).parents('.tab_cont').find('.sub_tab_cont').hide();
+			$(this).parents('.tab_cont').find('.sub_tab_cont').eq($(this).index()).show();
+			return false;
+		});
+		
+		//팝업 - 재입고 알림 신청
+		$(document).on('click','#btn_pushRestock_pop',function(e){
+			//선택옵션 호출
+			var opt_selecter03 = new sCombo('.opt_select .select_custom.item_opt3');
+			var opt_selecter04 = new sCombo('.opt_select .select_custom.item_opt4');
+			
+			$("#pushRestockPop").modal("show");
+			return false;
+		});					 
+
+		//팝업 - 상품리뷰
+		$(document).on('click','#btn_pdReview_pop',function(e){
+			$('body').addClass('lock');
+			$("#pdReviewPop .full_pop_container").load("pd_review_pop.html");
+			$("#pdReviewPop").show(); 
+			return false;
+		}).on('click','#btn_close_reviewPop',function(e){
+			$("#pdReviewPop").hide(); 
+			$('body').removeClass('lock');
+			return false;
+		});
+		
+		//팝업 - 상품 베스트 리뷰 (detail)
+		$(document).on('click','#btn_pdBestReview_pop, .area_rv_best .best_review a',function(e){
+			$("#pdBestReviewPop .modal-content").load("pd_bestreviewdetail_pop.html");
+			$("#pdBestReviewPop").modal("show");
+			return false;
+		});	  
+
+		//팝업 - 포토/영상 리뷰 (detail)
+		$(document).on('click','.area_rv_photo .photo_list a, .area_rv_all .review_list .photo_list a, .pd_photoreviewlist_pop .photo_list ul li a',function(e){
+			$("#pdPhotoReviewDetailPop .modal-content").load("pd_photoreviewdetail_pop.html");
+			$("#pdPhotoReviewDetailPop").modal("show");
+			return false;
+		});				  
+		
+		//팝업 - 포토/영상 리뷰 (list)
+		$(document).on('click','#btn_more_photoreview, #btn_pdPhotoReviewList_pop',function(e){
+			$("#pdPhotoReviewListPop .modal-content").load("pd_photoreviewlist_pop.html");
+			$("#pdPhotoReviewListPop").modal("show");
+			return false;
+		});		
+		
+	});
+	
+	
+	
 /*]]>*/
 </script>
 </th:block>

+ 126 - 0
src/main/webapp/WEB-INF/views/web/goods/GoodsOtherFormWeb.html

@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsOtherFormWeb.html
+ * @desc    : 상품 안내
+ *============================================================================
+ * Wivismall
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.09   eskim        최초 작성
+ *******************************************************************************
+ -->
+ <th:block th:if="${goodsList != null and !goodsList.empty}">
+<div class="cont_head">
+	<h3 class="subH1 t_c mb40">
+		<th:block th:if="${params.goodsOtherGb =='tmtb'}" th:text="${'함께하면 할인되는 다다익선 상품'}"></th:block>
+		<th:block th:if="${params.goodsOtherGb =='together'}" th:text="${'이 상품과 함께 본 상품'}"></th:block>
+		<th:block th:if="${params.goodsOtherGb =='recommend'}" th:text="${params.brandGroupNm +' 추천상품'}"></th:block>
+		<th:block th:if="${params.goodsOtherGb =='like'}" th:text="${'이 상품과 비슷한 상품'}"></th:block>
+	</h3>
+</div>
+<div class="cont_body" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+	<!-- CONT-BODY -->
+	<div class="area_slider">
+		<div class="swiper-container">
+			<div class="swiper-wrapper">
+				<div class="swiper-slide" th:each="goodsInfo, status : ${goodsList}">
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="javascript:void(0);" class="itemLink" >
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+									<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=''">관심상품 추가</button>
+								</div>
+								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+								<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+								<p class="itemPrice">
+										<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+										<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+										<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+									</p>
+							</a>
+						</div>
+					</div>
+				</div>
+			</div>
+			<th:block th:if="${params.goodsOtherGb == 'tmtb'}">
+			<!-- Add Scrollbar -->
+			<div class="swiper-scrollbar"></div>
+			</th:block> 
+		</div>
+		<th:block th:if="${params.goodsOtherGb != 'tmtb'}">
+		<!-- Add Pagination 1111111-->
+		<div class="swiper-pagination"></div>
+		<!-- Add Arrows -->
+		<div class="swiper-button-next"></div>
+		<div class="swiper-button-prev"></div>
+		</th:block>
+	</div>
+	<!-- // CONT-BODY -->
+</div>
+</th:block>
+
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+//슬라이드 - 함께하면 할인되는 다다익선 상품
+	var togetherItemSwiper = new Swiper('.pd .pd_together .area_slider .swiper-container', {
+		slidesPerView: 6,
+		spaceBetween: 20,
+		scrollbar: {
+			el: '.pd_together .swiper-scrollbar',
+			hide: true,
+		},
+	});  	
+	
+	//슬라이드 - 브랜드 추천상품
+	var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
+		slidesPerView: 5,
+		spaceBetween: 20,
+		navigation: {
+			nextEl: '.pd_brand .swiper-button-next',
+			prevEl: '.pd_brand .swiper-button-prev',
+		},
+		pagination: {
+			el: '.pd_brand .swiper-pagination',
+			clickable: true,
+		},
+	});  
+
+	
+	//슬라이드 - 이 상품과 함께 본 상품 
+	var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
+		slidesPerView: 5,
+		spaceBetween: 20,
+		navigation: {
+			nextEl: '.pd_clickother .swiper-button-next',
+			prevEl: '.pd_clickother .swiper-button-prev',
+		},
+		pagination: {
+			el: '.pd_clickother .swiper-pagination',
+			clickable: true,
+		},
+	});	
+	
+	//슬라이드 - 이 상품과 비슷한 상품 
+	var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
+		slidesPerView: 5,
+		spaceBetween: 20,
+		navigation: {
+			nextEl: '.pd_relate .swiper-button-next',
+			prevEl: '.pd_relate .swiper-button-prev',
+		},
+		pagination: {
+			el: '.pd_relate .swiper-pagination',
+			clickable: true,
+		},
+	});	  
+/*]]>*/
+</script>	
+</html>

+ 8 - 2
src/main/webapp/WEB-INF/views/web/goods/GoodsQnaFormWeb.html

@@ -58,7 +58,8 @@
 			<div class="qna_list">
 				<!-- 나열조건결과 있을 때 노출 내용 -->
 				<div class="form_field">
-					<input id="except_secret" type="checkbox" value="Y" name="secretYn" onclick=""><label for="except_secret"><span>비밀글제외</span></label>
+					<input id="except_secret" name="except_secret" type="checkbox"  onclick="fnGetList();"><label for="except_secret"><span>비밀글제외</span></label>
+					<input  type="hidden" name="secretYn" >
 				</div>
 				<div class="ui_row">
 					<div class="foldGroup case1">
@@ -91,7 +92,12 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
-	let fnGetList = function() {
+	var fnGetList = function() {
+
+		$('#goodsQnaForm  input[name="secretYn"]').val('');
+		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
+			$('#goodsQnaForm  input[name="secretYn"]').val('N');
+		}
 		// Initialize a pagination
 		gagaPaging.init('goodsQnaForm', fnGetListCallback, 'pageNav', 20);
 

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

@@ -524,8 +524,6 @@ function cfCheckLogin() {
  * <pre>
  *	 cfnPutWishList(OBJ);
  * </pre>
- * @param  : goodsCd - 상품코드. 필수
- * @param  : planSq - 기획전번호. 옵션
  */
 function cfnPutWishList(a) {
 
@@ -588,13 +586,13 @@ function cfnPutWishList(a) {
 			}
 
 			// 메시지 처리
-			if (!gagajf.isNull(Msg)) {
-				if (_frontGb == "M") {
+			//if (!gagajf.isNull(Msg)) {
+			//	if (_frontGb == "M") {
 			//		mcxDialog.toast(Msg);
-				} else {
+			//	} else {
 			//		mcxDialog.alertC(Msg);
-				}
-			}
+			//	}
+			//}
 		});
 	} else {
 		gagajf.ajaxJsonSubmit(_PAGE_WISHLIST_DEL, jsonData, function (result) {
@@ -607,13 +605,14 @@ function cfnPutWishList(a) {
 			}
 
 			// 메시지 처리
-			if (!gagajf.isNull(Msg)) {
-				if (_frontGb == "M") {
+			//if (!gagajf.isNull(Msg)) {
+			//	if (_frontGb == "M") {
 			//		mcxDialog.toast(Msg);
-				} else {
+			//	} else {
 			//		mcxDialog.alertC(Msg);
-				}
-			}
+			//	}
+			//}
 		});
 	}
+	return false;
 }