فهرست منبع

Merge branch 'develop' into order

card007 5 سال پیش
والد
کامیت
f1af8f1ec9

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

@@ -130,6 +130,16 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getPlanImageInfo(Plan plan);
 	
+	/**
+	 * 기획전 템플릿 상품 1열
+	 *
+	 * @param 기획전 번호
+	 * @return
+	 * @author sowon
+	 * @date 2021. 3. 23
+	 */
+	Collection<Plan> getPlanGoods1Info(Plan plan);
+	
 	/**
 	 * 이벤트 갯수 조회
 	 * 

+ 13 - 0
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -155,6 +155,7 @@ public class TsfPlanningService {
 	 * @since 2021. 3. 22
 	 */
 	public Collection<Plan> getPlanCouponInfo(Coupon coupon) {
+		coupon.setCustNo(TsfSession.getInfo().getCustNo());
 		return planningDao.getPlanCouponInfo(coupon);
 	}
 	
@@ -169,6 +170,18 @@ public class TsfPlanningService {
 	public Collection<Plan> getPlanImageInfo(Plan plan) {
 		return planningDao.getPlanImageInfo(plan);
 	}
+	
+	/**
+	 * 기획전 템플릿 상품1열
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 22
+	 */
+	public Collection<Plan> getPlanGoods1Info(Plan plan) {
+		return planningDao.getPlanGoods1Info(plan);
+	}
 
 
 	/**

+ 21 - 19
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -165,14 +165,14 @@ public class TsfGoodsController extends TsfBaseController {
 			mav.addObject("goodsDealComposeList", goodsService.getGoodsDealComposeList(paramsGoods));
 		} else {
 			if (TscConstants.GoodsType.NORMAL.value().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 {
-					mav.addObject("goodsOptionList", goodsService.getGoodsOptionList(paramsGoods));
-				}
+//				} else {
+//					mav.addObject("goodsOptionList", goodsService.getGoodsOptionList(paramsGoods));
+//				}
 
 //				// 상품 고시정보
 				mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
@@ -200,8 +200,9 @@ public class TsfGoodsController extends TsfBaseController {
 //
 //		// 상품포인트사용방법
 //		mav.addObject("goodsPointMothod", envsetService.getPointMothod(TscConstants.Site.STYLE24.value())); // A:정액, R:정율
-//		// 상품평노출여부 - 미사용
-//		//mav.addObject("reviewDisplayYn", envsetService.getReviewDisplayYn(TsfConstants.SITE_CD));
+		// 상품평노출여부 
+		//mav.addObject("reviewDisplayYn", envsetService.getGoodsReviewDisplayYn(TscConstants.Site.STYLE24.value()));
+		mav.addObject("reviewDisplayYn", "Y");
 
 		// 베스트 상품평
 		Review review = new Review();
@@ -910,7 +911,7 @@ public class TsfGoodsController extends TsfBaseController {
 		} else if ("ERROR_30".equals(couponResult)) {
 			result.set("message", "죄송합니다. 쿠폰이 모두 소진되었습니다.");
 		} else {
-			if (goods.getArrCpnId() != null || goods.getArrCpnId().length > 0) {
+			if (goods.getArrCpnId() != null && goods.getArrCpnId().length > 0) {
 				result.set("message", couponResult + "개 쿠폰이 발급되었습니다.");
 			} else {
 				result.set("message", "쿠폰이 발급되었습니다.");
@@ -953,22 +954,23 @@ public class TsfGoodsController extends TsfBaseController {
 		Goods goods = new Goods();
 
 		String ckGoodsCds = GagaCookieUtil.getCookie(TsfSession.getHttpServletRequest(), TsfConstants.CK_PREFIX + "_today_goodsCd");
-		String[] arrGoodsCds = ckGoodsCds.split("\\,");
-		StringBuilder sql = new StringBuilder();
-		if (arrGoodsCds.length > 0) {
-			int idx = 1;
-			for (String goodsCd : arrGoodsCds) {
-				if (!StringUtils.isBlank(goodsCd)) {
-					if (idx > 1) {
-						sql.append("UNION ALL ");
+		if (StringUtils.isNotBlank(ckGoodsCds)) {
+			String[] arrGoodsCds = ckGoodsCds.split("\\,");
+			StringBuilder sql = new StringBuilder();
+			if (arrGoodsCds.length > 0) {
+				int idx = 1;
+				for (String goodsCd : arrGoodsCds) {
+					if (!StringUtils.isBlank(goodsCd)) {
+						if (idx > 1) {
+							sql.append("UNION ALL ");
+						}
+						sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
 					}
-					sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
 				}
+				goods.setTodayGoodsSql(sql.toString());
+				recentlyGoodsList = goodsService.getRecentlyGoodsList(goods);
 			}
-			goods.setTodayGoodsSql(sql.toString());
-			recentlyGoodsList = goodsService.getRecentlyGoodsList(goods);
 		}
-
 		return recentlyGoodsList;
 	}
 	

+ 15 - 0
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -107,6 +107,7 @@ public class TsfPlanningController extends TsfBaseController {
 	@GetMapping("/detail/form")
 	@ResponseBody
 	public ModelAndView PlanningDetailForm(@RequestParam(value="planSq") int planSq) throws Exception {
+		
 		ModelAndView mav = new ModelAndView();
 		Plan plan = new Plan();
 		Review review = new Review();
@@ -116,6 +117,8 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setPlanSq(planSq);
 		review.setPlanSq(planSq);
 		coupon.setPlanSq(planSq);
+		
+		planningService.accessCustGrade(plan);
 		// 이거 access로 옮겨야 하나..?
 		//plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setFrontGb(TsfSession.getFrontGb());
@@ -145,6 +148,18 @@ public class TsfPlanningController extends TsfBaseController {
 		// 이미지
 		mav.addObject("imageInfo",planningService.getPlanImageInfo(plan));
 		
+		// 상품1열 전시
+		plan.setTmplType("G082_50");
+		mav.addObject("goods1Info",planningService.getPlanGoods1Info(plan));
+		
+		// 상품2열 전시
+		plan.setTmplType("G082_51");
+		mav.addObject("goods2Info",planningService.getPlanGoods1Info(plan));
+		
+		//상품4열 전시
+		plan.setTmplType("G082_52");
+		mav.addObject("goods4Info",planningService.getPlanGoods1Info(plan));
+				
 		// 다른기획전 보기 
 		mav.addObject("planList", planningService.getPlanList(plan));
 //

+ 20 - 3
src/main/java/com/style24/front/support/security/session/TsfSession.java

@@ -64,13 +64,30 @@ public class TsfSession extends GagaSession {
 			return "P";
 		}
 
-		log.debug("device.isMobile: {}", device.isMobile());
-		log.debug("device.isNormal: {}", device.isNormal());
-		log.debug("device.isTablet: {}", device.isTablet());
+		log.info("TsfSession.isApp: {}", TsfSession.getAttribute("isApp"));
+		log.info("device.isMobile: {}", device.isMobile());
+		log.info("device.isNormal: {}", device.isNormal());
+		log.info("device.isTablet: {}", device.isTablet());
+
+		if ("Y".equals(TsfSession.getAttribute("isApp"))) {
+			return "A";
+		}
 
 		return device.isMobile() ? "M" : "P";
 	}
 
+	/**
+	 * Get 고객구분(G100_10: 일반회원 또는 비회원 또는 미로그인, G100_20:임직원)
+	 * @return
+	 */
+	public static String getCustGb() {
+		if (!TsfSession.isLogin()) {
+			return "G100_10";
+		}
+
+		return TsfSession.getInfo().getCustGb();
+	}
+
 	/**
 	 * 세션 설정
 	 * @param name - 명칭

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

@@ -99,7 +99,8 @@ public class Goods extends TscBaseDomain {
 	private String soldoutGoodsDisplayYn = "N";	//품절노추여부
 	private int pointUnit = 1;	//포인트단위
 	private String goodsNmFull;	//상품타이틀+ 상품명
-	private String sysImgNm;	//상품이미지
+	private String sysImgNm;	//상품대표이미지
+	private String sysImgNm2;	//상품마우스오버이미지
 	private String logoFileNm;	//브랜드로고이미지
 	private int stockQty;		//재고
 	private String soldoutYn;	//품절여부

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

@@ -235,6 +235,7 @@ public class Plan extends TscBaseDomain{
 		private String brand;				// 기획전 리스트 (브랜드 명 외)
 		private String newPlan;				// 기획전 new 확인
 		private int cnt;					// 기획전 브랜드 카운트;
+		private String brandKnm;
 		
 		private String sysImgNm;			// 상품 이미지
 		// Pagination

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

@@ -79,6 +79,7 @@ public class Review extends TscBaseDomain {
 	private String title;			// 기획전 타이틀
 	private String goodsNm;			// 상품이름
 	private int currPrice;		// 현재가
+	private String fileGb;			// 첨부파일 종류
 	// Masking
 	public String getMaskingCustId() {
 		return (this.custId != null) ?  MaskingUtils.id(this.custId) : this.custId;

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

@@ -220,8 +220,6 @@
 		        </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
-		        AND    A.DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		        AND    A.DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
 		        AND    IFNULL((SELECT DISP_EDDT
 		                       FROM   TB_PLAN
 		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
@@ -245,25 +243,6 @@
 		            <otherwise>
 		        AND    A.DISP_STDT <![CDATA[<=]]> NOW()
 		        AND    A.DISP_EDDT <![CDATA[>=]]> NOW()
-		        AND    IFNULL((SELECT DISP_EDDT
-		                       FROM   TB_PLAN
-		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
-		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
-		                                             ELSE
-		                                                 NULL
-		                                        END
-		                      ),NOW()
-		                     ) <![CDATA[>=]]> NOW()
-		        AND    IFNULL((SELECT DISP_STDT
-		                       FROM   TB_PLAN
-		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
-		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
-		                                             ELSE
-		                                                 NULL
-		                                        END
-		                      ),NOW()
-		                     ) <![CDATA[<=]]> NOW()
-		        ORDER  BY CONTENTS_LOC, DISP_ORD, CONTENTS_SQ
 		            </otherwise>
 		        </choose>
 		       ) A
@@ -462,7 +441,7 @@
 			 , COL_NO
 		FROM TB_MAIN_LAYOUT
 		WHERE CATE_NO = #{cateNo}
-		AND 	CONTENTS_LOC in ('SMM001','SMM002')
+		AND 	CONTENTS_LOC IN ('SMM001','SMM002','SMM005','SMM008')
 		ORDER BY DISP_ORD, COL_NO
 	</select>
 

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

@@ -291,7 +291,7 @@
 		           , (SELECT MIN_ORD_QTY FROM TB_GOODS WHERE GOODS_CD = O.GOODS_CD ) AS MIN_ORD_QTY
 		      FROM TB_GOODS G
 		      INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
-		                             AND O.OPT_CD1 = #{colorCd}
+		                             AND O.OPT_CD1 = #{optCd1}
 		                             AND O.DISP_YN = 'Y' 
 		      INNER JOIN VW_STOCK VS ON O.GOODS_CD = VS.GOODS_CD
 		                          AND O.OPT_CD = VS.OPT_CD
@@ -659,7 +659,7 @@
 		                            </if>
 		      INNER JOIN TB_BRAND D ON G.BRAND_CD = D.BRAND_CD
 		                    AND D.USE_YN = 'Y'
-		      INNER JOIN TB_SITE_BRAND SB ON B.BRAND_CD  = SB.BRAND_CD
+		      INNER JOIN TB_SITE_BRAND SB ON D.BRAND_CD  = SB.BRAND_CD
 		                            AND SB.USE_YN = 'Y'
 		                            AND SB.SITE_CD = #{siteCd}
 		      INNER JOIN TB_BRAND_GROUP E ON D.BRAND_GROUP_NO = E.BRAND_GROUP_NO

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

@@ -322,12 +322,11 @@
 	
 	<select id="templateDispOrdInfo" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.templateDispOrdInfo*/
-		SELECT TMPL_TYPE , DISP_ORD 
+		SELECT TMPL_TYPE , DISP_ORD, PLAN_CONT_SQ,TITLE ,LINK_URL ,DISP_YN 
 		FROM TB_PLAN_CONTENTS TPC 
 		WHERE 1=1 
 			AND TPC.PLAN_SQ = #{planSq}
 		    AND TPC.DISP_YN = 'Y'
-		GROUP BY TMPL_TYPE
 		ORDER BY DISP_ORD 
 	</select>
 	
@@ -390,6 +389,7 @@
 					 ,F.SUPPLY_GOODS_CD
 					 ,F.PNT_PRATE
 					 ,F.PNT_MRATE
+					 ,F.FILE_GB
 				  ,(SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD =F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
 				  ,(SELECT MAX(SYS_FILE_NM) FROM TB_REVIEW_ATTACH WHERE REVIEW_SQ =F.REVIEW_SQ ORDER BY FILE_GB , REVIEW_SQ LIMIT 1) AS REVIEW_SYS_IMG
 				  , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
@@ -455,7 +455,9 @@
 					 ,G.SUPPLY_GOODS_CD
 					 ,G.PNT_PRATE
 					 ,G.PNT_MRATE
+					 ,RA.FILE_GB
 				FROM TB_REVIEW R LEFT JOIN TB_GOODS G ON R.GOODS_CD = G.GOODS_CD 
+								 LEFT JOIN TB_REVIEW_ATTACH RA ON R.REVIEW_SQ = RA.REVIEW_SQ 
 				WHERE 1=1 
 				 AND R.DEL_YN = 'N'
 				 AND R.DISP_YN = 'Y'
@@ -482,7 +484,7 @@
 	<select id="getPlanCouponInfo" parameterType="Coupon" resultType="Coupon">
 		/* TsfPlanning.templateDispOrdInfo*/
 		SELECT F.*
-		      ,(CASE F.CPN_ID WHEN (SELECT CPN_ID FROM TB_CUST_COUPON C WHERE C.CPN_ID = F.CPN_ID )THEN '받기완료'
+		      ,(CASE F.CPN_ID WHEN (SELECT CPN_ID FROM TB_CUST_COUPON C WHERE C.CPN_ID = F.CPN_ID AND CUST_NO = #{custNo})THEN '받기완료'
 		        ELSE '쿠폰받기' END ) AS COUPON_STAT
 		FROM
 		(
@@ -559,5 +561,55 @@
 		 AND PC.PLAN_SQ = #{planSq}
 		 AND PC.DISP_YN = 'Y'
 	</select>
+	
+	<!-- 기획전 상품 1열 전시 -->
+	<select id="getPlanGoods1Info" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getPlanGoods1Info */
+		SELECT Z.*
+		      , (CASE WHEN Z.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Z.GOODS_CD) 
+					ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Z.GOODS_CD) 
+					END) AS STOCK_QTY_SUM
+			  , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Z.GOODS_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+		FROM
+		(
+			SELECT PC.PLAN_CONT_SQ
+			      ,PC.PLAN_SQ
+			      ,PC.TMPL_TYPE
+			      ,PC.TITLE
+			      ,PC.LINK_URL
+			      ,PC.DISP_YN
+			      ,PC.DISP_ORD
+			      ,PCI.PLAN_CONT_ITEM_SQ
+			      ,PCI.ITEM_VAL
+			      ,G.GOODS_CD 
+			      ,G.GOODS_TYPE 
+			      ,G.GOODS_NM 
+			      ,G.LIST_PRICE 
+			      ,G.CURR_PRICE                                                                 
+			      ,G.DC_RATE
+			      ,CASE G.FORMAL_GB WHEN 'G009_20' THEN '이월' ELSE '정상' END AS FORMAL_GB                                                                 
+				  ,G.SEASON_CD       
+				  , (SELECT SUPPLY_COMP_NM
+				 	 FROM   TB_SUPPLY_COMPANY
+				     WHERE  SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
+					) AS SUPPLY_COMP_NM                                                           
+				  ,G.ERP_STOCK_LINK_YN                                                          
+				  ,G.ERP_PRICE_LINK_YN                                                                                                                  
+				  ,G.NEW_CUST_ORD_YN                                                            
+				  ,G.DELV_FEE_CD                                                                
+				  ,G.FRST_CFRM_DT                  
+				  ,G.PRICE_UPD_DT 
+				  ,B.BRAND_ENM 
+		  		  ,B.BRAND_KNM          
+			FROM TB_PLAN_CONTENTS PC INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
+									 INNER JOIN TB_GOODS G ON PCI.ITEM_VAL = G.GOODS_CD 
+									 INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+                         					AND B.USE_YN = 'Y'	
+			WHERE 1=1
+			 AND PC.TMPL_TYPE = #{tmplType}
+			 AND PC.PLAN_SQ = #{planSq}
+			 AND PC.DISP_YN = 'Y'
+		 )Z
+	</select>
 
 </mapper>

+ 70 - 65
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -36,13 +36,13 @@
 									<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
 										<div class="swiper-slide">
 											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
-												<th:block th:if="${ContentsData.strVar1!=null && ContentsData.strVar1!='' && ContentsData.strVar1!='#' }">
+												<th:block th:if="${ContentsData.strVar1!=null && ContentsData.strVar1!='' }">
 													<div class="txtWrap">
 														<th:block th:if="${ContentsData.strVar5!=null && ContentsData.strVar5!=''}">
 															<p class="vrt_txt" th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></p>
 															<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}">EVENT</p>
 														</th:block>
-														<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}" class="w">
+														<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
 															<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></dt>
 															<dt th:if="${ContentsData.strVar5!='P'}" >EVENT</dt>
 															<dd th:text="${ContentsData.strTitle1}"></dd>
@@ -102,6 +102,73 @@
 					</div>
 				</th:block>
 
+				<!-- 5. 프로모션배너 -->
+				<th:block th:if="${contentsLoc=='005'}">
+					<div class="content main_2stage">
+						<div class="cont_head dpnone">
+							<p class="t_c">프로모션배너</p>
+						</div>
+						<div class="cont_body">
+							<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
+								<th:block th:if="${ContentsData.contentsType!=null && ContentsData.contentsType!=''}">
+									<div class="ui_row" th:if="${ContentsData.contentsType=='1'}">
+										<div class="ui_col_6">
+											<a th:href="${ContentsData.strVar1}"><img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt=""></a>
+										</div>
+									</div>
+									<div class="ui_row" th:if="${ContentsData.contentsType=='2'}">
+										<div class="ui_col_6">
+											<a th:href="${ContentsData.strVar1}"><img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt=""></a>
+										</div>
+										<div class="ui_col_6">
+											<a th:href="${ContentsData.strVar2}"><img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath2}" alt=""></a>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+						</div>
+						<div class="cont_foot dpnone">
+							CONT-FOOT
+						</div>
+					</div>
+				</th:block>
+
+				<!-- 8. 가로 긴 배너 슬라이드 -->
+				<!-- bnn_1stage -->
+				<th:block th:if="${contentsLoc=='008'}">
+					<div class="content wide main_1stage">
+						<div class="cont_head dpnone">
+							<p class="t_c">배너 슬라이드</p>
+						</div>
+						<div class="cont_body">
+							<div class="swiper-container post-bnnWide">
+								<div class="swiper-wrapper ">
+									<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
+										<div class="swiper-slide">
+											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
+												<a th:href="${ContentsData.strVar1}">
+													<div class="bnnbox" style="background:#e3e7ea;">
+														<div class="txtWrap ">
+															<p th:text="${ContentsData.strTitle1}"></p>
+															<!--<p>아우터 + 이너 단독세일</p>-->	<!-- br 태그 줄바꿈해야함-->
+															<button type="button" class="btn">VIEW MORE</button>
+														</div>
+														<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
+													</div>
+												</a>
+											</th:block>
+										</div>
+									</th:block>
+								</div>
+								<div class="swiper-button-prev "></div>
+								<div class="swiper-button-next "></div>
+							</div>
+						</div>
+						<div class="cont_foot dpnone">
+							CONT-FOOT
+						</div>
+					</div>
+				</th:block>
 
 			</th:block>
 		</th:block>
