eskim 5 vuotta sitten
vanhempi
commit
d84b30048b

+ 23 - 4
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -10,8 +10,10 @@ import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
+import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsViewHst;
+import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.VideoDisploc;
 
 /**
@@ -110,7 +112,6 @@ public interface TsfGoodsDao {
 	 */
 	Collection<GoodsStock> getGoodsOption1List(Goods goods);
 
-
 	/**
 	 * 상품 옵션2 목록
 	 *
@@ -170,8 +171,6 @@ public interface TsfGoodsDao {
 	 * @date 2021. 2. 17
 	 */
 	Goods getGoodsResSell(Goods goods);
-	
-	
 
 	/**
 	 * 상품 사이즈 선택 시 재고수량 가져오기
@@ -182,5 +181,25 @@ public interface TsfGoodsDao {
 	 * @since 2021. 3. 3
 	 */
 	int getGoodsStockQty(GoodsStock goodsStock);
-	
+
+	/**
+	 * 상품  공지 목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 3. 7
+	 */
+	Collection<Notice> getGoodsNoticeList(Goods goods);
+
+	/**
+	 * 상품  안전인증 정보
+	 *
+	 * @param goodsStock
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 7
+	 */
+	GoodsSafeNo getGoodsSafeNo(Goods goods);
+
 }

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

@@ -17,8 +17,10 @@ import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
+import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsViewHst;
+import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.VideoDisploc;
 
 import lombok.extern.slf4j.Slf4j;
@@ -59,7 +61,7 @@ public class TsfGoodsService {
 			byte[] referBytes = referer.getBytes();
 			if (referBytes.length > 1000) {
 				goodsViewHst.setReferer(new String(referBytes, 0, 1000));
-			}else {
+			} else {
 				goodsViewHst.setReferer(referer);
 			}
 		}
