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

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

gagamel 5 лет назад
Родитель
Сommit
2f2612b18e

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

@@ -528,6 +528,7 @@ public class TsfDisplayController extends TsfBaseController {
 	public ModelAndView categoryGoodsListForm(Cate4Srch cate4Srch) {
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/CategoryGoodsListForm"));
 
+		cate4Srch.setCustNo(TsfSession.getInfo().getCustNo());
 		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
 		cate4Srch.setFormalGb("G009_10");
 		cate4Srch.setFrontGb(TsfSession.getFrontGb());
@@ -578,7 +579,7 @@ public class TsfDisplayController extends TsfBaseController {
 		GagaMap result = new GagaMap();
 		log.info("getGoodsListgetGoodsListgetGoodsList::::{}", goodsSearch);
 		TscPageRequest pageable = new TscPageRequest((goodsSearch.getPageNo() > 0 ? goodsSearch.getPageNo() - 1 : 0), goodsSearch.getPageSize(), goodsSearch.getPageUnit());
-
+		goodsSearch.setCustNo(TsfSession.getInfo().getCustNo());
 		goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
 		goodsSearch.setFormalGb("G009_10");
 		goodsSearch.setFrontGb(TsfSession.getFrontGb());

+ 35 - 1
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -24,6 +24,7 @@ import com.style24.core.support.env.TscConstants;
 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.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
@@ -34,6 +35,7 @@ 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.Contents;
 import com.style24.persistence.domain.Counsel;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
@@ -90,6 +92,9 @@ public class TsfGoodsController extends TsfBaseController {
 
 	@Autowired
 	private TsfWishlistService wishListService;
+	
+	@Autowired
+	private TsfDisplayService displayService;
 
 	@Value("${has-ssl}")
 	private String hasSsl;
@@ -174,7 +179,9 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsVideoList", goodsService.getVideoList(goodsVideo));
 		// 상품 공지
 		mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
-
+		
+		
+				
 		int goodsReviewCnt = 0;
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {	// 딜상품
 
@@ -263,6 +270,19 @@ public class TsfGoodsController extends TsfBaseController {
 				mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
 			}
 
+			// 상품 공통 베너
+			log.info("paramsGoods={}", paramsGoods);
+			Contents contents = new Contents();
+			contents.setContentsLoc("SPM001");
+			contents.setPreview(paramsGoods.getPreview());
+			contents.setViewDt(paramsGoods.getViewDt());
+			contents.setMaxRow(1);
+			if ("P".equals(paramsGoods.getFrontGb())){
+				contents.setCateNo(1714);
+			}else {
+				contents.setCateNo(1724);
+			}
+			mav.addObject("goodsBannerList", displayService.getContentsList(contents));
 		}
 
 		// 상품 문의건수
@@ -1265,6 +1285,20 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
 		// 상품 안전인증 정보
 		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
+		
+		// 상품 공통 베너
+		log.info("paramsGoods={}", paramsGoods);
+		Contents contents = new Contents();
+		contents.setContentsLoc("SPM001");
+		contents.setPreview(paramsGoods.getPreview());
+		contents.setViewDt(paramsGoods.getViewDt());
+		contents.setMaxRow(1);
+		if ("P".equals(paramsGoods.getFrontGb())){
+			contents.setCateNo(1714);
+		}else {
+			contents.setCateNo(1724);
+		}
+		mav.addObject("goodsBannerList", displayService.getContentsList(contents));
 
 		mav.addObject("params", paramsGoods);
 

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

@@ -26,6 +26,7 @@ public class GoodsImg extends TscBaseDomain {
 	private int mouseoverImgOrd;
 	private String sysImgUrl;
 	private int brandNo;
+	private String modelInfo;
 
 	private String goodsImgPath;
 	private String col;

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

@@ -19,6 +19,7 @@ public class GoodsSafeNo extends TscBaseDomain {
 	private String certNum;
 	private String certState;
 	private String certDiv;
+	private String certOrganName;
 	private String certDt;
 
 //	public boolean getIsCertNum() {

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

@@ -1086,9 +1086,9 @@
 		                WHERE  GB.GOODS_CD = G.GOODS_CD
 		          ) Z
 		     ) AS ICON
-		     , FORMAL_GB
-		     , REG_DT
-		     , NUMB
+		     , G.FORMAL_GB
+		     , G.REG_DT
+		     , G.NUMB
 		<choose>
 		    <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		    , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/

+ 15 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -401,7 +401,7 @@
 		FROM TB_GOODS_VIDEO A
 		WHERE A.GOODS_CD = #{goodsCd} 
 		AND A.DISP_YN = 'Y'
-		AND A.KMC_KEY IS NOT NULL
+		AND NULLIF(A.KMC_KEY,'') IS NOT NULL
 		ORDER BY A.VIDEO_SQ DESC
 		<if test="maxRownum != null and maxRownum > 0">
 		LIMIT #{maxRownum}
@@ -425,18 +425,21 @@
 	<!-- 상품 이미지 정보 -->
 	<select id="getGoodsImgList" parameterType="Goods" resultType="GoodsImg">
 		/* TsfGoods.getGoodsImgList */
-		SELECT GOODS_CD
-		     , COLOR_CD
-		     , DISP_ORD
-		     , SYS_IMG_NM
-		     , DEFAULT_IMG_YN
-		     , MOUSEOVER_IMG_YN
-		FROM TB_GOODS_IMG
-		WHERE GOODS_CD = #{goodsCd}
+		SELECT A.GOODS_CD
+		     , A.COLOR_CD
+		     , A.DISP_ORD
+		     , A.SYS_IMG_NM
+		     , A.DEFAULT_IMG_YN
+		     , A.MOUSEOVER_IMG_YN
+		     , B.MODEL_INFO
+		FROM TB_GOODS_IMG A
+		LEFT OUTER JOIN TB_GOODS_MODEL_INFO B ON A.GOODS_CD = B.GOODS_CD
+		                                      AND B.MODEL_INFO IS NOT NULL
+		WHERE A.GOODS_CD = #{goodsCd}
 		<if test='selfGoodsYn != null and selfGoodsYn == "Y"'>
-		AND COLOR_CD = #{colorCd}
+		AND A.COLOR_CD = #{colorCd}
 		</if>
-		ORDER BY DISP_ORD
+		ORDER BY A.DISP_ORD
 	</select>
 	
 	<!-- 딜상품 구성상품정보 조회 -->
@@ -636,6 +639,7 @@
 		     , CERT_NUM
 		     , CERT_STATE
 		     , CERT_DIV
+		     , CERT_ORGAN_NAME
 		     , CERT_DT
 		FROM TB_GOODS_SAFE_NO A
 		WHERE GOODS_CD = #{goodsCd}

+ 128 - 69
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -444,6 +444,9 @@
 				    ON OD.GOODS_CD = G.GOODS_CD
 				 INNER JOIN TB_BRAND B
 				    ON B.BRAND_CD = G.BRAND_CD
+				 LEFT OUTER JOIN TB_REVIEW R
+				    ON R.ORD_NO = OD.ORD_NO
+				   AND R.ORD_DTL_NO = OD.ORD_DTL_NO
 				 LEFT JOIN TB_ITEMKIND I 
 				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
 				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
@@ -459,7 +462,7 @@
 		                                   AND C.USE_YN = 'Y'
 				  WHERE 1=1
 				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
-				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+				AND R.REVIEW_SQ IS NULL
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = #{siteCd}
@@ -593,7 +596,7 @@
 		   	         , I.ITEMKIND_CD 
 			         , I.SIZE_GB 
 			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
-			          <if test="reviewStat == 'u'.toString()">
+			          <!-- <if test="reviewStat == 'u'.toString()"> -->
 			         , R.REVIEW_SQ        
 			         , R.REVIEW_GB        
 				     , R.REVIEW_TITLE     
@@ -624,7 +627,7 @@
 				     , R.ADM_RPL          
 				     , R.ADM_RPL_REG_NO   
 				     , R.ADM_RPL_DT   
-				     </if>
+				    <!--  </if> -->
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
@@ -639,11 +642,11 @@
 				    ON B.BRAND_CD = G.BRAND_CD
 				 LEFT JOIN TB_ITEMKIND I 
 				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-				 <if test="reviewStat == 'u'.toString()">
-				 INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+				 <!-- <if test="reviewStat == 'u'.toString()"> -->
+				 LEFT JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
 			                                      AND R.ORD_NO = O.ORD_NO
 			                                      AND R.ORD_DTL_NO = OD.ORD_DTL_NO
-			      </if>                          
+			      <!-- </if>  -->                         
 				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
 										, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
 									 FROM TB_ORDER_CHANGE_DETAIL OCD
@@ -659,12 +662,12 @@
 				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -#{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
 				<choose>
 					<when test="reviewStat == 'u'.toString()">
-					AND O.ORD_NO IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+					AND R.REVIEW_SQ IS NOT NULL
 					</when>
 					<otherwise>
-					AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+					AND R.REVIEW_SQ IS NULL
 					</otherwise>
-				</choose>
+				</choose> 
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = 'G000_10'
@@ -698,60 +701,62 @@
 		SELECT  COUNT(*) AS CNT 
 		FROM
 		(
-			SELECT O.ORD_NO 
-			      ,O.ORD_NM 
-			      ,O.PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS DT -- 남은시간
-			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 				 AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') --  구매 확정인것만
-			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                  	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
-			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
-			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
-			WHERE 1=1
-				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  -#{reviewExpireDay} DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
-				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
-				AND O.CUST_NO = #{custNo}
-				AND O.DISP_YN = 'Y'
-				AND O.SITE_CD = #{siteCd}
-			GROUP BY O.ORD_NO 
-			      ,O.ORD_NM 
-			      ,O.PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
+		     SELECT O.ORD_NO 
+		           ,O.ORD_NM 
+		           ,O.PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
+		           ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS DT -- 남은시간
+		     FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
+		                                          AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') --  구매 확정인것만
+		                     INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
+		                       					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		                       	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
+		                     INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
+		                     INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+		                     LEFT OUTER JOIN TB_REVIEW R  ON R.ORD_NO = OD.ORD_NO
+		                                          AND R.ORD_DTL_NO = OD.ORD_DTL_NO
+		     WHERE 1=1
+		     	AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  -#{reviewExpireDay} DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
+		     	AND O.CUST_NO = #{custNo}
+		     	AND O.DISP_YN = 'Y'
+		     	AND R.REVIEW_SQ IS NULL
+		     	AND O.SITE_CD = #{siteCd}
+		     GROUP BY O.ORD_NO 
+		           ,O.ORD_NM 
+		           ,O.PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
 		)F
 		ORDER BY F.PAY_DT DESC
 	</select>
@@ -824,12 +829,66 @@
 	
 	<select id="getAlreadyReviewCount" parameterType="Review" resultType="int">
 		/* TsfReivew.getAlreadyReviewCount */
-		SELECT COUNT(*) AS COUNT
-		FROM TB_REVIEW R
-		WHERE 1=1
-		 AND CUST_NO = #{custNo}
-		 AND DEL_YN = 'N'
-		 AND DISP_YN = 'Y'
+		SELECT  COUNT(*) AS CNT 
+		FROM
+		(
+			SELECT O.ORD_NO 
+			      ,O.ORD_NM 
+			      ,O.PAY_DT 
+			      ,O.CUST_NO 
+			      ,OD.ORD_DTL_NO
+			      ,OD.ORD_EXCH_GB 
+			      ,OD.GOODS_CD 
+			      ,OD.REAL_ORD_AMT 
+			      ,OD.SAVE_PNT_AMT 
+			      ,OD.GFCD_USE_AMT 
+			      ,ODI.ORD_DTL_ITEM_SQ 
+			      ,ODI.ITEM_CD 
+			      ,ODI.OPT_CD 
+			      ,ODI.OPT_CD1
+			      ,ODI.OPT_CD2
+			      ,ODI.ITEM_QTY 
+			      ,ODI.ITEM_PRICE
+			      ,G.GOODS_NM 
+			      ,G.MAIN_COLOR_CD
+			      ,B.BRAND_ENM 
+			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 60 DAY),NOW()) AS DT -- 남은시간
+			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
+								 				 AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') --  구매 확정인것만
+			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
+			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+			                  	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
+			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
+			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+			                INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+			                                      AND R.ORD_NO = O.ORD_NO
+			                                      AND R.ORD_DTL_NO = OD.ORD_DTL_NO
+			WHERE 1=1
+				AND O.CUST_NO = #{custNo}
+				AND O.DISP_YN = 'Y'
+				AND R.DEL_YN = 'N'
+				AND R.DISP_YN = 'Y'
+			GROUP BY O.ORD_NO 
+			      ,O.ORD_NM 
+			      ,O.PAY_DT 
+			      ,O.CUST_NO 
+			      ,OD.ORD_DTL_NO
+			      ,OD.ORD_EXCH_GB 
+			      ,OD.GOODS_CD 
+			      ,OD.REAL_ORD_AMT 
+			      ,OD.SAVE_PNT_AMT 
+			      ,OD.GFCD_USE_AMT 
+			      ,ODI.ORD_DTL_ITEM_SQ 
+			      ,ODI.ITEM_CD 
+			      ,ODI.OPT_CD 
+			      ,ODI.OPT_CD1
+			      ,ODI.OPT_CD2
+			      ,ODI.ITEM_QTY 
+			      ,ODI.ITEM_PRICE
+			      ,G.GOODS_NM 
+			      ,G.MAIN_COLOR_CD
+			      ,B.BRAND_ENM 
+		)F
 	</select>
 	
 	<select id="getAlreadyReviewList" parameterType="Review" resultType="Goods">

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

@@ -35,10 +35,36 @@
 			</div>
 		</div>
 		<!-- //상품설명 노출 -->
+		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+		<div class="movblock">
+			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+			<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+			</th:block>
+			<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+			</th:block>
+		</div>
+		</th:block>
+		
+		<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+		<div class="mdhtml_box">
+		<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+		<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<a th:href="${goodsBanner.strVar1}" target="_blank">
+			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+			</a>
+		</th:block>
+		<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+		</th:block>
+		</th:block>
+		
+		</div>
+		</th:block>
 		<!-- 관리자 에디터입력 내용 노출 -->
 			<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 		<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
 			</th:block>
+			
 		<!-- //관리자 에디터입력 내용 노출 -->
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
 		<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
@@ -49,7 +75,9 @@
 											or #strings.contains(goodsImgList,'_M4.')
 											or #strings.contains(goodsImgList,'_M5.')}">
 			<span class="tit_view">OUTFIT VIEW</span>
-			<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+			<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+			</th:block>
 			<div class="view">
 				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1.') 
 																			or #strings.contains(goodsImg.sysImgNm,'_M2.')
@@ -155,7 +183,7 @@
 					<i class="ico ico_kcl"></i>
 				</div>
 				<div>
-					<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+					<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 					</p>
 					<p class="normal">
 						<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >

+ 17 - 3
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -247,6 +247,19 @@
 					</th:block>
 				</div>
 				</th:block>
+				<!-- 공통상품베너 -->
+				<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+				<div class="mdhtml_box">
+				<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+				<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<a th:href="${goodsBanner.strVar1}" target="_blank">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+					</a>
+				</th:block>
+				<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+				</th:block>
+				</th:block>
 				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
 				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
@@ -364,14 +377,15 @@
 							<i class="ico ico_kcl"></i>
 						</div>
 						<div>
-							<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+							<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 							</p>
-							<p class="normal">
+								<p class="normal" >
 								<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
 								해당 없음 
 								</th:block>
 								<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
-								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank"  th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
+								인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+								<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 								</th:block>
 							</p>
 						</div>

+ 5 - 5
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -572,7 +572,7 @@
 	// GNB탭 > 카테고리
 	let fnGetGnbCategory = function(cate1) {
 		let tag = '';
-		let formalGb = 'G009_10';
+
 		if (cate1 != null) {
 			tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
 			tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
@@ -580,23 +580,23 @@
 			tag += '		<div class="head_category">\n';
 			tag += '			<div class="tit">\n';
 			tag += '				<p>' + cate1.cate1Nm + '</p>\n';
-			tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ',\'\',\'\',\'\',\'\',\'' + formalGb + '\');" class="more">전체보기</a>\n';
+			tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ');" class="more">전체보기</a>\n';
 			tag += '			</div>\n';
 			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 				tag += '			<div class="menu">\n';
 				tag += '				<ul class="maintabs">\n';
 				$.each(cate1.cate2List, function(idx2, cate2) {
 					tag += '					<li>\n';
-					tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ',\'\',\'\',\'\',\'' + formalGb + '\');">' + cate2.cate2Nm + '</a>\n';
+					tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
 					if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
 						tag += '						<ul class="box_depth2">\n';
 						$.each(cate2.cate3List, function(idx3, cate3) {
 							tag += '							<li>\n';
-							tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ',\'\',\'\',\'' + formalGb + '\');">' + cate3.cate3Nm + '</a>\n';
+							tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
 							if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
 								tag += '								<ul class="box_depth3">\n';
 								$.each(cate3.cate4List, function(idx4, cate4) {
-									tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ',\'\',\'' + formalGb + '\');">' + cate4.cate4Nm + '</a></li>\n';
+									tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
 								});
 								tag += '								</ul>\n';
 							}

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

@@ -324,6 +324,7 @@
 					postfix: "원",
 					prettify_separator: ",",
 					values: custom_values,
+					min_interval: 1,
 					// onStart : function(data){
 					// 	fnCheckPrice(data);
 					// },
@@ -350,6 +351,7 @@
 				postfix: "%",
 				prettify_separator: ",",
 				values: custom_values02,
+				min_interval: 1,
 				// onStart : function(data){
 				// 	fnCheckDcRate(data);
 				// },
@@ -401,7 +403,7 @@
 			$("#price_input_from").val(custom_values[0]);
 			$("#price_input_to").val(custom_values[5]);
 
-			fnFilterSlider('price' , custom_values[min], custom_values[max]);
+			fnFilterSlider('price' , custom_values[min].addComma(), custom_values[max].addComma());
 		}
 
 		// 필터 할인율 확인

+ 56 - 59
src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html

@@ -81,12 +81,12 @@
 
 			<th:block th:if="${contentsLoc=='002'}">
 				<!-- 신상품 -->
-				<div class="content wide new_item" th:if="${newGoodsList != null}">
+				<div class="content new_item" th:if="${newGoodsList != null}">
 					<div class="cont_head">
-						<h3 class="displayH" th:text="${contentsTitle}">신상품</h3>
+						<h4 th:text="${contentsTitle}">신상품</h4>
 					</div>
 					<div class="cont_body">
-						<div class="swiper-container post-trendy">
+						<div class="swiper-container">
 							<div class="swiper-wrapper">
 								<div class="swiper-slide" th:each="item, status : ${newGoodsList}">
 									<div class="item_prod" th:if="${status.count<21}">
@@ -153,66 +153,63 @@
 /*<![CDATA[*/
 	$(document).ready(function() {
 		fnSetCategory1Depts();
-	});
-	
-	var submain_slide = new Swiper('.dp_sum_slide .swiper-container', {
-		slidesPerView: 4,
-		spaceBetween: 20,
-		freeMode:true,
-		scrollbar: {
-			el: '.dp_sum_slide .swiper-scrollbar',
-			hide: false,
-		},
-		navigation: {
-			nextEl: '.dp_sum_slide .swiper-button-next',
-			prevEl: '.dp_sum_slide .swiper-button-prev'
-		}
-	});
 
-	/* SLIDE - NEW ITEMS */
-	var dp_submain_newitem = new Swiper('.dp .new_item .swiper-container', {
-		watchSlidesProgress: true,
-		watchSlidesVisibility: true,
-		allowTouchMove: false,
-		speed : 1000,
-		autoplay: {
-			delay: 3000,
-			disableOnInteraction:false
-		},
-		navigation: {
-			nextEl: '.dp .new_item .swiper-button-next',
-			prevEl: '.dp .new_item .swiper-button-prev'
-		},
-		pagination: {
-			el: '.dp .new_item .swiper-pagination',
-			clickable: true
-		},
-		slidesPerView: 'auto',
-		spaceBetween: 22
-	});
-	
-	dp_submain_newitem.on('slideChange', function () {
-		var newitemIndex = dp_submain_newitem.activeIndex;
-		var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
-
-		$(".dp .new_item .swiper-slide").removeClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(0).addClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(3).addClass('scaleBig');
-		
-		$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
-	});
+		/* SLIDE - 상단 스크롤 슬라이드 배너 */
+		var submain_slide = new Swiper('.dp_submain .swiper-container', {
+			slidesPerView: 4,
+			spaceBetween: 20,
+			freeMode:true,
+			scrollbar: {
+				el: '.dp_submain .swiper-scrollbar',
+				hide: false,
+			},
+		});
+
+		/* SLIDE - NEW ITEMS */
+		var dp_submain_newitem = new Swiper('.dp .new_item .swiper-container', {
+			watchSlidesProgress: true,
+			watchSlidesVisibility: true,
+			allowTouchMove: false,
+			speed : 1000,
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction:false,
+			},
+			navigation: {
+				nextEl: '.dp .new_item .swiper-button-next',
+				prevEl: '.dp .new_item .swiper-button-prev',
+			},
+			pagination: {
+				el: '.dp .new_item .swiper-pagination',
+				clickable: true,
+			},
+			slidesPerView: 'auto',
+			spaceBetween: 22,
+		});
 
-	dp_submain_newitem.on('reachEnd', function () {
-		var newitemIndex = dp_submain_newitem.activeIndex + 1;
-		var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
-		
-		$(".dp .new_item .swiper-slide").removeClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(1).addClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(4).addClass('scaleBig');
+		dp_submain_newitem.on('slideChange', function () {
+			var newitemIndex = dp_submain_newitem.activeIndex;
+			var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
 
-		$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+			$(".dp .new_item .swiper-slide").removeClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(0).addClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(3).addClass('scaleBig');
+
+			$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+		});
+
+		dp_submain_newitem.on('reachEnd', function () {
+			var newitemIndex = dp_submain_newitem.activeIndex + 1;
+			var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
+
+			$(".dp .new_item .swiper-slide").removeClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(1).addClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(4).addClass('scaleBig');
+
+			$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+		});
 	});
-	
+
 	// 카테고리1Depts 설정
 	var fnSetCategory1Depts = function() {
 		let allCate = [[${allCateList}]];

+ 24 - 8
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -51,6 +51,22 @@
 	</div>
 	</th:block>
 	
+	<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+	<div class="mdhtml_box">
+	<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+	<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+		<a th:href="${goodsBanner.strVar1}" target="_blank">
+		<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+		</a>
+	</th:block>
+	<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+		<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+	</th:block>
+	</th:block>
+	
+	</div>
+	</th:block>
+	
 	<!-- 관리자 에디터입력 내용 노출  상단 html -->
 	<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 	</div>	
@@ -101,7 +117,7 @@
 		<span class="tit_view">FABRIC</span>
 		<div class="view">
 			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1.')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720}" alt="">
 			</th:block>
 		</div>
 	</div>
@@ -114,7 +130,7 @@
 			<span>
 				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1.') 
 																		or #strings.contains(goodsImg.sysImgNm,'_L2.')}">
-				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250}" alt="">
 				</th:block>
 			</span>
 		</div>
@@ -175,16 +191,16 @@
 		</div>
 		<div class="area_kcl" th:if="${goodsSafeNo != null}">
 			<i class="ico ico_kcl"></i>
-			<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+			<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 				어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
 			</p>
 			<p class="normal" >
-				<th:block th:if="${not #strings.isEmpty(goodsSafeNo.isCertNum)}" >
-				 인증번호: :CB123A123-1234
-				<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
+				<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
+				해당 없음 
 				</th:block>
-				<th:block th:unless="${goodsSafeNo.isCertNum}">
-				해당사항 없음
+				<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
+				인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+				<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 				</th:block>
 			</p>
 			<p class="t_info dot_info">

+ 14 - 17
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -195,7 +195,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt1" disabled>
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list" id="goodsDealOptUp1">
 													<!--  옵션 1 -->
 												</ul>
@@ -205,7 +205,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt2" disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" id="goodsDealOptUp2">
 													<!--  옵션 2 -->
 												</ul>
@@ -297,9 +297,9 @@
 					};
 		let jsonData = JSON.stringify(data);
 		
-		$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1');
+		$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1선택');
 		$('.form_field .select_custom.deal_opt2').attr('disabled', true);
-		$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2');
+		$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2선택');
 		
 		gagajf.ajaxJsonSubmit('/goods/detail/option1/list', jsonData, function(result) {
 			
@@ -329,10 +329,10 @@
 						$('.form_field .select_custom.deal_opt1').attr('disabled', false);
 						//------
 						tag1 += '<div class="combo">\n';
-						tag1 += '<div class="select">옵션1</div>\n';
+						tag1 += '<div class="select">옵션1선택</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
-						tag1 += '<li class="selected" id="goodsOpt1">옵션1</li>\n';	
+						//tag1 += '<li class="selected" id="goodsOpt1">옵션1선택</li>\n';	
 					}
 					let soldoutYn = ""; 
 					if (item.stockQty <= 0) soldoutYn = "true";
@@ -345,7 +345,7 @@
 					}
 					tag2 += '<div>'+ item.optCd1Nm+'</div>\n';
 					if (item.addPrice > 0){
-						tag2 += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+						tag2 += '<div>+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag2 += '<input type="hidden" name="opt1" value="'+ goodsCd +'" currPrice="'+ currPrice+'" optCd1="'+item.optCd1+'"  minOrdQty="'+item.minOrdQty+'"  maxOrdQty="'+item.maxOrdQty+'"   selfGoodsYn="'+selfGoodsYn+'" />\n';
 					tag2 += '</li>\n';
@@ -367,18 +367,15 @@
 				if (flag == "layer"){
 					$objUp.prepend(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt1');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
 					$objUp.prepend(tagUpS);
 					var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
-					$('.pd_detail .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_detail .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else{
 					$objDown.prepend(tagDownS);
 					var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}
 				
 			}
@@ -450,7 +447,7 @@
 						tag1 += '<div class="select">옵션2</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
-						tag1 += '<li class="selected" id="goodsOpt2">옵션2</li>\n';	
+						//tag1 += '<li class="selected" id="goodsOpt2">옵션2</li>\n';	
 					}
 					let soldoutYn = ""; 
 					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
@@ -463,7 +460,7 @@
 					}
 					tag2 += '<div>'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){
-						tag2 += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+						tag2 += '<div>+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag2 += '<input type="hidden" name="opt2" value="'+ goodsCd +'" currPrice="'+ currPrice+'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'" optCd1Nm="'+item.optCd1Nm+'"  optCd2="'+item.optCd2+'"  minOrdQty="'+minOrdQty+'"  maxOrdQty="'+maxOrdQty+'" selfGoodsYn="'+selfGoodsYn+'"/>\n';
 					tag2 += '</li>\n';
@@ -658,9 +655,9 @@
 			//$('.pd_descrp_pop .form_field .select_custom.deal_opt_item').find('.combo .select').html(dTag);
 
 			$('.form_field .select_custom.deal_opt1').attr('disabled', true);
-			$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1');
+			$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1선택');
 			$('.form_field .select_custom.deal_opt2').attr('disabled', true);
-			$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2');
+			$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2선택');
 			
 		}, "text");
 	}

+ 42 - 27
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -54,7 +54,7 @@
 									<th:block th:each="goodsImg, status : ${goodsImgList}">
 										<div class="swiper-slide" th:classappend="${status.first and videoYn == 'N'}? 'on' : ''"  th:with="count=${(videoYn == 'Y')?  (status.count +1): status.count }"
 																th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
-																		or #strings.contains(goodsImg.sysImgNm,'_L1.')
+					`													or #strings.contains(goodsImg.sysImgNm,'_L1.')
 																		or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
 											<a th:href="${'#navLocate'+ count}">
 												<span class="thumb">
@@ -261,14 +261,14 @@
 										<div class="select_custom item_opt1"  th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" 
 																			th:if="${goodsCompose.goodsOption1List != null and !goodsCompose.goodsOption1List.empty}" >
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 													<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
 														th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}"
 														>
 														<div th:text="${goodsOption.optCd1Nm}">상품옵션</div>
-														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
+														<div th:if="${goodsOption.addPrice > 0}" th:text="|+${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 													</li>
 													</th:block>
@@ -279,7 +279,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" th:id="|goodsOpt2${goodsCompose.compsGoodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -300,12 +300,12 @@
 									<div class="form_field">
 										<div class="select_custom item_opt1 item_opt1_1" th:classappend="${goodsInfo.goodsCd}" >
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsOption1List}" >
 													<li th:onclick="fnOption2([[${optionStatus.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],1,[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])">
 														<div th:text="${goodsOption.optCd1}">상품옵션</div>
-														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
+														<div th:if="${goodsOption.addPrice > 0}" th:text="|+${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 													</li>
 													</th:block>
@@ -316,7 +316,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" th:id="|goodsOpt2${goodsInfo.goodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -481,6 +481,24 @@
 					</th:block>
 				</div>
 				</th:block>
+				<!-- 공통상품베너 -->
+				<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+				<div class="mdhtml_box">
+				<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+				<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<a th:href="${goodsBanner.strVar1}" target="_blank">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+					</a>
+				</th:block>
+				<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+				</th:block>
+				</th:block>
+				
+				</div>
+				</th:block>
+				
+				
 				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
 				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
@@ -492,7 +510,9 @@
 													or #strings.contains(goodsImgList,'_M4.')
 													or #strings.contains(goodsImgList,'_M5.')}">
 					<span class="tit_view">OUTFIT VIEW</span>
-					<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
+					<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+					<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+					</th:block>
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1.') 
 																					or #strings.contains(goodsImg.sysImgNm,'_M2.')
@@ -545,7 +565,7 @@
 						<span>
 							<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1.') 
 																					or #strings.contains(goodsImg.sysImgNm,'_L2.')}">
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt="">
 							</th:block>
 						</span>
 					</div>
@@ -606,7 +626,7 @@
 					</div>
 					<div class="area_kcl" th:if="${goodsSafeNo != null}">
 						<i class="ico ico_kcl"></i>
-						<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+						<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 							어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
 						</p>
 						<p class="normal" >
@@ -614,7 +634,7 @@
 							해당 없음 
 							</th:block>
 							<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
-							인증번호: : <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+							인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
 							<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 							</th:block>
 						</p>
@@ -1233,7 +1253,7 @@
 					}
 					tag += '<div class="opt_name">'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){
-						tag += '<div class="opt_price">'+ item.addPrice.addComma() +'원</div>\n';	
+						tag += '<div class="opt_price">+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag += '<input type="hidden" name="opt2" value="'+ item.goodsCd+'|'+item.optCd +'|'+qty +'" goodsCd="'+item.goodsCd+'" id="'+item.optCd+'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'"  optCd2="'+item.optCd2+'"  />\n';
 					tag += '</li>\n';
@@ -1250,32 +1270,25 @@
 				$obj.append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
-						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');	
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.list').css('display','block');
+						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
 					}else if (ridx == 2){
 						var opt_selecter02_2 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_2');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').find('.combo .select').trigger('click');
 					}else if (ridx == 3){
 						var opt_selecter02_3 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_3');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').find('.combo .select').trigger('click');
 					}else if (ridx == 4){
 						var opt_selecter02_4 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_4');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').find('.combo .select').trigger('click');
 					}else{
 						var opt_selecter02_5 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_5');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').find('.combo .select').trigger('click');
 					}
 					
 				}else{
 					var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1');
-					//$('.opt_select .select_custom.item_opt2').removeClass('on');
-					$('.opt_select .select_custom.item_opt2.item_opt2_1').addClass('on');
-					$('.opt_select .select_custom.item_opt2.item_opt2_1').find('.list').css('display','block');
+					$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
 					
 				}	
 			}
@@ -1517,8 +1530,10 @@
 					if (minutes < '10') { minutes = '0' + minutes; }
 					if (seconds < '10') { seconds = '0' + seconds; }
 	
+					console.log('days :' + days);
 					if (Number(days) > 0 ){
-						$('#d-days').html(days);	
+						hours = Number(hours) + (Number(days) * 24);
+						$('#d-days').remove();
 					}else{
 						//$('#d-days').css('display','none');
 						$('#d-days').remove();

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

@@ -314,7 +314,7 @@
 								<div class="form_field">
 									<div class="select_custom deal_opt1" disabled>
 										<div class="combo">
-											<div class="select">옵션1</div>
+											<div class="select">옵션1선택</div>
 											<ul class="list" id="goodsDealOptDown1">
 												<!--  옵션 1 -->
 											</ul>
@@ -324,7 +324,7 @@
 								<div class="form_field">
 									<div class="select_custom deal_opt2" disabled>
 										<div class="combo">
-											<div class="select">옵션2</div>
+											<div class="select">옵션2선택</div>
 											<ul class="list" id="goodsDealOptDown2">
 												<!--  옵션 2 -->
 											</ul>

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

@@ -251,7 +251,7 @@
 				html+='					</div>';
 				html+='					<div class="button_box">';
 				if (item.admRpl == null || item.admRpl == '') {
-					html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+','+item.goodsCd+','+item.reviewSq+')"><span>리뷰 수정</span></button></p>';
+					html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+',\''+item.goodsCd+'\','+item.reviewSq+')"><span>리뷰 수정</span></button></p>';
 				}
 				html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></p>';
 				html+='					</div>';

+ 5 - 6
src/main/webapp/biz/goods.js

@@ -172,12 +172,11 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 
 		tag += '<div class="item_prod">';
 		tag += '	<div class="item_state">';
-		tag += '		<button type="button" class="itemLike"';
+		tag += '		<button type="button" class="itemLike';
 		if(item.likeIt == 'likeit'){
-			tag += 'classappend="likeit"';
-		}else{
-			tag += 'classappend=""';
+			tag += ' likeit';
 		}
+		tag += ' "';
 		tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		tag += '<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\');">';
 		tag += '			<div class="itemPic">';
@@ -436,8 +435,8 @@ var fnFilterSlider = function (gubun, min, max){
 
 	var tag2 = '';
 	if(gubun=='price'){
-		tag2 += '<input type="hidden" name="priceRow" value="'+min+'"/>\n';
-		tag2 += '<input type="hidden" name="priceHigh" value="'+max+'"/>\n';
+		tag2 += '<input type="hidden" name="priceRow" value="'+min.replace(",", "")+'"/>\n';
+		tag2 += '<input type="hidden" name="priceHigh" value="'+max.replace(",", "")+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
 		fnCategoryGoodsInfiniteScrollInit();
 	}else{