@@ -599,27 +666,6 @@
 			</div>
 		</div>
 
-		<!-- 5. 프로모션배너 -->
-		<div class="content main_2stage">
-			<div class="cont_head dpnone">
-				<p class="t_c">프로모션배너</p>
-			</div>
-			<div class="cont_body">
-				<div class="ui_row">
-					<div class="ui_col_6">
-						<a href="#none"><img src="/images/pc/thumb/bnn_2stage1.jpg" alt=""></a>
-					</div>
-					<div class="ui_col_6">
-						<a href="#none"><img src="/images/pc/thumb/bnn_2stage2.jpg" alt=""></a>
-					</div>
-				</div>
-			</div>
-			<div class="cont_foot dpnone">
-				CONT-FOOT
-			</div>
-		</div>
-
-
 		<!-- 6. 타임딜 : 슬라이드 -->
 		<div class="content wide main_deal">
 			<div class="cont_head">
@@ -1045,48 +1091,7 @@
 		</div>
 
 
-		<!-- 8. 가로 긴 배너 슬라이드 -->
-		<!-- bnn_1stage -->
-		<div class="content wide main_1stage">
-			<div class="cont_head dpnone">
-				<p class="t_c">배너 슬라이드</p>
-			</div>
-			<div class="cont_body">
-				<div class="swiper-container post-bnnWide">
-					<div class="swiper-wrapper ">
-						<div class="swiper-slide">
-							<a href="#none">
-								<div class="bnnbox" style="background:#e3e7ea;">
-									<div class="txtWrap ">
-										<p>TBJ 가을 신상</p>
-										<p>아우터 + 이너 단독세일</p>
-										<button type="button" class="btn">VIEW MORE</button>
-									</div>
-									<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/bnn_1stage.jpg">
-								</div>
-							</a>
-						</div>
-						<div class="swiper-slide">
-							<a href="#none">
-								<div class="bnnbox" style="background:#eef1f3;">
-									<div class="txtWrap ">
-										<p>TBJ 가을 신상</p>
-										<p>아우터 + 이너 단독세일</p>
-										<button type="button" class="btn">VIEW MORE</button>
-									</div>
-									<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/bnn_1stage.jpg">
-								</div>
-							</a>
-						</div>
-					</div>
-					<div class="swiper-button-prev "></div>
-					<div class="swiper-button-next "></div>
-				</div>
-			</div>
-			<div class="cont_foot dpnone">
-				CONT-FOOT
-			</div>
-		</div>
+
 
 
 		<!-- 9. MD추천 스타일 -->