@@ -86,7 +88,7 @@ public class TsfGoodsService {
 	 * 상품 정보 조회
 	 * @param goods
 	 * @return
-	 * @author xodud1202
+	 * @author eskim
 	 * @since 2021. 01. 28
 	 */
 	public Goods getGoodsInfo(Goods goods) {
@@ -171,7 +173,6 @@ public class TsfGoodsService {
 		return goodsDesc.toString();
 	}
 
-
 	/**
 	 * 상품 이미지 정보
 	 *
@@ -236,11 +237,11 @@ public class TsfGoodsService {
 		goodsInfo.setGoodsCd(param.getGoodsCd());
 		goodsInfo = getGoodsInfo(goodsInfo);
 
-		if(TscConstants.GoodsStat.SOLDOUT.value().equals(goodsInfo.getGoodsStat())) {
+		if (TscConstants.GoodsStat.SOLDOUT.value().equals(goodsInfo.getGoodsStat())) {
 			return param.getGoodsCd() + "는 품절 상품입니다.";
 		}
 
-		if(param.getGoodsType().equals(TscConstants.GoodsType.SET.value())) {		// 세트상품이면 구성 상품코드로 조회
+		if (param.getGoodsType().equals(TscConstants.GoodsType.SET.value())) {		// 세트상품이면 구성 상품코드로 조회
 			GoodsStock stockCheck = new GoodsStock();								// 재고 조회 결과
 			stockCheck.setGoodsCd(param.getItemCd());
 			stockCheck.setOptCd(param.getOptCd());
@@ -255,7 +256,7 @@ public class TsfGoodsService {
 			compsInfo = goodsDao.getGoodsCompsInfo(compsInfo);						// 구성상품 정보 조회
 
 			// 재고 체크
-			if(param.getGoodsQty() * compsInfo.getQty() > stockCheck.getCurrStockQty()) {
+			if (param.getGoodsQty() * compsInfo.getQty() > stockCheck.getCurrStockQty()) {
 				return param.getItemCd() + "의 재고가 충분하지 않습니다.";
 			}
 		} else {
@@ -265,7 +266,7 @@ public class TsfGoodsService {
 
 			stockCheck = goodsDao.getGoodsStockInfo(stockCheck);					// 구성 상품 재고 조회
 
-			if(param.getGoodsQty() > stockCheck.getCurrStockQty()) {
+			if (param.getGoodsQty() > stockCheck.getCurrStockQty()) {
 				return param.getGoodsCd() + "의 재고가 충분하지 않습니다.";
 			}
 		}
@@ -363,8 +364,6 @@ public class TsfGoodsService {
 		return resultGoods;
 	}
 
-	
-
 	/**
 	 * 상품 사이즈 선택 시 재고수량 가져오기
 	 *
@@ -379,12 +378,33 @@ public class TsfGoodsService {
 		//int goodsResSellCount = goodsDao.getGoodsResSellCount(stock.getGoodsCd());
 
 		//if ("N".equals(stock.getSelfGoodsYn()) || goodsResSellCount > 0) {
-			result = goodsDao.getGoodsStockQty(goodsStock);
+		result = goodsDao.getGoodsStockQty(goodsStock);
 		//} else {
 		//	result = goodsDao.getGoodsStoreStockQty(stock);
 		//}
 
 		return result;
+	}
 
+	/**
+	 * 상품  공지 목록
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 03. 07
+	 */
+	public Collection<Notice> getGoodsNoticeList(Goods goods) {
+		return goodsDao.getGoodsNoticeList(goods);
+	}
+
+	/**
+	 * 상품  안전인증 정보
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 03. 07
+	 */
+	public GoodsSafeNo getGoodsSafeNo(Goods goods) {
+		return goodsDao.getGoodsSafeNo(goods);
 	}
 }

+ 27 - 28
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -52,17 +52,16 @@ public class TsfGoodsController extends TsfBaseController {
 
 	@Autowired
 	private TscEnvsetService envsetService;
-	
+
 	@Autowired
 	private TsfCounselService counselService;
-	
+
 	@Autowired
 	private TscLookbookService coreLookbookService;
-	
+
 	@Value("${has-ssl}")
 	private String hasSsl;
 
-
 	/**
 	 * 상품상세
 	 *
@@ -87,8 +86,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
 		setGoods(paramsGoods);
-		
-		
+
 		String mobileYn = paramsGoods.getMobileYn();
 		if ("Y".equals(mobileYn)) {
 			paramsGoods.setFrontGb("M");
@@ -96,7 +94,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		Goods goods = goodsService.getGoodsInfo(paramsGoods);
 		// 조회색상이 없으면 메인컬러 설정
-		if(StringUtils.isEmpty(paramsGoods.getColorCd())) {
+		if (StringUtils.isEmpty(paramsGoods.getColorCd())) {
 			paramsGoods.setColorCd(goods.getMainColorCd());
 		}
 
@@ -111,6 +109,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		// 상품 상세
 		goods = goodsService.getGoodsDesc(goods);
+
 		// 핫딜정보
 		Goods socialGoods = goodsService.getSocialGoods(paramsGoods);
 		if (socialGoods != null && !StringUtils.isBlank(socialGoods.getGoodsCd())) {
@@ -131,6 +130,8 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsImgList", goodsService.getGoodsImgList(paramsGoods));
 		// 상품 동영상정보
 		mav.addObject("goodsVideoList", goodsService.getVideoList(paramsGoods.getGoodsCd()));
+		// 상품 공지
+		mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
 
 		if ("G056_D".equals(goods.getGoodsType())) {	// 딜상품
 			// 딜 구성상품 정보
@@ -138,25 +139,33 @@ public class TsfGoodsController extends TsfBaseController {
 			mav.addObject("goodsExtendList", goodsService.getGoodsDealComposeList(paramsGoods));
 		} else {
 			if ("G056_N".equals(goods.getGoodsType())) {	// 일반상품
-				if ("Y".equals(goods.getSelfGoodsYn()) ) {  // 자사상품
+				if ("Y".equals(goods.getSelfGoodsYn())) {  // 자사상품
 					// 상품 옵션1(색상) 정보
 					mav.addObject("goodsOption1List", goodsService.getGoodsOption1List(paramsGoods));
 					// 상품 옵션2(사이즈) 정보
 					mav.addObject("goodsOption2List", goodsService.getGoodsOption2List(paramsGoods));
-				}else {
+				} else {
 					//mav.addObject("goodsOptionList", goodsService.getGoodsOptionList(paramsGoods));
 				}
 
 //				// 상품 고시정보
 				mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
 
+				// 상품 안전인증 정보
+				mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
+
+				// 룩북
+				Lookbook lookbook = new Lookbook();
+				lookbook.setGoodsCd(paramsGoods.getGoodsCd());
+				mav.addObject("lookbookList", coreLookbookService.getLookbookListForGoods(lookbook));
+
 			} else if ("G056_S".equals(goods.getGoodsType())) {		// 셋트상품
 //				mav.addObject("goodsExtendList", goodsService.getGoodsSetExtendList(paramsGoods));
 			}
 			// 상품쿠폰
 //			mav.addObject("goodsCouponList", goodsService.getGoodsCouponList(paramsGoods));
 		}
-		
+
 		// 상품 문의건수
 		Counsel counsel = new Counsel();
 		counsel.setRelGoodsCd(goods.getGoodsCd());
@@ -183,10 +192,6 @@ public class TsfGoodsController extends TsfBaseController {
 
 		// 사은품
 
-		// 룩북
-		Lookbook lookbook = new Lookbook();
-		lookbook.setGoodsCd(paramsGoods.getGoodsCd());
-		mav.addObject("lookbookList", coreLookbookService.getLookbookListForGoods(lookbook));
 		// 오늘본 상품 쿠키 담기
 		// SSL Server
 		boolean isSslServer = Boolean.parseBoolean(hasSsl);
@@ -195,7 +200,6 @@ public class TsfGoodsController extends TsfBaseController {
 		//기존쿠키 가져오기
 		setTodayGoodsCd(paramsGoods);
 
-		
 		mav.addObject("params", paramsGoods);
 
 		if ("D".equals(goods.getGoodsType())) {
@@ -288,7 +292,7 @@ public class TsfGoodsController extends TsfBaseController {
 		GagaCookieUtil.setCookie(TsfSession.getHttpServletResponse(), TsfConstants.CK_PREFIX + "_today_goodsCd", setCkGoodsCd, 24 * 60 * 60);
 		//		}
 	}
-	
+
 	/**
 	 * 상품상세 -  카드혜택안내 레이어
 	 * @return
@@ -303,7 +307,7 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("goods/CardPrmtForm"));
 		return mav;
 	}
-	
+
 	/**
 	 * 상품 사이즈 선택 시 재고수량 가져오기
 	 * 
@@ -318,9 +322,7 @@ public class TsfGoodsController extends TsfBaseController {
 		stockQty = goodsService.getGoodsStockQty(goodsStock);
 		return stockQty;
 	}
-	
-	
-	
+
 	/**
 	 * 상품상세 -  상품 QNA LIST 레이어
 	 * @return
@@ -341,8 +343,7 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("goods/GoodsQnaForm"));
 		return mav;
 	}
-	
-	
+
 	/**
 	 * 상품문의 목록
 	 * @param counsel - 상담정보
@@ -363,16 +364,16 @@ public class TsfGoodsController extends TsfBaseController {
 		pageable.setTotalCount(counselService.getGoodsQnaTotalCount(counsel));
 		counsel.setPageable(pageable);
 
-		if(TsfSession.isLogin()) {
+		if (TsfSession.isLogin()) {
 			counsel.setCustNo(TsfSession.getInfo().getCustNo());
 		}
-		
+
 		result.set("paging", counsel);
 		result.set("dataList", counselService.getGoodsQnaListForGoods(counsel));
 
 		return result;
 	}
-	
+
 	/**
 	 * 상품상세 -  상품 QNA 등록
 	 * @return
@@ -386,7 +387,5 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("goods/GoodsQnaDetailForm"));
 		return mav;
 	}
-	
-	
-	
+
 }

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

@@ -76,6 +76,8 @@ public class Goods extends TscBaseDomain {
 	private String brandnm;		//브랜드명
 	private Integer brandGroupNo;	//브랜드그룹번호
 	private String brandGroupNm;	//브랜드그룹명
+	private String goodsGbNm;		//상품구분명
+	private String originNm;		//제조국 명
 	private String frontGb;		//프론트구분
 	private String isApp;		//앱구분
 	private String siteCd;		//사이트코드

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

@@ -0,0 +1,33 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 안전인증 Domain
+ *
+ * @author eskim
+ * @since 2021. 03. 07
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsSafeNo extends TscBaseDomain {
+
+	private String goodsCd;
+	private String goodsNum;
+	private String certNum;
+	private String certState;
+	private String certDiv;
+	private String certDt;
+
+	public boolean getIsCertNum() {
+		if (this.certNum.matches(".*[0-9].*")) {
+			return true;
+		} else {
+			return false;
+		}
+
+	}
+
+}

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

@@ -114,6 +114,7 @@
 		     , E.DELV_FEE
 		     , E.MIN_ORD_AMT
 		     , G.GOODS_GB
+		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
 		     , (SELECT NI_CLSF_CD
 		        FROM TB_ITEMKIND
 		        WHERE ITEMKIND_CD = G.ITEMKIND_CD) AS NI_CLSF_CD
@@ -127,6 +128,8 @@
 		     , G.GOODS_TYPE
 		     , G.CHANGEABLE_YN
 		     , G.RETURNABLE_YN
+		     , G.ORIGIN_CD
+		     , FN_GET_CODE_NM('G076',G.ORIGIN_CD) AS ORIGIN_NM
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'XX')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
 		     , (SELECT COLOR_KNM FROM tb_color C WHERE COLOR_CD = IFNULL(NULLIF(#{colorCd},'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y') AS COLOR_NM
 		     -- , BP.CURR_PRICE AS BENEFIT_PRICE
@@ -666,4 +669,36 @@
 		) Z
 	</select>
 	
+	<!-- 상품  공지 목록  -->
+	<select id="getGoodsNoticeList"  parameterType="Goods" resultType="Notice">
+		/* TsfGoods.getGoodsNoticeList */
+		SELECT A.NOTICE_SQ
+		     , A.NOTICE_TYPE
+		     , A.NOTICE_TITLE
+		     , A.NOTICE_CONTENT
+		     , DATE_FORMAT(A.NOTICE_STDT,'%Y-%m-%d')  AS NOTICE_STDT 
+		     , DATE_FORMAT(A.NOTICE_EDDT,'%Y-%m-%d')  AS NOTICE_EDDT 
+		     , A.USE_YN
+		FROM   TB_NOTICE A
+		INNER JOIN TB_NOTICE_GOODS B ON A.NOTICE_SQ = B.NOTICE_SQ
+		                             AND B.GOODS_CD = 'CNW1XAPT32'
+		WHERE  A.NOTICE_TYPE = 'G047_30'
+		AND NOW() BETWEEN A.NOTICE_STDT AND A.NOTICE_EDDT
+		AND A.USE_YN  = 'Y'
+		ORDER  BY A.NOTICE_SQ DESC
+	</select>
+	
+	<!-- 상품  안전인증 정보  -->
+	<select id="getGoodsSafeNo"  parameterType="Goods" resultType="GoodsSafeNo">
+		/* TsfGoods.getGoodsSafeNo */
+		SELECT GOODS_CD
+		     , CERT_NUM
+		     , CERT_STATE
+		     , CERT_DIV
+		     , CERT_DT
+		FROM   TB_GOODS_SAFE_NO A
+		WHERE GOODS_CD = #{goodsCd}
+	</select>
+	
+	
 </mapper>

+ 55 - 474
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -546,37 +546,25 @@
 				<!-- 상품설명 노출 -->
 				<div class="descrp_box">
 					<div class="desc_simple"> <!-- 상품 간략설명-->
-						<span class="tit_desc">사이드 밴딩으로 편안한 만능 슬랙스!</span>
-						<p class="ptxt01">
-							슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다.
+						<span class="tit_desc" th:if="${goodsInfo.goodsTitle}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTitle))}">사이드 밴딩으로 편안한 만능 슬랙스!</span>
+						<p class="ptxt01"th:if="${goodsInfo.goodsTitleDesc}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTitleDesc))}">
+							슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 
 						</p>
 					</div>
-					<div class="desc_character"> <!-- 상품특징 -->
+					<div class="desc_character" th:if="${goodsInfo.goodsSpecialDesc}"> <!-- 상품특징 -->
 						<span class="tit_desc">상품특징</span>
-						<p class="ptxt01">
-							- 5가지(IV/BE/PK/BL/BK)의 파스텔톤의 따뜻한 컬러감<br>
-							- 안감 폴라폴리스 소재를 사용하여 따뜻하고 부드러운 착용감<br>
-							- 배색소재의 가슴패치 포켓으로 포인트를 줌<br>
-							- 소매에 발열 안감을 사용하여 보온성을 높여주고, 착용 시 부드러운 촉감으로 편안함을 제공<br>
-							- 디테일한 봉제 기법인 가이루빠 스티치 포인트 디자인<br>
+						<p class="ptxt01" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsSpecialDesc))}">
 							- 지퍼플러 장식을 더해 완성도를 높여줌
 						</p>
 					</div>
 				</div>
 				<!-- //상품설명 노출 -->
