فهرست منبع

Merge remote-tracking branch 'origin/bin2107' into order

card007 5 سال پیش
والد
کامیت
b8767b9a19
30فایلهای تغییر یافته به همراه395 افزوده شده و 141 حذف شده
  1. 20 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  2. 10 4
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  3. 3 4
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  4. 1 0
      src/main/java/com/style24/persistence/domain/Contents.java
  5. 3 0
      src/main/java/com/style24/persistence/domain/GoodsCompose.java
  6. 53 51
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  7. 6 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  8. 5 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  9. 32 6
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  10. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  11. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  12. 3 3
      src/main/webapp/WEB-INF/views/mob/SigninFormMob.html
  13. 12 10
      src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html
  14. 3 3
      src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html
  15. 14 10
      src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html
  16. 2 1
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  17. 72 8
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  18. 3 3
      src/main/webapp/WEB-INF/views/web/SigninFormWeb.html
  19. 17 7
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  20. 2 2
      src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html
  22. 3 1
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  23. 3 2
      src/main/webapp/WEB-INF/views/web/error/InaccessWeb.html
  24. 23 7
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  25. 63 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  26. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  27. 2 1
      src/main/webapp/biz/goods.js
  28. 7 0
      src/main/webapp/ux/pc/css/common.css
  29. 9 5
      src/main/webapp/ux/pc/css/layout.css
  30. 15 1
      src/main/webapp/ux/pc/css/main.css

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