+ 99 - 88
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -225,7 +225,7 @@
 										<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}"  disabled>
 											<div class="combo">
 												<div class="select">선택</div>
-												<ul class="list" th:id="|selfGoodsOpt2${goodsCompose.compsGoodsCd}|" >
+												<ul class="list" th:id="|goodsOpt2${goodsCompose.compsGoodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
 											</div>
@@ -237,28 +237,38 @@
 								</th:block>
 								</th:block>
 								<th:block th:if="${goodsInfo.selfGoodsYn =='N' }"> <!--  입점상품 -->
-								<div class="opt_select" th:if="${goodsOptionList != null and !goodsOptionList.empty}">
+								<div class="opt_select" th:if="${goodsOption1List != null and !goodsOption1List.empty}">
 									<div class="opt_header">
-											<span class="title">옵션</span>
-											<button type="button" id="btn_infoSize_pop" class="btn_popup" th:onclick="cfGoodsSizeInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.colorCd}]] )"><span>사이즈정보</span></button>
-										</div>
+										<span class="title">옵션</span>
+										<button type="button" id="btn_infoSize_pop" class="btn_popup" th:onclick="cfGoodsSizeInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.colorCd}]] )"><span>사이즈정보</span></button>
+									</div>
 									<div class="form_field">
-										<div class="select_custom item_opt1 item_opt1_1">
+										<div class="select_custom item_opt1 item_opt1_1" th:classappend="${goodsInfo.goodsCd}" >
 											<div class="combo">
 												<div class="select">선택</div>
 												<ul class="list">