-				<!-- 관리자 에디터입력 내용 노출 -->
-				<div class="mdhtml_box">
-					<!-- html 작성내용 -->
-					<a href="#" target="_blank"><img src="/images/pc/thumb/tmp_desc_bnr.jpg" width="1200" alt=""></a>
-					<div style="height:100px"></div><!-- 여백용 html -->
-					<div class="movblock">
-						<iframe src="https://www.youtube.com/embed/uEc8Q800a7w" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
-					</div>
-					<div style="height:100px"></div><!-- 여백용 html -->
-					<iframe width="560" height="315" src="https://www.youtube.com/embed/uEc8Q800a7w" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
-					<div style="height:100px"></div><!-- 여백용 html -->
-					<img src="/images/pc/thumb/tmp_desc_mds.jpg" alt="">
-					<!-- //html 작성내용 -->
+				<!-- 관리자 에디터입력 내용   상단 html -->
+				<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" ></th:block>
+				<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}">
+				</div>
+				<!-- 관리자 에디터입력 내용 노출  상단 html -->
+				<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}">
 				</div>
 				<!-- //관리자 에디터입력 내용 노출 -->
 				<!-- 착용컷 노출 -->
@@ -620,77 +608,38 @@
 				<!-- //라벨 노출 -->					
 				<!-- 브랜드 노출 -->
 				<div class="brand_box">