@@ -422,4 +422,24 @@ public interface TsfPlanningDao {
 	 */
 	void deleteEntryReplyAttach(Plan plan);
 	
+	/**
+	 * 기획전/이벤트 접근 고객 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	Plan getCustomerGubunAccessibleList(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 접근 고객 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	Collection<Plan> getCustomerGradeAccessibleList(Plan plan);
+	
 }

+ 10 - 4
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -140,18 +140,23 @@ public class TsfPlanningService {
 		if ("N".equals(planningDao.getNewCustomerAccessibleYn(plan))) {
 			msg = "신규회원만 접근 가능합니다.";
 		}
-
+		
 		if (TsfSession.isLogin()) {
 			// 고객구분접근가능여부 조회
 			plan.setCustGb(TsfSession.getCustGb());
 			if ("N".equals(planningDao.getCustomerGubunAccessibleYn(plan))) {
-				msg = TsfSession.getInfo().getCustGbNm() + "만 접근이 가능합니다.";
+				msg = planningDao.getCustomerGubunAccessibleList(plan).getCustGb() + "만 접근이 가능합니다.";
 			}
 
+			String custGrade = "";
 			// 고객등급접근가능여부 조회
 			plan.setCustGrade(TsfSession.getInfo().getCustGrade());
 			if ("N".equals(planningDao.getCustomerGradeAccessibleYn(plan))) {
-				msg = TsfSession.getInfo().getCustGradeNm() + " 회원만 접근 가능합니다.";
+				Iterator<Plan> iter = planningDao.getCustomerGradeAccessibleList(plan).iterator();
+				while (iter.hasNext()) {
+					custGrade += iter.next().getCustGrade()+ " ";
+				}
+				msg = custGrade+ " 회원만 접근 가능합니다.";
 			}
 		}
 
@@ -159,7 +164,8 @@ public class TsfPlanningService {
 			// 웹제휴채널접근가능여부 조회
 			plan.setAfLinkCd(TsfSession.getAttribute("afLinkCd"));
 			if ("N".equals(planningDao.getAfLinkAccessibleYn(plan))) {
-				msg = commonDao.getAfLinkName(TsfSession.getAttribute("afLinkCd")) + " 채널만 접근 가능합니다.";
+				//msg = commonDao.getAfLinkName(TsfSession.getAttribute("afLinkCd")) + " 채널만 접근 가능합니다.";
+				msg = "제휴 채널을 통해서만 접근 가능합니다. ";
 			}
 		}
 

+ 3 - 4
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -335,6 +335,7 @@ public class TsfPlanningController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
+		coupon.setPlanCouponStat("Y");
 		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningCouponDetailForm"));
 		return mav;
@@ -678,14 +679,12 @@ public class TsfPlanningController extends TsfBaseController {
 						coupon.setRegNo(TsfSession.getInfo().getCustNo());
 						coupon.setUpdNo(TsfSession.getInfo().getCustNo());
 						// 이거 공통코드 변경예정.. 밑에
-						coupon.setPubReason("G068_60");
-						coupon.setPubReasonDtl("이벤트출석체크");
+						coupon.setPubReason("G068_91");
+						coupon.setPubReasonDtl("출석체크");
 						coupon.setEndAlimSendYn("N");
 						coreCouponService.saveCouponIssue(coupon);
 						String msg =  "축하합니다. " + toNumFormat(pointAmt) + " 포인트와 " + toNumFormat(coupon.getDcVal()) +coupon.getDcWay() + " 할인쿠폰이 지급 되었습니다!";
 						result.set("msg", msg);
-						
-						
 					}
 
 				}else {

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

@@ -52,6 +52,7 @@ public class Contents extends TscBaseDomain {
 	private String brandGroupNm;	// 브랜드그룹이름
 	private String brandGroupImg;	// 브랜드그룹이미지경로
 	private String mdTitle;			// MD타이틀
+	private String html;
 
 	private String viewDt;			// 미리보기일시
 	private String preview;			// 미리보기여부

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

@@ -38,6 +38,9 @@ public class GoodsCompose extends TscBaseDomain {
 	private String compsGoodsFullNm;
 	private String colorCd;
 
+	private String goodsGbNm;
+	private String originNm;
+	private String brandGroupNm;
 	private String selfGoodsYn;
 	private String supplyCompCd;
 

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

@@ -813,7 +813,9 @@
 		                       END)                              AS EXPIRE_YN /*만료여부*/
 		            FROM   TB_CUST_COUPON CC
 		            WHERE  1 = 1
+		            <if test="planCouponStat == null and planCouponStat == ''">
 		            AND    CC.CUST_NO = #{custNo}
+		            </if>
 		            AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
 		            AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
 		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
@@ -998,57 +1000,57 @@
 		     , Z.DOWNLOAD_CNT
 		     , Z.OWN_COUPON
 		  FROM (SELECT A.*
-					 , CASE WHEN A.CNT <![CDATA[<=]]> 0 THEN 0
-							WHEN A.CNT > (A.DN_ABLE_CNT * A.ONE_PUB_QTY) THEN (A.DN_ABLE_CNT * A.ONE_PUB_QTY)
-							ELSE A.CNT
-						END AS DOWNLOAD_CNT
-				  FROM (SELECT #{custNo} AS CUST_NO
-							 , C.CPN_ID
-							 , C.CPN_NM
-							 , C.CUST_PUB_LIMIT_QTY
-							 , C.ONE_PUB_QTY
-							 , IF(C.PD_GB = 'P', C.AVAIL_STDT, NOW()) AS AVAIL_STDT
-							 , IF(C.PD_GB = 'P', C.AVAIL_EDDT, CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59')) AS AVAIL_EDDT
-				             , C.END_ALIM_YN
-							 , IFNULL(CC.CPN_CNT, 0) AS DN_CNT
-				             , IF(C.CUST_PUB_LIMIT_QTY = 0 OR C.CUST_PUB_LIMIT_QTY - CC.CPN_CNT > 0, 1, 0) AS DN_ABLE_CNT
-				             , IF(C.TOT_PUB_LIMIT_QTY > 0, C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT, 99999) AS CNT
-				             , (SELECT COUNT(*) FROM TB_CUST_COUPON TCC WHERE CPN_ID = #{cpnId} AND CUST_NO = #{custNo}) AS OWN_COUPON
-						  FROM TB_COUPON C
-						 INNER JOIN TB_COUPON_CUST_GBN CCGB
-							ON C.CPN_ID = CCGB.CPN_ID
-						   AND CCGB.USABLE_CUST_GB = #{custGb}
-						 INNER JOIN TB_COUPON_CUST_GRADE CCGR
-							ON C.CPN_ID = CCGR.CPN_ID
-						   AND CCGR.USABLE_CUST_GRADE = #{custGrade}
-						  LEFT OUTER JOIN (SELECT CPN_ID
-												, CUST_NO
-												, COUNT(*) AS CPN_CNT
-											 FROM TB_CUST_COUPON
-											GROUP BY CPN_ID, CUST_NO) CC
-							ON C.CPN_ID = CC.CPN_ID
-						   AND CC.CUST_NO = #{custNo}
-						  LEFT OUTER JOIN (SELECT CPN_ID
-												, COUNT(*) AS CPN_CNT
-											 FROM TB_CUST_COUPON
-											GROUP BY CPN_ID) CC2
-							ON C.CPN_ID = CC2.CPN_ID
-						 WHERE C.DOWN_ABL_YN = 'N'
-						    AND C.CPN_ID IN (
-						       					SELECT PCI.ITEM_VAL 
-						       					FROM TB_PLAN_CONTENTS_ITEM PCI 
-						       					WHERE PCI.ITEM_VAL = #{cpnId}
-						       				)
-						   AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
-						   AND C.CPN_STAT = 'G232_11'  -- 진행
-						   AND CASE WHEN C.TOT_PUB_LIMIT_QTY = 0 THEN 1
-									WHEN C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT > 0 THEN 1
-									ELSE 0
-								END = 1
-						   AND IF(C.NEW_CUST_YN = 'Y', (SELECT COUNT(*) FROM TB_CUSTOMER WHERE CUST_NO = #{custNo} AND REG_DT BETWEEN C.CUST_JOIN_STDT AND C.CUST_JOIN_EDDT), 1) = 1
-						   AND IF(C.FIRST_ORD_YN = 'Y', (SELECT COUNT(*) FROM TB_ORDER WHERE CUST_NO = #{custNo} AND ORD_DT BETWEEN C.BUY_STDT AND C.BUY_EDDT), 0) = 0
-						) A
-				) Z
+		            , CASE WHEN A.CNT <![CDATA[<=]]> 0 THEN 0
+		                   WHEN A.CNT > (A.DN_ABLE_CNT * A.ONE_PUB_QTY) THEN (A.DN_ABLE_CNT * A.ONE_PUB_QTY)
+		                   ELSE A.CNT
+		               END AS DOWNLOAD_CNT
+		        FROM (SELECT #{custNo} AS CUST_NO
+		                  , C.CPN_ID
+		                   , C.CPN_NM
+		                   , C.CUST_PUB_LIMIT_QTY
+		                   , C.ONE_PUB_QTY
+		                   , IF(C.PD_GB = 'P', C.AVAIL_STDT, NOW()) AS AVAIL_STDT
+		                   , IF(C.PD_GB = 'P', C.AVAIL_EDDT, CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59')) AS AVAIL_EDDT
+		                   , C.END_ALIM_YN
+		                   , IFNULL(CC.CPN_CNT, 0) AS DN_CNT
+		                   , IF(C.CUST_PUB_LIMIT_QTY = 0 OR C.CUST_PUB_LIMIT_QTY - CC.CPN_CNT > 0, 1, 0) AS DN_ABLE_CNT
+		                   , IF(C.TOT_PUB_LIMIT_QTY > 0, C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT, 99999) AS CNT
+		                   , (SELECT COUNT(*) FROM TB_CUST_COUPON TCC WHERE CPN_ID = #{cpnId} AND CUST_NO = #{custNo}) AS OWN_COUPON
+		                FROM TB_COUPON C
+		               INNER JOIN TB_COUPON_CUST_GBN CCGB
+		                ON C.CPN_ID = CCGB.CPN_ID
+		               AND CCGB.USABLE_CUST_GB = #{custGb}
+		               INNER JOIN TB_COUPON_CUST_GRADE CCGR
+		                ON C.CPN_ID = CCGR.CPN_ID
+		               AND CCGR.USABLE_CUST_GRADE = #{custGrade}
+		                LEFT OUTER JOIN (SELECT CPN_ID
+		                                     , CUST_NO
+		                                     , COUNT(*) AS CPN_CNT
+		                                  FROM TB_CUST_COUPON
+		                                 GROUP BY CPN_ID, CUST_NO) CC
+		                    ON C.CPN_ID = CC.CPN_ID
+		                     AND CC.CUST_NO = #{custNo}
+		                    LEFT OUTER JOIN (SELECT CPN_ID
+		                                          , COUNT(*) AS CPN_CNT
+		                                     FROM TB_CUST_COUPON
+		                                    GROUP BY CPN_ID) CC2
+		                    ON C.CPN_ID = CC2.CPN_ID
+		               WHERE C.DOWN_ABL_YN = 'N'
+		                  AND C.CPN_ID IN (
+		                                    SELECT PCI.ITEM_VAL 
+		                                    FROM TB_PLAN_CONTENTS_ITEM PCI 
+		                                    WHERE PCI.ITEM_VAL = #{cpnId}
+		                                  )
+		                 AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		                 AND C.CPN_STAT = 'G232_11'  -- 진행
+		                 AND CASE WHEN C.TOT_PUB_LIMIT_QTY = 0 THEN 1
+		                          WHEN C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT > 0 THEN 1
+		                          ELSE 0
+		                            END = 1
+		                 AND IF(C.NEW_CUST_YN = 'Y', (SELECT COUNT(*) FROM TB_CUSTOMER WHERE CUST_NO = #{custNo} AND REG_DT BETWEEN C.CUST_JOIN_STDT AND C.CUST_JOIN_EDDT), 1) = 1
+		                 AND IF(C.FIRST_ORD_YN = 'Y', (SELECT COUNT(*) FROM TB_ORDER WHERE CUST_NO = #{custNo} AND ORD_DT BETWEEN C.BUY_STDT AND C.BUY_EDDT), 0) = 0
+		              ) A
+		     ) Z
 		 <!-- WHERE Z.DOWNLOAD_CNT <![CDATA[>=]]> 0 -->
 	</select>
 

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

@@ -140,6 +140,9 @@
 		     , SUB_TEXT2       /*서브텍스트2*/
 		     , SUB_TEXT3       /*서브텍스트3*/
 		     , SUB_TEXT4       /*서브텍스트4*/
+		     <if test='contentsLoc != null and contentsLoc =="SGNB001"'>
+			 , HTML
+		     </if>
 		     , BRAND_GROUP_NO  /*브랜드그룹번호*/
 		     <if test='contentsLoc != null and contentsLoc =="SMM007"'>
 		     , BRAND_GROUP_NM
@@ -182,6 +185,9 @@
 		             , A.SUB_TEXT2                                          /*서브텍스트2*/
 		             , A.SUB_TEXT3                                          /*서브텍스트3*/
 		             , A.SUB_TEXT4                                          /*서브텍스트4*/
+		             <if test='contentsLoc != null and contentsLoc =="SGNB001"'>
+		             , A.HTML
+					 </if>
 		             , A.BRAND_GROUP_NO                                     /*브랜드그룹번호*/
 		             <if test='contentsLoc != null and contentsLoc =="SMM007"'>
 		             , (SELECT FN_GET_BRAND_GROUP_NM(A.BRAND_GROUP_NO)) AS BRAND_GROUP_NM

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

@@ -885,6 +885,9 @@
 		     , DATE_FORMAT(G.SELL_EDDT ,'%Y%m%d%H%i%S') AS SELL_EDDT
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
 		     , A.COMPS_CURR_PRICE
+		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
+		     , FN_GET_CODE_NM('G076',G.ORIGIN_CD) AS ORIGIN_NM
+		      , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		FROM TB_GOODS_COMPOSE A
 		INNER JOIN TB_GOODS G ON A.COMPS_GOODS_CD = G.GOODS_CD
 		                      AND G.SELF_MALL_YN = 'Y' -- 자사몰 노출
@@ -893,6 +896,8 @@
 		INNER JOIN TB_SITE_BRAND SB ON B.BRAND_CD  = SB.BRAND_CD
 		                            AND SB.USE_YN = 'Y'
 		                            AND SB.SITE_CD = #{siteCd}
+		INNER JOIN TB_BRAND_GROUP D ON B.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		                            AND D.USE_YN = 'Y'
 		WHERE A.GOODS_CD = #{goodsCd}
 		AND A.GOODS_TYPE = 'G056_S'
 		AND A.USE_YN = 'Y'

+ 32 - 6
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -92,9 +92,9 @@
 		        FROM   TB_PLAN P
 		        WHERE  P.PLAN_GB = 'P' /*기획전*/
 		        AND    P.SITE_CD = #{siteCd}
-		        <if test="frontGb != null and frontGb != ''">
+		       <!--  <if test="frontGb != null and frontGb != ''">
 		        AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		        </if>
+		        </if> -->
 		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
@@ -160,9 +160,9 @@
 		    AND    P.PLAN_SQ = #{planSq}
 		    AND    P.PLAN_GB = 'P' /*기획전*/
 		    AND    P.SITE_CD = #{siteCd}
-		    <if test="frontGb != null and frontGb != ''">
+		  <!--   <if test="frontGb != null and frontGb != ''">
 		    AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		    </if>
+		    </if> -->
 		    AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		    AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		    AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
@@ -297,6 +297,10 @@
 		   </choose>                       
 		FROM   TAB_PLAN_GOODS2 PG
 		INNER JOIN TAB_GOODS_IMG2 GI ON PG.GOODS_CD = GI.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
+		                             AND W.CUST_NO = #{custNo}
+		</if>
 		WHERE  (SELECT COUNT(*) FROM TAB_PLAN_GOODS) = 0
 		AND PG.NUMB <![CDATA[<=]]> #{maxRow}
 		UNION ALL 
@@ -373,6 +377,28 @@
 		AND    CUST_GB = #{custGb}
 	</select>
 	
+	<!-- 고객구분접근가능리스트 -->
+	<select id="getCustomerGubunAccessibleList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getCustomerGubunAccessibleList */
+		SELECT CASE CUST_GB WHEN 'G100_10' THEN '일반회원'
+		                    WHEN 'G100_20' THEN '임직원' END AS CUST_GB 
+		FROM TB_PLAN_CUST_DIVISION 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
+	<!-- 고객등급접근가능리스트 -->
+	<select id="getCustomerGradeAccessibleList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getCustomerGradeAccessibleList */
+		SELECT CASE CUST_GRADE WHEN 'G110_10' THEN 'VIP'
+		                       WHEN 'G110_20' THEN 'GOLD'
+		                       WHEN 'G110_30' THEN 'SILVER'
+		                       WHEN 'G110_40' THEN 'BRONZE'
+		                       WHEN 'G110_50' THEN 'WELCOME'
+		                       END AS CUST_GRADE
+		FROM TB_PLAN_CUST_GRADE 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
 	<!-- 고객등급접근가능여부 조회 -->
 	<select id="getCustomerGradeAccessibleYn" parameterType="Plan" resultType="String">
 		/* TsfPlanning.getCustomerGradeAccessibleYn */
@@ -494,9 +520,9 @@
 		        FROM   TB_PLAN P
 		        WHERE  P.PLAN_GB IN ('E','C') /*이벤트,출석체크*/
 		        AND    P.SITE_CD = #{siteCd}
-		        <if test="frontGb != null and frontGb != ''">
+		       <!--  <if test="frontGb != null and frontGb != ''">
 		        AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		        </if>
+		        </if> -->
 		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/

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

@@ -20,7 +20,8 @@
 		SELECT IFNULL(SUM(RM_PNT_AMT), 0) AS RM_PNT_AMT
 		FROM   TB_CUST_POINT
 		WHERE  CUST_NO = #{custNo}
-		AND    EXP_BE_DT > NOW();
+		AND    EXP_BE_DT > NOW()
+		AND    EXP_CMP_DT IS NULL
 	</select>
 	
 	<!-- 적립예정 포인트조회-->

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

@@ -501,10 +501,10 @@
 		     , Z.ORD_CAN_CHG_QTY
 		     , Z.ITEMKIND_NM 
 		   	 , Z.ITEMKIND_CD 
-             , Z.SIZE_GB 
-             , Z.REMAIN_DT
-             <if test="reviewStat == 'u'.toString()">
-             , Z.REVIEW_SQ        
+		     , Z.SIZE_GB 
+		     , Z.REMAIN_DT
+		     <if test="reviewStat == 'u'.toString()">
+		     , Z.REVIEW_SQ        
 			 , Z.REVIEW_GB        
 			 , Z.REVIEW_TITLE     
 			 , Z.REVIEW_CONTENT   

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/SigninFormMob.html

@@ -78,17 +78,17 @@
 					<ul class="login_utill">
 						<li class="lu_kakao">
 							<a href="javascript:void(0)" onclick="cfnLoginKakao();">
-								<div class="ico"></div>카카오로<br>시작하기
+								<div class="ico"></div>카카오
 							</a>
 						</li>
 						<li class="lu_naver">
 							<a href="javascript:void(0)" onclick="cfnLoginNaver();">
-								<div class="ico"></div>네이버로<br>시작하기
+								<div class="ico"></div>네이버
 							</a>
 						</li>
 						<li class="lu_yes24">
 							<a href="javascript:void(0)" onclick="cfnLoginYes24();">
-								<div class="ico"></div>YES24로<br>시작하기
+								<div class="ico"></div>YES24
 							</a>
 						</li>
 					</ul>

+ 12 - 10
src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html

@@ -138,8 +138,10 @@
 								</li>
 							</ul>
 						</div>
-						<div class="ui_row mt20">
-							<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_LOGIN);">로그인 하기</button>
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_LOGIN);">로그인 하기</button>
+							</div>
 						</div>
 					</div>
 				</div>
@@ -154,14 +156,14 @@
 								정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
 							</p>
 						</div>
-						<div class="btn_group_block btn_group_md ui_row">
-							<div class="ui_col_6">
-								<button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 									<span>회원가입</span>
 								</button>
 							</div>
-							<div class="ui_col_6">
-								<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+							<div>
+								<button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
 									<span>다시 찾기</span>
 								</button>
 							</div>
@@ -179,9 +181,9 @@
 								<span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
 							</p>
 						</div>
-						<div class="btn_group_block btn_group_md ui_row">
-							<div class="ui_col_12">
-								<button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 									<span>회원가입</span>
 								</button>
 							</div>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html

@@ -48,17 +48,17 @@
 					<ul class="login_utill">
 						<li class="lu_kakao">
 							<a href="javascript:void(0);" onclick="cfnLoginKakao();">
-								<div class="ico"></div>카카오로<br>시작하기
+								<div class="ico"></div>카카오
 							</a>
 						</li>
 						<li class="lu_naver">
 							<a href="javascript:void(0);" onclick="cfnLoginNaver();">
-								<div class="ico"></div>네이버로<br>시작하기
+								<div class="ico"></div>네이버
 							</a>
 						</li>
 						<li class="lu_yes24">
 							<a href="javascript:void(0);" onclick="cfnLoginYes24();">
-								<div class="ico"></div>YES24로<br>시작하기
+								<div class="ico"></div>YES24
 							</a>
 						</li>
 					</ul>

+ 14 - 10
src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html

@@ -32,8 +32,12 @@
             <div class="inner">
                 <div class="registration_nav">
                     <ul class="tab_btn">
-                        <li onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</li>
-                        <li class="active">비밀번호찾기</li>
+                        <li>
+                            <a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
+                        </li>
+                        <li class="active">
+                            <a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a>
+                        </li>
                     </ul>
                 </div>
                 <div class="registration_tap">
@@ -139,14 +143,14 @@
                                 정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
                             </p>
                         </div>
-                        <div class="btn_group_block btn_group_md ui_row">
-                            <div class="ui_col_6">
-                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                        <div class="btn_group_flex">
+                            <div>
+                                <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
                                     <span>회원가입</span>
                                 </button>
                             </div>
-                            <div class="ui_col_6">
-                                <button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
+                            <div>
+                                <button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
                                     <span>다시 찾기</span>
                                 </button>
                             </div>
@@ -164,9 +168,9 @@
                                 <span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
                             </p>
                         </div>
-                        <div class="btn_group_block btn_group_md ui_row">
-                            <div class="ui_col_12">
-                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                        <div class="btn_group_flex">
+                            <div>
+                                <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
                                     <span>회원가입</span>
                                 </button>
                             </div>

+ 2 - 1
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -790,7 +790,8 @@
 	// 컨텐츠 호출
 	$(document).ready(function() {
 		setHtop();
-		$(".it_nav .btn").eq(0).trigger('click');
+		let randomNum = Math.floor( ( Math.random() * 4 ) );
+		$(".it_nav .btn").eq(randomNum).trigger('click');
 
 		// 몰메인 <br> 태그
 		$('.mainTitle').each(function (){

+ 72 - 8
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -233,12 +233,24 @@
 				</div>
 				<!-- //상품설명 노출 -->
 				<!-- 관리자 에디터입력 내용 노출 -->
+				<div class="mdhtml_box">
 					<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
-				<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
+				<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 					</th:block>
-				<!-- //관리자 에디터입력 내용 노출 -->
+				<!-- 관리자 에디터입력 내용   공지 html -->
+				<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+				<div class="movblock">
+					<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+					<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+					</th:block>
+					<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+					</th:block>
+				</div>
+				</th:block>
+				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
-				<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
+				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+				</div>	
 				<!-- 착용컷 노출 -->
 				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1.') 
 													or #strings.contains(goodsImgList,'_M2.')
@@ -369,6 +381,7 @@
 					</p>
 					<div class="area_infotbl">
 						<span class="title">상품기본정보</span>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N'} ">
 						<div class="tbl type1">
 							<table>
 								<tbody>
@@ -388,10 +401,14 @@
 										<th>상품명</th>
 										<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 									</tr>
+									<th:block th:if="${goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
 									<tr>
-										<th>제조자</th>
-										<td>한세엠케이(주)==============>노출필요성 확인</td>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
 									</tr>
+									</th:block>
+									</th:block>
 									<tr>
 										<th>제조국</th>
 										<td th:text="${goodsInfo.originNm}">베트남</td>
@@ -399,6 +416,47 @@
 								</tbody>
 							</table>
 						</div>
+						</th:block>
+						<th:block th:unless="${goodsInfo.goodsType == 'G056_N'} ">
+						<th:block th:if="${goodsComposeList != null and !goodsComposeList.empty}">
+						<th:block th:each="goodsCompose, status : ${goodsComposeList}">
+						<div class="tbl type1">
+							<table>
+								<tbody>
+									<tr>
+										<th>상품코드</th>
+										<td th:text="${goodsCompose.compsGoodsCd}">14443216</td>
+									</tr>
+									<tr>
+										<th>상품구분</th>
+										<td th:text="${goodsCompose.goodsGbNm}">병행수입</td>
+									</tr>
+									<tr>
+										<th>브랜드</th>
+										<td th:text="${goodsCompose.brandGroupNm}">TBJ</td>
+									</tr>
+									<tr>
+										<th>상품명</th>
+										<td th:text="${goodsCompose.compsGoodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+									</tr>
+									<th:block th:if="${goodsCompose.goodsNotiList != null and !goodsCompose.goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsCompose.goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
+									<tr>
+										<th>제조국</th>
+										<td th:text="${goodsCompose.originNm}">베트남</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						</th:block>
+						</th:block>
+						</th:block>
 						<p class="t_info dot_info mt10">
 							주문제작 상품의 경우 주문 후 제작되어 판매되는 상품으로 제작 시점부터 반품/교환이 어려울 수 있습니다.
 						</p>
@@ -447,11 +505,17 @@
 											<em class="ico ico_besttag"></em>
 										</div>
 										<div class="lap">
-											<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<th:block th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<div class="pic" >
 												<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
 												<span class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}"  th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
 												</th:block>
 											</div>
+											</th:block>
+											<th:block th:unless="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<div class="pic none" >
+											</div>
+											</th:block>
 											<div class="txt_best_review">
 												<p th:text="${bestReview.reviewContent}">옷</p>
 											</div>
@@ -963,8 +1027,8 @@
 			$objUp.append(tag);
 			fnSetTotalPrice();
 			
-			// 해야하나 말아야하나
-			//$('.pop_option_select').css("display", "none");
+			$('.pop_option_select').css("display", "none");
+			
 			
 		}, "text");
 	}

+ 3 - 3
src/main/webapp/WEB-INF/views/web/SigninFormWeb.html

@@ -83,19 +83,19 @@
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginKakao();">
 									<i class="ico ico_snslogin kakao"></i>
-									<span>카카오로 시작하기</span>
+									<span>카카오</span>
 								</a>
 							</li>
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginNaver();">
 									<i class="ico ico_snslogin naver"></i>
-									<span>네이버로 시작하기</span>
+									<span>네이버</span>
 								</a>
 							</li>
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginYes24();">
 									<i class="ico ico_snslogin yes24"></i>
-									<span>YES24로 시작하기</span>
+									<span>YES24</span>
 								</a>
 							</li>
 						</ul>

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

@@ -755,13 +755,23 @@
 							let tag = '';
 							if(item.contentsType == 'OPEN'){
 								tag +='<div class="bnrtype_open" style="background-color:#'+item.strVar5+';">';
-								tag +=' 	<a href="'+item.strVar1+'" target="">';
-								tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
-								tag +=' 		<div class="open_bnr_area">';
-								tag +=' 			<img src="'+bannerImgUrl+''+item.imgPath2+'" alt=""/>';
-								tag +=' 		</div>';
-								tag +=' 	</a>';
-								tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								if(item.strVar7=='IMG'){
+									tag +=' 	<a href="'+item.strVar1+'" target="">';
+									tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
+									tag +=' 		<div class="open_bnr_area">';
+									tag +=' 			<img src="'+bannerImgUrl+''+item.imgPath2+'" alt=""/>';
+									tag +=' 		</div>';
+									tag +=' 	</a>';
+									tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								}else{
+									tag +=' 	<a href="'+item.strVar1+'" target="">';
+									tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
+									tag +=' 		<div class="open_bnr_area">';
+									tag += '            '+item.html+' ';
+									tag +=' 		</div>';
+									tag +=' 	</a>';
+									tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								}
 								tag +='</div>';
 								if(item.strVar8=='Y'){
 									tag+='<div class="close_bnr_area">';

+ 2 - 2
src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html

@@ -163,7 +163,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_6">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>
@@ -186,7 +186,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_12">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html

@@ -148,7 +148,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_6">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>

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

@@ -820,7 +820,9 @@ $(document).ready( function() {
 	//$("#header").load("head.html");
 	//$("#footer").load("foot.html");
 	$(".tag_list .btn").eq(0).trigger('click');
-	$(".it_nav .btn").eq(0).trigger('click');
+
+	let randomNum = Math.floor( ( Math.random() * 4 ) );
+	$(".it_nav .btn").eq(randomNum).trigger('click');
 });
 
 /* SLIDE - MAIN_VISUAL */

+ 3 - 2
src/main/webapp/WEB-INF/views/web/error/InaccessWeb.html

@@ -50,10 +50,11 @@
 		<div class="wrap notfind system inspect"><!--  페이지 특정 클래스 -->
 			<div class="contGrp">
 				<h2>접근 불가</h2>
-				<p th:text="${inaccessibleMsg}">모바일웹에서만 접근이 가능합니다.</p>
+				<p th:text="${inaccessibleMsg}"></p>
 			</div>
 			<div class="btn_group">
-				<button class="btn btn_dark" onclick="fnGoToHome();"><span>홈으로 이동</span></button>
+				<button class="btn btn_dark" onclick="javascript:history.back(-1);"><span>목록으로 이동</span></button>
+				<button class="btn btn_default" onclick="fnGoToHome();"><span>홈으로 이동</span></button>
 			</div>
 		</div>
 	</div>

+ 23 - 7
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -35,13 +35,25 @@
 	</div>
 	<!-- //상품설명 노출 -->
 	<!-- 관리자 에디터입력 내용   공지 html -->
+	<!-- 관리자 에디터입력 내용   공지 html -->
+	<div class="mdhtml_box">
 		<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
-	<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
+	<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 		</th:block>
 	<!-- 관리자 에디터입력 내용   공지 html -->
+	<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+	<div class="movblock">
+		<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+		<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+		</th:block>
+		<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+		</th:block>
+	</div>
+	</th:block>
+	
 	<!-- 관리자 에디터입력 내용 노출  상단 html -->
-	<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
-		
+	<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+	</div>	
 	<!-- 착용컷 노출 -->
 	<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1.') 
 										or #strings.contains(goodsImgList,'_M2.')
@@ -200,10 +212,14 @@
 							<th>상품명</th>
 							<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 						</tr>
-						<tr>
-							<th>제조자</th>
-							<td >한세엠케이(주)==============>노출필요성 확인</td>
-						</tr>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N' and goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
 						<tr>
 							<th>제조국</th>
 							<td th:text="${goodsInfo.originNm}">베트남</td>

+ 63 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -120,7 +120,7 @@
 								<p>
 									<span class="tit">남은시간</span>
 									<span class="timer">
-										<em id="d-days">0</em>
+										<em id="d-days" style="display:none;">0</em>
 										<em id="d-hours">0</em>
 										<em id="d-minutes">0</em>
 										<em id="d-seconds">0</em>
@@ -623,6 +623,7 @@
 					</div>
 					<div class="area_infotbl">
 						<span class="title">상품기본정보</span>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N'} ">
 						<div class="tbl type1 mt30">
 							<table>
 								<tbody>
@@ -642,10 +643,14 @@
 										<th>상품명</th>
 										<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 									</tr>
+									<th:block th:if="${goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
 									<tr>
-										<th>제조자</th>
-										<td >한세엠케이(주)==============>노출필요성 확인</td>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
 									</tr>
+									</th:block>
+									</th:block>
 									<tr>
 										<th>제조국</th>
 										<td th:text="${goodsInfo.originNm}">베트남</td>
@@ -653,6 +658,47 @@
 								</tbody>
 							</table>
 						</div>
+						</th:block>
+						<th:block th:unless="${goodsInfo.goodsType == 'G056_N'} ">
+						<th:block th:if="${goodsComposeList != null and !goodsComposeList.empty}">
+						<th:block th:each="goodsCompose, status : ${goodsComposeList}">
+						<div class="tbl type1 mt30">
+							<table>
+								<tbody>
+									<tr>
+										<th>상품코드</th>
+										<td th:text="${goodsCompose.compsGoodsCd}">14443216</td>
+									</tr>
+									<tr>
+										<th>상품구분</th>
+										<td th:text="${goodsCompose.goodsGbNm}">병행수입</td>
+									</tr>
+									<tr>
+										<th>브랜드</th>
+										<td th:text="${goodsCompose.brandGroupNm}">TBJ</td>
+									</tr>
+									<tr>
+										<th>상품명</th>
+										<td th:text="${goodsCompose.compsGoodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+									</tr>
+									<th:block th:if="${goodsCompose.goodsNotiList != null and !goodsCompose.goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsCompose.goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
+									<tr>
+										<th>제조국</th>
+										<td th:text="${goodsCompose.originNm}">베트남</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						</th:block>
+						</th:block>
+						</th:block>
 						<p class="t_info dot_info mt20">
 							주문제작 상품의 경우 주문 후 제작되어 판매되는 상품으로 제작 시점부터 반품/교환이 어려울 수 있습니다.
 						</p>
@@ -1471,7 +1517,8 @@
 					if (Number(days) > 0 ){
 						$('#d-days').html(days);	
 					}else{
-						$('#d-days').css('display','none');
+						//$('#d-days').css('display','none');
+						$('#d-days').remove();
 					}
 					$('#d-hours').html(hours);
 					$('#d-minutes').html(minutes);
@@ -1613,6 +1660,18 @@
 		
 	}
 	
+	 $(document).on('click','.option_box [class^="opt_"] .select_custom .select',function(e){
+
+		 let selectHeight = $(this);
+		 let selectHeight02 = selectHeight.outerHeight();
+
+		 if($(this).find('.opt_name').length){
+			 $(this).siblings('.list').css({"top":selectHeight02});
+		 }else{
+			 $(this).siblings('.list').css({"top":"52px"});
+		 }
+	 });
+	
 /*]]>*/
 </script>
 

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

@@ -100,8 +100,8 @@
 						<div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}">
 							<div class="item_state">
 								<a href="javascript:void(0);" class="itemLink" th:onclick="fnOpenGoodsDealDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
-									<div class="shape ranker">
-										<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
+									<div class="shape ranker dealdetail">
+										<span>상품<br><th:block th:text="${#numbers.formatInteger(status.count,2)}">01</th:block></span>
 									</div>
 									<div class="itemPic">
 										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=285'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">

+ 2 - 1
src/main/webapp/biz/goods.js

@@ -67,7 +67,8 @@ var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxO
 			// 모바일에서 작업해야함
 			$("#cartForm  input[name=opt]").each(function(){
 				if ($(this).attr('id') == optCd){
-			//		$(this).prop('checked', true);
+					$("#cartForm  input[name=opt]").parent().find('label').removeClass('on');
+					$(this).parent().find('label').addClass('on');
 				}
 			});
 		}

+ 7 - 0
src/main/webapp/ux/pc/css/common.css

@@ -802,6 +802,13 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemPic .pd_mov {z-index: 3;height: 100%;}
 .itemPic .pd_img {z-index: 2;transition: 0.5s;}
 /* .itemPic .pd_img {position: absolute;width: 100%;width: auto; height: auto;max-height: 500px;top: 50%;left: 50%;transform: translate(-50%,-50%);} */
+.itemOpt{z-index:10;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:111px;padding: 32px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); }
+.itemOpt p{font-size: 12px;line-height: 1.2;padding-bottom: 15px;}
+.itemOpt ul{display: block;margin: 0 auto;width: auto;}
+.itemOpt ul li{font-size: 14px;line-height: 1.2;display: inline-block;margin-left: 10px;}
+.itemOpt ul .none{opacity: 0.5;text-decoration: line-through;}
+.itemOpt ul li:first-child{margin-left: 0px;}
+.itemOpt .exc{font-size: 14px;line-height: 1.2;display: inline-block;margin-left: 10px;}
 .itemBrand {margin: 0px 5px 12px;line-height: 12px;font-size: 12px;font-weight: 300;color: rgb(137, 137, 137);height:12px;}
 .itemComment{margin:20px 5px 0px;line-height: 1; font-size: 14px;font-weight: 300;color: #fd4802;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
 .itemName {	margin: 0px 5px 15px;line-height:20px;font-size: 14px;font-weight: 200;color:#222; height:40px;}

+ 9 - 5
src/main/webapp/ux/pc/css/layout.css

@@ -580,13 +580,14 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .filter_content .sort.tap02 {padding-left:0; padding-right:0;}
 .filter_content .sort.tap02 ul::after {content:''; display: block; clear:both;}
 .filter_content .sort.tap02 ul li {float:left; padding-left:40px; padding-right:40px; margin-bottom:20px;}
-.filter_content .sort.tap03 ul li {border-bottom: 1px solid #ccc;}
+.filter_content .sort.tap03 ul li {position: relative; border-bottom: 1px solid #ccc; padding-left: 100px;}
 .filter_content .sort.tap03 ul li::after {content: ''; display: block; clear: both;}
 .filter_content .sort.tap03 ul li:first-child {padding-bottom: 30px;}
+.filter_content .sort.tap03 ul li:first-child strong {top: 2px;}
 .filter_content .sort.tap03 ul li:nth-child(2) {padding-top: 30px;padding-bottom: 30px;}
 .filter_content .sort.tap03 ul li:last-child {padding-top: 30px; border: none;}
-.filter_content .sort.tap03 ul li strong {/*margin-right:40px;*/width:100px;color:#222; font-weight:300; height: 21px;float: left;}
-.filter_content .sort.tap03 ul li label {color:#666; margin-right:40px; line-height: 1.4; display: inline-block; word-break:keep-all;position:relative;}
+.filter_content .sort.tap03 ul li strong {/*margin-right:40px;*/width:100px;color:#222; font-weight:300; height: 21px;float: left; position: absolute; top: 32px; left: 0;}
+.filter_content .sort.tap03 ul li label {color:#666; margin-right:40px; margin-bottom: 3px; line-height: 1.4; display: inline-block; word-break:keep-all;position:relative;}
 .filter_content .sort.tap03 ul li label:last-child {margin-right:0}
 .filter_content .sort.tap03 ul li label span {}
 .filter_content .sort.tap03 ul li .size_btn,
@@ -1905,7 +1906,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.cmt_wrap .pics .picsThumbs {max-width: 100%; max-height: 100%;}
 	.cmt_wrap .cmt_write .cmt_tarea {margin-bottom: 20px;}
 	.cmt_wrap .cmt_write .cmt_tarea textarea {background: #fff; padding: 20px; resize: none; width: 100%; height: 140px; font-size: 14px; line-height: 1.3;}
-	.cmt_wrap .cmt_write .cmt_thumb + .btn {display:block; margin-top:40px; margin-left:auto; margin-right:auto; width:220px; height:60px; font-size:13px; font-weight:300;}
+	.cmt_wrap .cmt_write .cmt_thumb + .btn {display:block; margin-top:40px; margin-left:auto; margin-right:auto; width:220px; height:60px; font-size:18px; font-weight:300;}
 	.cmt_wrap .cmt_group {margin-top:90px}
 	.cmt_wrap .cmt_group .cmt_list_tit {padding-bottom:30px; border-bottom:1px solid #ddd;}
 	.cmt_wrap .cmt_group .cmt_list_tit strong {margin-right: 10px; font-size: 26px; font-weight: 500;}
@@ -4253,7 +4254,10 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.survey .survey_wrap .survey_con .survey_row .answer textarea {height:220px; padding:20px;}
 	.survey .survey_wrap .survey_con .survey_row .answer ul {/*margin-top:-30px;*/ margin-right:-60px}
 	.survey .survey_wrap .survey_con .survey_row .answer ul li {float:left; position:relative; margin-bottom:42px; margin-right:48px;}
-	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'].etc_input {visibility:hidden;margin-left:20px; width:300px !important; max-width:300px !important; height:52px;}
+	.survey .survey_wrap .survey_con .survey_row .answer ul li:last-child {} 
+	
+	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'].etc_input {visibility:hidden;margin-left:20px; width:300px !important; max-width:300px !important; height:52px; margin-top: -33px;}
+	.survey .survey_wrap .survey_con .survey_row .answer ul li .etc_radio:checked + label + .etc_input {margin-top: 0;}
 	.survey .survey_wrap .survey_con .btn_wrap {margin-top:20px} 
 
 	/* ev_rank 회원등급 혜택 */

+ 15 - 1
src/main/webapp/ux/pc/css/main.css

@@ -582,7 +582,21 @@ header.minify .common_header.br_header::after {bottom:-565px;}
 .brand_main .post-visual .swiper-slide .txtWrap {opacity:0; position:absolute; padding-left:0px; top:110px; bottom:auto; left:0px; right:auto; z-index:1;}
 .brand_main .post-visual .txtWrap dt {font-size:0; padding-bottom:0;}
 .brand_main .post-visual .swiper-slide-active {opacity:1;}
-.brand_main .post-visual .swiper-slide-active .txtWrap {opacity:1;}
+.brand_main .post-visual .swiper-slide-active .txtWrap {animation-name: fade-in;animation-duration: 1.5s;animation-delay: 1s;animation-fill-mode: both;}
+
+@keyframes fade-in {
+	from {
+	  opacity: 0;
+	  left:0;
+	  transform: translateY(100px);
+	}
+	to {
+	  opacity: 1;
+	  left:0;
+	  transform: translateY(0);
+	}
+}
+
 .brand_main .post-visual .swiper-slide-prev {opacity:0;}
 .brand_main .post-visual .swiper-slide-next {padding-left:0px; padding-right:440px;}
 .brand_main .post-visual .swiper-controls {position:absolute; width:auto; bottom:100px; left:190px; padding-right:15px; z-index:10;}