-													<li class="selected" id="selfNoGoodsOpt">선택</li> 
-													<th:block th:each="goodsOption, status : ${goodsOptionList}" >
-													<li th:attr="aria-disabled=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.soldoutYn == 'Y' or goodsOption.stockQty <= 0)? 'true':''}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsOption.optCd}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">
-														<div th:text="${goodsOption.optNm}">상품옵션</div>
+													<li class="selected" th:id="|selfGoodsOpt1${goodsInfo.goodsCd}|" >선택</li> 
+													<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>
-														<input type="hidden" name="opt" th:value="${goodsOption.goodsCd +'|'+goodsOption.optCd +'|1'}" th:id="${goodsOption.optCd}" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
+														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 													</li>
 													</th:block>
 												</ul>
 											</div>
 										</div>
 									</div>
+									<div class="form_field">
+										<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
+											<div class="combo">
+												<div class="select">선택</div>
+												<ul class="list" th:id="|goodsOpt2${goodsInfo.goodsCd}|" >
+													<!-- 옵션2 -->
+												</ul>
+											</div>
+										</div>
+									</div>
 								</div>
 								</th:block>
 								<!-- 해당 상품 품절시 노출 -->
@@ -310,7 +320,7 @@
 							</div>
 							<div class="exinfo_box">
 								<ul>