-					<p class="name">TBJ 티비제이</p>
-					<a href="" class="btn btn_default"><span>브랜드 홈 바로가기</span></a>
+					<p class="name" th:text="${goodsInfo.brandGroupNm}">TBJ 티비제이</p>
+					<a href="javascript:void(0);" class="btn btn_default" th:onclick="cfnGoToBrandMain([[${goodsInfo.brandGroupNo}]])" ><span>브랜드 홈 바로가기</span></a>
 				</div>
 				<!-- //브랜드 노출 -->
 				<!-- 상품필수정보 노출 -->
-				<div class="required_box">
+				<div class="required_box" th:if="${goodsNotiList != null and !goodsNotiList.empty}">
 					<div class="area_infotbl">
 						<span class="title">상품고시정보</span>
 						<div class="tbl type1 mt30">
 							<table>
 								<tbody>
-									<tr>
-										<th>품목</th>
-										<td>의류</td>
-									</tr>
-									<tr>
-										<th>스타일</th>
-										<td>F94U-MD01XA60F0</td>
-									</tr>
-									<tr>
-										<th>시즌</th>
-										<td>겨울</td>
-									</tr>
-									<tr>
-										<th>제품소재</th>
-										<td>[겉감1]폴리에스터100% [겉감2]폴리에스터100% [충전재1]솜털(거위)50% 깃털(거위)50% [충전재2]폴리에스터100%</td>
-									</tr>
-									<tr>
-										<th>색상</th>
-										<td>BR,NV,BK</td>
-									</tr>
-									<tr>
-										<th>치수</th>
-										<td>FREE(여성),95,100,105</td>
-									</tr>
-									<tr>
-										<th>제조자/수입자</th>
-										<td>㈜에프알제이</td>
-									</tr>
-									<tr>
-										<th>제조국</th>
-										<td>베트남</td>
-									</tr>
-									<tr>
-										<th>세탁방법 및 취급시 주의사항</th>
-										<td>본제품은 손세탁이 효과적입니다. (세탁라벨참고)</td>
-									</tr>
-									<tr>
-										<th>제조연월</th>
-										<td>2019-06</td>
-									</tr>
-									<tr>
-										<th>품질보증기준</th>
-										<td>관련법 및 소비자분쟁해결기준에 따름</td>
-									</tr>
-									<tr>
-										<th>A/S 책임자와 전화번호</th>
-										<td>(주)아이스타일24 1544-5336</td>
+									<tr  th:each="goodsNoti, status : ${goodsNotiList}" >
+										<th th:text="${goodsNoti.niItemNm}">스타일</th>
+										<td th:text="${goodsNoti.niContent}">F94U-MD01XA60F0</td>
 									</tr>
 								</tbody>
 							</table>
 						</div>
 					</div>