-									<li>
+									<li th:if="${reviewDisplayYn == 'Y'}">
 										<div class="ex_review">
 											<a href="javascript:void(0);" id="btn_pdReview_pop" th:onclick="cfGoodsReview([[${goodsInfo.goodsCd}]])">	
 												<span class="tit">리뷰<em class="number">(
@@ -781,21 +791,19 @@
 			$target.prop("checked",true);
 			$("#selectOptCd1").html(optCd2);
 		}else{
-			debugger;
-			$target = $obj.find('input[name="opt"]');
+			$target = $obj.find('input[name="opt2"]');
 		}
 		let addPrice  = $target.attr("addPrice");
 		let optCd  = $target.attr("optCd");
-		debugger;
 		$("#selectOptCd1addPrice").html('');
 		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("");
 		
-
 		let maxCnt = maxOrdQty;
 		let params = new Object();
 		params.goodsCd = goodsCd;
@@ -896,13 +904,19 @@
 				return false;
 			}
 		}else{
-			// 세트작업시 작업요망 eskim
-			/* var targetSize=$('.sizelist').length;	//구성품 갯수;
-			var itemSize = $('.option').find('.item').find('input[type=radio]:checked').length;	//사이즈 선택 상품수
-			if (targetSize > itemSize){
-				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
+			if (targetSize != itemSize){
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
 				return false;
-			} */
+			}
 		}
 
 		let $obj = $(obj);
@@ -933,13 +947,20 @@
 				return false;
 			}
 		}else{
-			// 세트작업시 작업요망 eskim
-			/* var targetSize=$('.sizelist').length;	//구성품 갯수;
-			var itemSize = $('.option').find('.item').find('input[type=radio]:checked').length;	//사이즈 선택 상품수
-			if (targetSize > itemSize){
-				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+			
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
+			if (targetSize != itemSize){
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
 				return false;
-			} */
+			}
 		}
 
 		//let f = document.cartForm;
@@ -969,34 +990,21 @@
 	}
 	
 	//합계 계산
-	var fnSetTotalPrice = function() {debugger;
+	var fnSetTotalPrice = function() {
 		//let f = document.cartForm;
 
 		let totalEa = 0;
 		let totalPrice = 0;
 		
-		$('input[name="cea"]').each(function() {debugger;
+		$('input[name="cea"]').each(function() {
 			let ea = parseInt($(this).val());
 			let addPrice = 0;
-			
-			//let addPrice = parseInt($("#cartForm  input[name=addPrice]").val());
-			
-			if ("N" == [[${goodsInfo.selfGoodsYn}]]){
-				let target=$('.select_custom.item_opt1');
-				target.each(function() {debugger;
-					if (typeof ($(this).find('input[name=opt]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt]').val())){
-						addPrice += Number($(this).find('input[name=opt]').attr('addPrice'));	
-					}
-				});	
-			}else{
-				let target=$('.select_custom.item_opt2');
-				target.each(function() {
-					if (typeof ($(this).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt2]').val())){
-						addPrice += Number($(this).find('input[name=opt2]').attr('addPrice'));	
-					}
-				});	
-			}
-			
+			let target=$('.select_custom.item_opt2');
+			target.each(function() {
+				if (typeof ($(this).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt2]').val())){
+					addPrice += Number($(this).find('input[name=opt2]').attr('addPrice'));	
+				}
+			});	
 			
 			let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
 
@@ -1046,7 +1054,6 @@
 			obj.optCd = $("#cartForm  input[name=optCd]").val();
 			obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
 			obj.goodsType = $("#cartForm  input[name=goodsType]").val();
-			//obj.dealGoodsCd = $("#cartForm  input[name=goodsType]").val();
 			obj.cartGb = btnType;
 			obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
 			obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
@@ -1055,31 +1062,39 @@
 			params.push(obj);
 
 		}else if (goodsType == 'G056_S'){  //수정요
-			alert("작업필요");
-/* 			var target=$('.sizelistCart');
-			var targetSize=target.length;
-			var itemSize = target.find('.item').find('input[type=radio]:checked').length;
+		
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
 			if (targetSize != itemSize){
-				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
 				return false;
 			}
-
-			target.find('.item').find('input[type=radio]:checked').each(function() {
-
-				var arrInfo = $(this).val().split('|');	// 상품코드|사이즈|구성수량
-
+			
+			target.each(function() {
+				var arrInfo = $(this).find('input[name=opt2]').val().split('|');	// 상품코드|사이즈|구성수량
+				
 				var obj = new Object();
-				obj.btnType = btnType;
+				obj.cartGb = btnType;
 				obj.goodsType = $("#cartForm  input[name=goodsType]").val();
 				obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
 				obj.itemCd = arrInfo[0];
-				obj.sizeCd = arrInfo[1];
+				obj.optCd = arrInfo[1];
 				obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
-				obj.itemQty = Number(arrInfo[2]);
-				obj.planDtlSq =$("#cartForm  input[name=planDtlSq]").val();
+				//obj.itemQty = Number(arrInfo[2]);
+				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+				obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+				obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+				obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
 				params.push(obj);
-
-			}); */
+				
+			});
 		}
 		
 		// 장바구니담기
@@ -1139,8 +1154,9 @@
 	
 	// 옵션2 조회
 	var fnOption2 = function(ridx, goodsCd, optCd1, qty, minOrdQty, maxOrdQty ){
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
 		let data = {goodsCd : goodsCd
-					,colorCd : optCd1
+					,optCd1 : optCd1
 					,adminYn : $("#cartForm  input[name=adminYn]").val()
 					};
 		let jsonData = JSON.stringify(data);
@@ -1152,14 +1168,18 @@
 				let $obj = null;
 				$.each(result.dataList, function(idx, item) {
 					if (idx == 0){
-						$obj = $('#selfGoodsOpt2'+item.goodsCd);
+						$obj = $('#goodsOpt2'+item.goodsCd);
 						$obj.append('');
 						$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
-						tag += '<li class="selected" id="selfGoodsOpt2'+item.goodsCd+'">선택</li>\n';	
+						tag += '<li class="selected" id="goodsOpt2'+item.goodsCd+'">선택</li>\n';	
 					}
 					let soldoutYn = ""; 
 					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
-					tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';
+					if (selfGoodsYn == "Y"){
+						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
+					}else{
+						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStock(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';
+					}
 					tag += '<div>'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){
 						tag += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
@@ -1170,7 +1190,11 @@
 				
 				$obj.append(tag);
 				if (ridx == 1){
-					var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');
+					if (selfGoodsYn == "Y"){
+						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');	
+					}else{
+						var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1');
+					}
 				}else if (ridx == 2){
 					var opt_selecter02_2 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_2');	
 				}else if (ridx == 3){
@@ -1182,7 +1206,6 @@
 				}
 			}
 			
-			
 		});
 		
 	}
@@ -1205,25 +1228,25 @@
 		params.goodsOtherGb = "tmtb";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
-//		fnGoodsTmtbSearch(params);
+		fnGoodsTmtbSearch(params);
 		
 		// 함께본 상품(ajax html)
 		params.goodsOtherGb = "together";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
-		//		fnGoodsTogetherSearch(params);
+		fnGoodsTogetherSearch(params);
 		
 		// 추천 상품(ajax html)
 		params.goodsOtherGb = "recommend";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
-		//		fnGoodsRecommendSearch(params);
+		fnGoodsRecommendSearch(params);
 		
 		// 비슷한 상품(ajax html)
 		params.goodsOtherGb = "like";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
-		//		fnGoodsLikeSearch(params);
+		fnGoodsLikeSearch(params);
 	
 		
 		// 상품 대표설명 > 좌측 상품썸네일 navi, 우측 상품정보 고정 
@@ -1394,18 +1417,6 @@
 			},
 		});			
 		