-					<div class="area_kcl">
+					<div class="area_kcl" th:if="${goodsSafeNo != null}">
 						<i class="ico ico_kcl"></i>
-						<p class="tit normal">
+						<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
 							어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
 						</p>
-						<p class="normal">
-							인증번호: CB123A123-1234
-							<a href="http://www.safetykorea.kr/search/searchPop?certNum=XX00000-0000" target="_blank" class="linktxt3">상세보기</a>
+						<p class="normal" >
+							<th:block th:if="${goodsSafeNo.isCertNum}">
+							 인증번호: :CB123A123-1234
+							<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
+							</th:block>
+							<th:block th:unless="${goodsSafeNo.isCertNum}">
+							해당사항 없음
+							</th:block>
 						</p>
 						<p class="t_info dot_info">
 							해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.
@@ -703,27 +652,27 @@
 								<tbody>
 									<tr>
 										<th>상품코드</th>
-										<td>14443216</td>
+										<td th:text="${goodsInfo.goodsCd}">14443216</td>
 									</tr>
 									<tr>
 										<th>상품구분</th>
-										<td>병행수입</td>
+										<td th:text="${goodsInfo.goodsGbNm}">병행수입</td>
 									</tr>
 									<tr>
 										<th>브랜드</th>
-										<td>TBJ</td>
+										<td th:text="${goodsInfo.brandGroupNm}">TBJ</td>
 									</tr>
 									<tr>
 										<th>상품명</th>