-
-		//alert -쇼핑백담기
-		/* document.getElementById("btn_add_cart").onclick = function(){
-			mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
-				cancelBtnText: "계속 쇼핑하기",
-				sureBtnText: "쇼핑백 가기",
-				sureBtnClick: function(){
-					location.href=''; 	//내 쇼핑백 이동url
-				}
-			});
-		}; */
-		
 		fnOptionSoldout();
 		
 		// 광고 스크립트용

+ 6 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html

@@ -23,7 +23,12 @@
 			<!-- 페이지특정 클래스 = myCoupon -->
 			<div class="cont_body">
 				<div class="lnb">
-					<!-- 마이페이지 lnb 영역 -->
+					<div class="lnb_tit">
+					<h2>마이페이지</h2>
+					</div>
+					<div class="lnb_list">
+						<ul id="mypageLnbList"></ul>
+					</div>
 				</div>
 				<div class="cont my_cont">
 					<div class="sec_head">
@@ -119,7 +124,6 @@
 			</div>
 		</div>
 		<!-- // CONT-BODY -->
-
 		<!-- 쿠폰 사용 내역 팝업 -->
 		<div class="modal fade dp_coupon_pop"  id="coupon_modal_02" tabindex="-1" role="dialog"	aria-labelledby="PopupBasicLabel" aria-hidden="true"></div>
 

+ 11 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -19,12 +19,18 @@
 
 	<th:block layout:fragment="content">
 		<!--  container -->
-		<div class="content myVoucher">
+	<div class="content myVoucher">
+		<div class="cont_body">
 			<!-- 페이지특정 클래스 = myVoucher -->
 			<div class="cont_body">
-			<div class="lnb">
-						<!-- 마이페이지 lnb 영역 -->
+				<div class="lnb">
+							<div class="lnb_tit">
+						<h2>마이페이지</h2>
 					</div>
+					<div class="lnb_list">
+						<ul id="mypageLnbList"></ul>
+					</div>
+				</div>
 				<div class="cont">
 					<div class="sec_head">
 						<h3 class="subH1">상품권</h3>
@@ -113,6 +119,8 @@
 			</div>
 		</div>
 		<!-- // CONT-BODY -->
+		</div>
+	</div>
 <script th:inline="javascript">
 	var date = new Date();
 	var year = date.getFullYear();

+ 210 - 9
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -18,7 +18,7 @@
 <body>
 	<th:block layout:fragment="content">
 		<!--  container -->
-		<div id="container" class="container dp">
+		<div id="container" class="container dp" th:with="frontUrl=${@environment.getProperty('domain.front')}, goodsView=${@environment.getProperty('upload.goods.view')}">
 			<div class="breadcrumb">
 				<ul>
 					<li class="bread_home"><a href="javascript:void(0);"
@@ -46,7 +46,28 @@
 								<!-- 상단배너 -->
 							</div>
 							<th:block th:each="a, template : ${templateOrd}">
-								<div class="coner_item01" th:id="${a.tmplType}"></div>
+							<th:block th:if="${a.tmplType == 'G082_10'}">
+									<div class="coner_item01" th:id="${a.tmplType}"></div>
+								</th:block>
+							<th:block th:if="${a.tmplType == 'G082_20'}">
+									<div class="coner_item01" th:id="${a.tmplType}"></div>
+								</th:block>
+							<th:block th:if="${a.tmplType == 'G082_30'}">
+									<div class="coner_item01" th:id="${a.tmplType}"></div>
+								</th:block>
+							<th:block th:if="${a.tmplType == 'G082_40'}">
+									<div class="coner_item01" th:id="${a.tmplType}"></div>
+								</th:block>
+								<th:block th:if="${a.tmplType == 'G082_50'}">
+									<div class="coner_item01" th:id="${a.tmplType + a.planContSq}"></div>
+								</th:block>
+								<th:block th:if="${a.tmplType == 'G082_51'}">
+									<div class="coner_visual dp_recommend_item" th:id="${a.tmplType + a.planContSq}"></div>
+								</th:block>
+								<th:block th:if="${a.tmplType == 'G082_52'}">
+									<div class="coner_item01" th:id="${a.tmplType + a.planContSq}"></div>
+								</th:block>
+								
 							</th:block>
 							<div class="coner_front">
 								<div class="promotion_visual" th:if="${fsrcInfoBtm != null}" th:utext="${fsrcInfoBtm.fsrcPc}"></div>
@@ -195,6 +216,13 @@ let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
 let plan = [[${planInfo}]];
 let image = [[${imageInfo}]];
+let goods1 = [[${goods1Info}]];
+let goods2 = [[${goods2Info}]];
+let goods4 = [[${goods4Info}]];
+let template =[[${templateOrd}]];
+let _mall = [[${@environment.getProperty('domain.front')}]];
+let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
+let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 
 if(review != null || review != ''){
 		
@@ -213,9 +241,11 @@ if(review != null || review != ''){
 		html += '					<a href="javascript:void();" onclick="fnPlanReviewDetail(\''+review[i].reviewSq+'\');">';
 		html += '						<div class="lap">';
 		html += '							<div class="pic">';
-		html += '								<span class="thumb"';
-		html += '									style="background-image: url('+ _imgUrl +'/'+review[i].reviewSysImg +');"></span>';
-		html += '								<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->';
+		if (review[i].fileGb == 'M') { 
+			html += '								<span class="thumb mov" style="background-image: url('+ imgUrl +'/'+review[i].reviewSysImg +');"></span>';	
+		}else{
+			html += '								<span class="thumb" style="background-image: url('+ imgUrl +'/'+review[i].reviewSysImg +');"></span>';			
+		}
 		html += '							</div>';
 		html += '							<div class="info">';
 		html += '								<div>';
@@ -247,7 +277,7 @@ if(review != null || review != ''){
 		html += '									<img alt="" class="vLHTC pd_img" src="'+ _imgUrl +'/'+review[i].sysImgNm +'">';
 		html += '								</div>';
 		html += '								<div class="itemName">'+review[i].goodsNm+'</div>';
-		html += '								<p class="itemPrice">'+review[i].currPrice+'원</p>';
+		html += '								<p class="itemPrice">'+comma(review[i].currPrice)+'원</p>';
 		html += '							</a>';
 		html += '						</div>';
 		html += '					</div>';
@@ -282,12 +312,12 @@ if(coupon != null || coupon != ''){
 		if (coupon[i].dcWay == '할인율') {
 			html += '							<span> <span><em>'+coupon[i].dcPval+'%</em></span>';
 		}else{
-			html += '							<span><em>'+coupon[i].dcPval+'</em>원</span>'; 
+			html += '							<span><em>'+comma(coupon[i].dcPval)+'</em>원</span>'; 
 		}
 		
 		
 		html += '						</p>';
-		html += '						<p class="cp_condition">'+coupon[i].buyLimitAmt+'원 이상 구매 시 최대 ' +coupon[i].maxDcAmt +'원 할인';
+		html += '						<p class="cp_condition">'+comma(coupon[i].buyLimitAmt)+'원 이상 구매 시 최대 ' +comma(coupon[i].maxDcAmt) +'원 할인';
 		if (coupon[i].custPubLimitQty != 0) {
 			html += '								<span>1인 최대 '+coupon[i].custPubLimitQty+'장</span>';	
 		}
@@ -345,7 +375,7 @@ if(image != null || image != ''){
 	
 	for (var i = 0; i < image.length; i++) {
 		html += '                	<div class="swiper-slide">';
-		html += '                    	<img alt="" src="'+ _imgUrl +'/planning/'+image[i].itemVal +'">';
+		html += '                    	<img alt="" src="'+ imgUrl +'/planning/'+image[i].itemVal +'">';
 		html += '                	</div>';
 	}
 	html += '            	</div>';
@@ -357,7 +387,151 @@ if(image != null || image != ''){
 	
 	$("#G082_30").append(html);
 }
+
+if(goods1 != null || goods1 != ''){
+	var array = [];
+
+	for (var j = 0; j < template.length; j++) {
+		if(template[j].tmplType == 'G082_50'){
+			array.push(template[j].planContSq);
+		}
+		
+	}	
+	
+	for (var i = 0; i < template.length; i++) {
+		var html = '';
+		
+		if(template[i].tmplType == 'G082_50' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
+			html += '<div class="dp_listItems_wrap"> ';
+			html += '    <div>';
+			if (template[i].linkUrl != null || template[i].linkUrl != '') { /* 링크 변경 예정 */
+				html += '        <a href="http://'+template[i].linkUrl+'" target="_blank">'+template[i].title+'</a>';
+			}else{
+				html += '        <a href="javascript:void(0)">'+template[i].title+'</a>';
+			}
+			
+			html += '    </div>';
+			html += '    <div class="dp_listItems_cont">';
+			html += '        <ul>';
+			
+			for (var j = 0; j < goods1.length; j++) {
+				if (goods1[j].planContSq == template[i].planContSq) {
+					html += '            <li>';
+					html += '                <div class="dp_listItems">';
+					html += '                    <div class="dp_listItems_img">';
+					html += '                        <img src="'+ goodsView +'/'+goods1[j].sysImgNm +'" alt="">';
+					html += '                    </div>';
+					html += '                    <div class="dp_listItems_info">';
+					html += '                        <div class="dp_listItems_brand">'+goods1[j].brandKnm+'</div>';
+					html += '                        <div class="dp_listItems_name">'+goods1[j].goodsNm+'</div>';
+					html += '                        <div class="dp_listItems_price">';
+					html += '                            <span class="price">'+comma(goods1[j].currPrice)+'</span>';
+					if (goods1[j].currPrice != goods1[j].listPrice) {
+						html += '                            <del>'+comma(goods1[j].listPrice)+'</del>';
+						html += '                            <span class="percent">'+Math.floor(goods1[j].dcRate)+'%</span>';
+					}
+					
+					html += '                        </div>';
+					//html += '                        <div class="itemComment">#주문 폭주 상품</div>';
+					html += '                        <div class="ui_row">';
+					html += '                            <button type="button" class="btn btn_default" onclick="location.href=\''+_mall+'/goods/detail/form?goodsCd='+goods1[j].goodsCd+'\'"><span>자세히 보기</span></button>';
+					html += '                        </div>';
+					html += '                    </div>';
+					html += '                </div>';
+					html += '            </li>';
+						
+				}
+			}
+			html += '        </ul>';
+			html += '    </div>';
+			html += '</div>';
+			$("#G082_50" +array[0]).append(html);
+		}
+		
+		if($("#G082_50" +template[i].planContSq).length){
+			array.shift();
+		}
+	}
+
+}
 	
+if(goods2 != null || goods2 != ''){
+	var array = [];
+
+	for (var j = 0; j < template.length; j++) {
+		if(template[j].tmplType == 'G082_51'){
+			array.push(template[j].planContSq);
+		}
+	}	
+	for (var i = 0; i < template.length; i++) {
+		var html = '';
+		
+		if(template[i].tmplType == 'G082_51' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
+			//html+='<div class="coner_visual dp_recommend_item">';
+			html+='    <div class="dp_banner_slide">';
+			html+='        <div class="slide_head">';
+			console.log(template[i].linkUrl);
+			if (template[i].linkUrl != null || template[i].linkUrl != ' ' ||typeof template[i].linkUrl != 'undefined') { /* 링크 변경 예정 */
+				html+='            <a href="http://'+template[i].linkUrl+'" target="_blank">'+template[i].title+'</a>';
+			}else{
+				html+='            <a href="javascript:void(0)">'+template[i].title+'</a>';
+			}
+			
+			html+='        </div>';
+			html+='        <div class="swiper-container dp_lookbook_case2">';
+			html+='            <div class="swiper-wrapper ">';
+			
+	  	  for (var j = 0; j < goods2.length; j++) {
+				if (goods2[j].planContSq == template[i].planContSq) {
+					html+='                <div class="swiper-slide">';
+					html+='                    <div class="item_prod">';
+					html+='                        <div class="item_state">';
+					html+='                            <a href="'+_mall+'/goods/detail/form?goodsCd='+goods2[j].goodsCd+'" class="itemLink">';
+					html+='                                <div class="itemPic">';
+					html+='                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+goods2[j].sysImgNm +'">';
+					html+='                                </div>';
+					html+='                                <p class="itemBrand">'+goods2[j].brandKnm+'</p>';
+					html+='                                <div class="itemName">'+goods2[j].goodsNm+'</div>';
+					html+='                               <p class="itemPrice">'+comma(goods2[j].currPrice);
+					if (goods2[j].currPrice != goods2[j].listPrice) {
+						html+='                                    <span class="itemPrice_original">'+comma(goods2[j].listPrice)+'</span>';
+						html+='                                    <span class=" itemPercent">'+Math.floor(goods2[j].dcRate)+'%</span>';
+					}
+					
+					html+='                                </p>';
+					//html+='                                <div class="itemComment">#주문 폭주 상품</div>';
+					html+='                            </a>';
+					html+='                        </div>';
+					html+='                    </div>';
+					html+='                </div>                ';
+				}
+			} 
+		 
+			html+='            </div>';
+			html+='        </div>';
+			html+='        <div class="swiper-button-prev "></div>';
+			html+='        <div class="swiper-button-next "></div>';
+			html+='        <div class="swiper-pagination"></div>';
+			html+='    </div>';
+			//html+='</div>';
+			
+			$("#G082_51" +array[0]).append(html);
+		}
+		
+		if($("#G082_51" +template[i].planContSq).length){
+			array.shift();
+		}
+	}
+
+		
+}
+
+//세번째 자리 콤마찍기 (숫자만 포함, 소수점자리 구분)
+function comma(num){
+return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+}
+
+
 </script>
 		<script type="text/javascript">
 	    // 컨텐츠 호출
@@ -406,6 +580,33 @@ if(image != null || image != ''){
 					prevEl: '.dp_foot_banner .swiper-button-prev',
 				},
 			});
+            var dp_foot_banner_slide = new Swiper ('.dp_foot_banner .swiper-container', {
+                loop: false,
+                slidesPerView: 5,
+                spaceBetween: 20,
+                speed : 800,
+                navigation: {
+                    nextEl: '.dp_foot_banner .swiper-button-next',
+                    prevEl: '.dp_foot_banner .swiper-button-prev',
+                },
+            });
+
+            var dp_foot_banner_slide02 = new Swiper ('.dp_recommend_item .dp_lookbook_case2', {
+                loop: false,
+                slidesPerView: 2,
+                slidesPerGroup: 2,
+                spaceBetween: 0,
+                speed : 800,
+                navigation: {
+                    nextEl: '.dp_recommend_item .swiper-button-next',
+                    prevEl: '.dp_recommend_item .swiper-button-prev',
+                },
+                pagination: {
+                    el: '.dp_recommend_item .swiper-pagination',
+                    clickable: true,
+                },
+            });
+
             
             //내부앵커이동
             $(".bullet_sticky_nav li a").on("click", function(){

+ 10 - 5
src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html

@@ -19,7 +19,7 @@
 <body>
 <th:block layout:fragment="content">
 <!--  container -->
-	<div id="container" class="container dp">
+	<div id="container" class="container dp" th:with="frontUrl=${@environment.getProperty('domain.front')}, goodsView=${@environment.getProperty('upload.goods.view')}">
 		<div class="breadcrumb"> 
 			<ul>
 				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
@@ -87,12 +87,12 @@
                                     <ul class="prod_list clear">
                                      <th:block th:each="goodsList, k : ${goodsList}">
                                       <th:block th:if="${PlanData.planSq} == ${goodsList.planSq} and ${goodsList.goodsCd} != null">
-                                        <li>
+                                        <li th:onclick="fnPlanDetailSearch([[${goodsList.goodsCd}]])">
                                             <div class="item_prod">
                                                 <div class="item_state">
-                                                    <a href="#none" class="itemLink">
+                                                    <a href="javascript:void(0);" class="itemLink">
                                                         <div class="itemPic">
-                                                            <img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsList.sysImgNm}">
+                                                            <img alt="" class="vLHTC pd_img" th:src="${goodsView + '/' + goodsList.sysImgNm}">
                                                         </div>
                                                         <div class="itemName" th:text="${goodsList.goodsNm}"></div>
                                                         <p class="itemPrice" th:text="${#numbers.formatInteger(goodsList.currPrice, 0,'COMMA')} + '원'"></p>
@@ -105,8 +105,8 @@
                                    
                                     </ul>
                                 </div>
+                                </div>
                             </div>
-                            </th:block>
                         </div>
                     </div>
                 </div>
@@ -128,6 +128,11 @@ function planDetailSearch(obj) {
 			});
 
 }
+
+var fnPlanDetailSearch = function(obj) {
+	var goodsCd = obj;
+	cfnGoToPage(_PAGE_GOODS_DETAIL +  goodsCd);
+}
 </script>
 
 </th:block>