-										<td>남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+										<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 									</tr>
 									<tr>
 										<th>제조자</th>
-										<td>한세엠케이(주)</td>
+										<td >한세엠케이(주)==============>노출필요성 확인</td>
 									</tr>
 									<tr>
 										<th>제조국</th>
-										<td>베트남</td>
+										<td th:text="${goodsInfo.originNm}">베트남</td>
 									</tr>
 								</tbody>
 							</table>
@@ -909,423 +858,53 @@
 		</div>
 		<!-- // 이 상품과 함께 본 상품 -->
 		<!-- STYLE24의 스타일링 추천 -->
-		<div class="content wide pd_recommend">
+		<div class="content wide pd_recommend" th:if="${lookbookList != null and !lookbookList.empty}">
 			<div class="cont_head">
 				<h3 class="subH1 t_c mb40">STYLE24의 스타일링 추천</h3>
 			</div>
-			<div class="cont_body">
+			<div class="cont_body" th:with="ithrCd=aa , contentsLoc=bb ">
 				<!-- CONT-BODY -->
 				<div class="area_slider">
 						<div class="swiper-container">
-							<div class="swiper-wrapper">
+							<div class="swiper-wrapper" th:each="lookbook, status : ${lookbookList}">
 								<div class="swiper-slide">
 									<div class="page">
 										<div class="pic">
 											<span class="thumb" style="background-image:url('/images/pc/thumb/tmp_pdLookbook1.jpg');"></span>
 											<!-- 상품피커 -->
-											<div class="item_picker" style="left:10%; top:69%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명11
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:50%; top:40%;">
+											<th:block th:if="${lookbook.lookbookGoodsList != null and !lookbook.lookbookGoodsList.empty}"
+														th:each="lookbookGoods, status : ${lookbook.lookbookGoodsList}">
+											<div class="item_picker" th:style="${'left:'+lookbookGoods.xlim+'%; top:'+lookbookGoods.ylim+'%;'}">
 												<button type="button"><span class="ico ico_picker"></span></button>
 												<div class="pick_descr">
-													<a href="">
-														상품명12
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->	   
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:57%; top:62%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명13
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->								   
-										</div>
-										<div class="item_wrap">
-											<div class="item_area">
-												<h5>
-													룩북 속 상품
-													<span data-font="lato">(11)</span>
-												</h5>
-												<div class="li_item">
-													<ul>
-														<li>
-															<div class="item_prod unable"> <!-- 판매불가 상품에 unable 추가 -->
-																<div class="item_state">
-																	<a href="#none" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-													</ul>
-												</div>
-												<button type="button" class="btn btn_block btn_md"><span>모두 쇼핑백 담기</span></button>
-											</div>
-										</div>
-									</div>									
-								</div>
-								<div class="swiper-slide">
-									<div class="page">
-										<div class="pic">
-											<span class="thumb" style="background-image:url('/images/pc/thumb/tmp_pdLookbook2.jpg');"></span>
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:24%; top:69%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명11
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:50%; top:40%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명12
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->	   
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:57%; top:62%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명13
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->								   
-										</div>
-										<div class="item_wrap">
-											<div class="item_area">
-												<h5>
-													룩북 속 상품
-													<span data-font="lato">(11)</span>
-												</h5>
-												<div class="li_item">
-													<ul>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-													</ul>
-												</div>
-												<button type="button" class="btn btn_block btn_md"><span>모두 쇼핑백 담기</span></button>
-											</div>
-										</div>
-									</div>									
-								</div>
-								<div class="swiper-slide">
-									<div class="page">
-										<div class="pic">
-											<span class="thumb" style="background-image:url('/images/pc/thumb/tmp_pdLookbook3.jpg');"></span>
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:24%; top:69%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명11
+													<a href="javascript:void(0);" ><th:block th:text="${lookbookGoods.goodsFullNm}"></th:block>
 													</a>
 												</div>
 											</div>
+											</th:block>
 											<!-- //상품피커 -->
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:50%; top:40%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명12
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->	   
-											<!-- 상품피커 -->
-											<div class="item_picker" style="left:70%; top:62%;">
-												<button type="button"><span class="ico ico_picker"></span></button>
-												<div class="pick_descr">
-													<a href="">
-														상품명13
-													</a>
-												</div>
-											</div>
-											<!-- //상품피커 -->								   
 										</div>
 										<div class="item_wrap">
-											<div class="item_area">
+											<div class="item_area" th:if="${lookbook.lookbookGoodsList != null and !lookbook.lookbookGoodsList.empty}">
 												<h5>
 													룩북 속 상품
-													<span data-font="lato">(11)</span>
+													<span data-font="lato">(<th:block th:text="${#lists.size(lookbook.lookbookGoodsList)}"></th:block>)</span>
 												</h5>
 												<div class="li_item">
-													<ul>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<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_pdLookbook_item1.jpg">
-																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
-																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<div class="item_prod">
+													<ul >
+														<li th:each="lookbookGoods, status : ${lookbook.lookbookGoodsList}">
+															<div class="item_prod" th:classappend="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}? 'unable' : ''"> <!-- 판매불가 상품에 unable 추가 -->
 																<div class="item_state">
-																	<a href="#none" class="itemLink">
+																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
 																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+																			<img alt="" class="vLHTC pd_img"  th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm}">
 																		</div>
-																		<p class="itemBrand">CURLYSUE 컬리수</p>
-																		<div class="itemName">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
+																		<p class="itemBrand" th:text="${lookbookGoods.brandGroupNm}">CURLYSUE 컬리수</p>
+																		<div class="itemName" th:text="${lookbookGoods.goodsFullNm}">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
 																		<p class="itemPrice">
-																			700,000
-																			<span class="itemPrice_original">1,000,000</span>
-																			<span class="itemPercent">30%</span>
+																			<th:block th:text="${#numbers.formatInteger(lookbookGoods.currPrice, 0,'COMMA')}"></th:block>
+																			<span class="itemPrice_original" th:if="${lookbookGoods.listPrice > lookbookGoods.currPrice}"  th:text="${#numbers.formatInteger(lookbookGoods.listPrice, 0,'COMMA')}">1,000,000</span>
+																			<span class="itemPercent" th:if="${lookbookGoods.dcRate > 0}" th:text="|${#numbers.formatDecimal(lookbookGoods.dcRate,0,0)}%|">30%</span>
 																		</p>
 																	</a>
 																</div>
@@ -1338,6 +917,8 @@
 										</div>
 									</div>									
 								</div>
+								
+								
 							</div>
 						</div>
 						<!-- Add Pagination -->

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 502 - 345
src/main/webapp/ux/pc/css/layout.css


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä