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

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

tsit14 5 лет назад
Родитель
Сommit
ae2d709958
29 измененных файлов с 275 добавлено и 319 удалено
  1. 2 0
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 2 2
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  3. 4 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  4. 1 0
      src/main/java/com/style24/persistence/domain/Contents.java
  5. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  6. 40 156
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  7. 1 0
      src/main/resources/config/application-style.yml
  8. 16 0
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  9. 8 0
      src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html
  10. 16 0
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  11. 8 0
      src/main/webapp/WEB-INF/views/mob/display/OutletMainFormMob.html
  12. 4 5
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  13. 6 10
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  14. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponFormMob.html
  15. 8 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html
  16. 39 92
      src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html
  17. 10 7
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  18. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypagePointFormMob.html
  19. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  20. 4 5
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  21. 8 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListInfoMob.html
  22. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListFormMob.html
  23. 16 0
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  24. 8 3
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  25. 16 0
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  26. 8 0
      src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html
  27. 4 4
      src/main/webapp/ux/mo/css/common_m.css
  28. 12 10
      src/main/webapp/ux/mo/css/layout_m.css
  29. 28 19
      src/main/webapp/ux/mo/css/style24_m.css

+ 2 - 0
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -68,6 +68,7 @@ public class TsfCartService {
 	 * 세트 : goodsCd,
 	 * @param params
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap saveCartInfo(Collection<Cart> params) {
 		GagaMap result = new GagaMap();
 		List<Integer> cartSqList = new ArrayList<>();
@@ -984,6 +985,7 @@ public class TsfCartService {
 		order.setCartGoodsList(cartGoodsList);
 	}
 
+	@Transactional("shopTxnManager")
 	public void deleteCart(Cart param) {
 		cartDao.deleteCart(param);
 	}

+ 2 - 2
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -451,7 +451,7 @@ public class TsfOrderService {
 			result.setPayGb("O");
 
 			// TB_PAYMENT 등록. 실패시 PG 환불.
-			if(coreOrderDao.insertPayment(result) < 1) {
+			if(coreOrderDao.updatePaymentOrderComplete(result) < 1) {
 				payment.setLeftAmt(0);
 				coreKakaoPayService.kakaoPayRollBack(payment);
 
@@ -489,7 +489,7 @@ public class TsfOrderService {
 			result.setPayGb("O");
 
 			// TB_PAYMENT 등록. 실패시 PG 환불.
-			if(coreOrderDao.insertPayment(result) < 1) {
+			if(coreOrderDao.updatePaymentOrderComplete(result) < 1) {
 				payment.setLeftAmt(0);
 				coreNaverPayService.naverPayRollBack(payment);
 

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

@@ -1228,8 +1228,11 @@ public class TsfGoodsController extends TsfBaseController {
 	@PostMapping("/detail/option1/list")
 	@ResponseBody
 	public GagaMap getGoodsOption1List(@RequestBody Goods goods) {
-
+		
 		GagaMap result = new GagaMap();
+		if (StringUtils.isEmpty(goods.getMastrGoodsCd())) {
+			goods.setMastrGoodsCd(goods.getGoodsCd());
+		}
 		result.set("dataList", goodsService.getGoodsOption1List(goods));
 
 		return result;

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

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

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

@@ -214,6 +214,7 @@ public class Goods extends TscBaseDomain {
 	private String colorChips;
 	private String sizes;
 	private String icon;
+	private String videos;			// 동영상들(,로 연결된 문자열. 동영상구분:미디어컨텐츠 또는 유튜브동영상ID, ...)
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] sizeArr;		// 상품사이즈

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

@@ -1338,6 +1338,7 @@
 		         , G.GOODS_CD           /*상품코드*/
 		         , G.GOODS_NM           /*상품명*/
 		         , G.GOODS_GB           /*상품구분*/
+		         , G.SELF_GOODS_YN      /*자사상품여부*/
 		         , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
 		         , G.PARALLEL_IMPORT_YN /*병행수입여부*/
 		         , G.ORDER_MADE_YN      /*주문제작여부*/
@@ -1356,6 +1357,7 @@
 		                 , G.GOODS_CD                                               /*상품코드*/
 		                 , G.GOODS_NM                                               /*상품명*/
 		                 , G.GOODS_GB                                               /*상품구분*/
+		                 , G.SELF_GOODS_YN      /*자사상품여부*/
 		                 , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
 		                 , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
 		                 , G.ORDER_MADE_YN                                          /*주문제작여부*/
@@ -1471,44 +1473,6 @@
 			AND  G.NUMB <![CDATA[<=]]> #{maxRow}
 		</if>
 		)
-		, TAB_GOODS_IMG AS (
-		    /* 상품의 이미지 */
-		    SELECT GOODS_CD
-		          ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
-		          ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
-		    FROM (
-		          SELECT G.GOODS_CD
-		               , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
-		               , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
-		          FROM   TAB_GOODS G
-		               , TB_GOODS_IMG GI
-		          WHERE  G.GOODS_CD = GI.GOODS_CD
-		          AND    G.MAIN_COLOR_CD = GI.COLOR_CD
-		          AND    GI.EXTMALL_IMG_YN = 'N'
-		          ) Z
-		     GROUP BY GOODS_CD
-		)
-		, TAB_GOODS_VIDEO AS (
-		    /* 상품의 동영상 목록 */
-		    SELECT GOODS_CD
-		         , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
-		         , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
-		         , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
-		         , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
-		    FROM   (
-		            SELECT G.GOODS_CD
-		                 , VD.VIDEO_GB
-		                 , VD.KMC_KEY
-		                 , VD.REG_DT
-		                 , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
-		            FROM   TAB_GOODS G
-		                 , TB_GOODS_VIDEO VD
-		            WHERE  G.GOODS_CD = VD.GOODS_CD
-		            AND    VD.DISP_YN = 'Y'
-		            AND    VD.KMC_KEY IS NOT NULL
-		           ) Z
-		    GROUP  BY GOODS_CD
-		)
 		SELECT G.BRAND_GROUP_NM
 		     , G.GOODS_CD
 		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
@@ -1516,13 +1480,23 @@
 		     , G.MAIN_COLOR_CD
 		     , G.LIST_PRICE
 		     , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb})                           AS CURR_PRICE    /*현재판매가*/
-		     , GI.SYS_IMG_NM
-		     , GI.SYS_IMG_NM2
-		     , GV.VIDEO_GB_M
-		     , GV.VIDEO_VAL_M
-		     , GV.VIDEO_GB_S
-		     , GV.VIDEO_VAL_S
-		     , (
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM2
+		, (
+		      SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
+		      FROM   (
+		         SELECT GV.VIDEO_GB
+		              , GV.KMC_KEY
+		              , GV.REG_DT
+		              , RANK() OVER(ORDER BY GV.REG_DT, GV.KMC_KEY) AS NUMB
+		         FROM   TB_GOODS_VIDEO GV
+		         WHERE  GV.GOODS_CD = G.GOODS_CD
+		         AND    GV.DISP_YN = 'Y'
+		         AND    GV.KMC_KEY IS NOT NULL
+		      ) Z
+		      WHERE  NUMB  <![CDATA[<=]]>  2
+		   ) AS VIDEOS
+		, (
 		        SELECT GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
 		        FROM   TB_OPTION O
 		        , TB_COLOR C
@@ -1556,9 +1530,7 @@
 		     , ''                                                                                           AS LIKE_IT       /*위시리스트담긴상품*/
 		         </otherwise>
 		     </choose>
-		FROM TAB_GOODS G  
-		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
-		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
+		FROM TAB_GOODS G
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		                             AND W.CUST_NO = #{custNo}
@@ -1698,48 +1670,8 @@
 		    	AND  G.NUMB <![CDATA[<=]]> #{maxRow}
 		    </if>
 		    )
-		    , TAB_GOODS_IMG AS (
-		         /* 상품의 이미지 */
-		         SELECT GOODS_CD
-		               ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
-		               ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
-		         FROM (
-		                SELECT G.GOODS_CD
-		                , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
-		                , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
-		                FROM   TAB_GOODS G
-		                , TB_GOODS_IMG GI
-		                WHERE  G.GOODS_CD = GI.GOODS_CD
-		                AND    G.MAIN_COLOR_CD = GI.COLOR_CD
-		                AND    GI.EXTMALL_IMG_YN = 'N'
-		         ) Z
-		         GROUP BY GOODS_CD
-		    )
-		, TAB_GOODS_VIDEO AS (
-		        /* 상품의 동영상 목록 */
-		        SELECT GOODS_CD
-		        , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
-		        , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
-		        , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
-		        , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
-		        FROM   (
-		             SELECT G.GOODS_CD
-		             , VD.VIDEO_GB
-		             , VD.KMC_KEY
-		             , VD.REG_DT
-		             , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
-		             FROM   TAB_GOODS G
-		             , TB_GOODS_VIDEO VD
-		             WHERE  G.GOODS_CD = VD.GOODS_CD
-		             AND    VD.DISP_YN = 'Y'
-		             AND    VD.KMC_KEY IS NOT NULL
-		        ) Z
-		    GROUP  BY GOODS_CD
-		)
 		SELECT COUNT(1) AS CNT
 		FROM TAB_GOODS G
-		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
-		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 			LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 			AND W.CUST_NO = #{custNo}
@@ -1754,6 +1686,7 @@
 		         , G.GOODS_CD           /*상품코드*/
 		         , G.GOODS_NM           /*상품명*/
 		         , G.GOODS_GB           /*상품구분*/
+		         , G.SELF_GOODS_YN      /*자사상품여부*/
 		         , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
 		         , G.PARALLEL_IMPORT_YN /*병행수입여부*/
 		         , G.ORDER_MADE_YN      /*주문제작여부*/
@@ -1772,6 +1705,7 @@
 		                 , G.GOODS_CD                                               /*상품코드*/
 		                 , G.GOODS_NM                                               /*상품명*/
 		                 , G.GOODS_GB                                               /*상품구분*/
+		                 , G.SELF_GOODS_YN      /*자사상품여부*/
 		                 , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
 		                 , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
 		                 , G.ORDER_MADE_YN                                          /*주문제작여부*/
@@ -1829,44 +1763,6 @@
 			AND  G.NUMB <![CDATA[<=]]> #{maxRow}
 		</if>
 		)
-		, TAB_GOODS_IMG AS (
-		    /* 상품의 이미지 */
-		    SELECT GOODS_CD
-		          ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
-		          ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
-		    FROM (
-		          SELECT G.GOODS_CD
-		               , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
-		               , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
-		          FROM   TAB_GOODS G
-		               , TB_GOODS_IMG GI
-		          WHERE  G.GOODS_CD = GI.GOODS_CD
-		          AND    G.MAIN_COLOR_CD = GI.COLOR_CD
-		          AND    GI.EXTMALL_IMG_YN = 'N'
-		          ) Z
-		     GROUP BY GOODS_CD
-		)
-		, TAB_GOODS_VIDEO AS (
-		    /* 상품의 동영상 목록 */
-		    SELECT GOODS_CD
-		         , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
-		         , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
-		         , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
-		         , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
-		    FROM   (
-		            SELECT G.GOODS_CD
-		                 , VD.VIDEO_GB
-		                 , VD.KMC_KEY
-		                 , VD.REG_DT
-		                 , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
-		            FROM   TAB_GOODS G
-		                 , TB_GOODS_VIDEO VD
-		            WHERE  G.GOODS_CD = VD.GOODS_CD
-		            AND    VD.DISP_YN = 'Y'
-		            AND    VD.KMC_KEY IS NOT NULL
-		           ) Z
-		    GROUP  BY GOODS_CD
-		)
 		SELECT G.BRAND_GROUP_NM
 		     , G.GOODS_CD
 		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
@@ -1874,12 +1770,22 @@
 		     , G.MAIN_COLOR_CD
 		     , G.LIST_PRICE
 		     , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb})                           AS CURR_PRICE    /*현재판매가*/
-		     , GI.SYS_IMG_NM
-		     , GI.SYS_IMG_NM2
-		     , GV.VIDEO_GB_M
-		     , GV.VIDEO_VAL_M
-		     , GV.VIDEO_GB_S
-		     , GV.VIDEO_VAL_S
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM2
+		     , (
+		        SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
+		        FROM   (
+		             SELECT GV.VIDEO_GB
+		                  , GV.KMC_KEY
+		                  , GV.REG_DT
+		                  , RANK() OVER(ORDER BY GV.REG_DT, GV.KMC_KEY) AS NUMB
+		             FROM   TB_GOODS_VIDEO GV
+		             WHERE  GV.GOODS_CD = G.GOODS_CD
+		             AND    GV.DISP_YN = 'Y'
+		             AND    GV.KMC_KEY IS NOT NULL
+		          ) Z
+		        WHERE  NUMB <![CDATA[<=]]> 2
+		     ) AS VIDEOS
 		     <choose>
 		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
@@ -1889,8 +1795,6 @@
 		         </otherwise>
 		     </choose>
 		FROM   TAB_GOODS G
-		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
-		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		                             AND W.CUST_NO = #{custNo}
@@ -2978,25 +2882,6 @@
 		     LIMIT #{maxRow}
 		    </if>
 		)
-		, TAB_GOODS_IMG AS (
-		      /* 상품의 이미지 */
-		      SELECT GOODS_CD
-		           , MAIN_COLOR_CD
-		           , MAX(SYS_IMG_NM) AS SYS_IMG_NM
-		           , MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
-		      FROM (
-		           SELECT G.GOODS_CD
-		                , GI.COLOR_CD AS MAIN_COLOR_CD
-		                , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM
-		                , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
-		           FROM TAB_ALL_GOODS G
-		              , TB_GOODS_IMG GI
-		           WHERE G.GOODS_CD = GI.GOODS_CD
-		           AND G.MAIN_COLOR_CD = GI.COLOR_CD
-		           AND GI.EXTMALL_IMG_YN = 'N'
-		      ) Z
-		      GROUP BY GOODS_CD , MAIN_COLOR_CD
-		)
 		SELECT G.BRAND_GROUP_NM
 		     , G.GOODS_CD
 		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
@@ -3004,8 +2889,8 @@
 		     , G.MAIN_COLOR_CD
 		     , G.LIST_PRICE
 		     , G.CURR_PRICE
-		     , GI.SYS_IMG_NM
-		     , GI.SYS_IMG_NM2
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
+		     , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM2
 		, (
 		    SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
 		    FROM (
@@ -3067,7 +2952,6 @@
 		    </otherwise>
 		</choose>
 		FROM TAB_ALL_GOODS G
-		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = GI.MAIN_COLOR_CD
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		    LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		    AND W.CUST_NO = #{custNo}

+ 1 - 0
src/main/resources/config/application-style.yml

@@ -89,6 +89,7 @@ pg:
         log.level: 3
         module.type: 01
         tx.mode: 0
+        receipt.url : https://testadmin8.kcp.co.kr/assist/bill.BillActionNew.do
 
 # 네이버페이 API
 naverPay:

+ 16 - 0
src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html

@@ -94,6 +94,10 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBMM007', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM007');">
 														<div class="itemPic">
+															<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+															</th:block>
 															<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
@@ -157,6 +161,10 @@
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM008');">
 															<div class="shape" th:classappend="${goodsStat.count==1}?'ranker'"><span th:text="${goodsStat.index+1}"></span></div>
 															<div class="itemPic">
+																<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																	<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																	<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																</th:block>
 																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
@@ -239,6 +247,10 @@
 														<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 														<a href="javascript:void(0);" class="itemLink"  th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', [[${contentsLoc}]]);">
 															<div class="itemPic">
+																<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																	<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																	<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																</th:block>
 																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
@@ -330,6 +342,10 @@
 										<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBMM013', planDtlSq=''">관심상품 추가</button>
 										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM013');">
 											<div class="itemPic">
+												<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+													<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+													<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+												</th:block>
 												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 											</div>
 											<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>

+ 8 - 0
src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html

@@ -71,6 +71,10 @@
 											<div class="item_state">
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
 													<div class="itemPic">
+														<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+															<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+															<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+														</th:block>
 														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" onerror="noneImg(this)">
 														<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM001', planDtlSq=''">관심상품 추가</button>
 													</div>
@@ -99,6 +103,10 @@
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
 												<div class="shape" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}"></span></div>
 												<div class=" itemPic">
+													<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+														<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+														<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+													</th:block>
 													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" onerror="noneImg(this)">
 													<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM002', planDtlSq=''">관심상품 추가</button>
 												</div>

+ 16 - 0
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -113,6 +113,10 @@
 													<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM003');">
 														<div class=" itemPic">
 															<!-- <img alt="BLUE-a" class=" pd_img" src="/images/mo/thumb/main_trendy05.jpg">  onerror="img_check(this)"-->
+															<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+															</th:block>
 															<img alt="BLUE-a" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)"  >
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
@@ -166,6 +170,10 @@
 																		<span><em class="number" th:text="${bestItemStat.count}">1</em></span>
 																	</div>
 																	<div class="itemPic">
+																		<th:block th:each="option,idx:${bestItemData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																			<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																			<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																		</th:block>
 																		<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 																	</div>
 																	<p class="itemBrand" th:text="${bestItemData.brandGroupNm}">TBJ</p>
@@ -328,6 +336,10 @@
 														<div class="item_state">
 															<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM007');">
 																<div class="itemPic">
+																	<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																		<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																		<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																	</th:block>
 																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -415,6 +427,10 @@
 																	<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM009', planDtlSq=''">관심상품 추가</button>
 																	<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM009');">
 																		<div class="itemPic">
+																			<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																				<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																				<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																			</th:block>
 																			<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">TBJ</p>

+ 8 - 0
src/main/webapp/WEB-INF/views/mob/display/OutletMainFormMob.html

@@ -64,6 +64,10 @@
 												<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SOM002', planDtlSq=''">관심상품 추가</button>
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SOM002');">
 													<div class="itemPic">
+														<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+															<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+															<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+														</th:block>
 														<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" alt="">
 													</div>
 													<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
@@ -96,6 +100,10 @@
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SOM003');">
 												<div class="shape" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}">1</span></div>
 												<div class="itemPic">
+													<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+														<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+														<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+													</th:block>
 													<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" alt="">
 												</div>
 												<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>

+ 4 - 5
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -386,6 +386,9 @@
 							<button type="button" class="cart" id="btnGoodsWish" onclick="fnAddCart('C','Up');" >쇼핑백</button>
 							<button type="button" class="buyNow" id="btnGoodsCart" onclick="fnAddCart('O','Up');">바로구매</button>
 							</th:block>
+							<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
+							<button class="cantbuying" style="display:block;">SOLD OUT</button>
+							</th:block>
 						</div>
 					</div>
 				</div>
@@ -398,7 +401,7 @@
 	<!-- ★ 컨텐츠 종료 -->	
 
 	<!-- 바닥메뉴 -->	
-	<div class="product_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
+	<div class="product_floormenu" th:classappend="${(goodsInfo.stockQty <= 0 or goodsInfo.goodsStat != 'G008_90')? 'soldout':''}"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
 		<div class="share_like">
 			<button type="button" class="share">공유하기</button>
 			<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  
@@ -406,12 +409,8 @@
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
 		<div class="prd_buy">
-			<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 			<button type="button" class="buying btPop_auto" id="btn_purchase">구매하기</button>
-			</th:block>
-			<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 			<button type="button" class="cantbuying" style="display:block;">SOLD OUT</button>
-			</th:block>
 		</div>
 	</div>
 	<!-- //바닥메뉴 -->

+ 6 - 10
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -1261,7 +1261,7 @@
 	<!-- ★ 컨텐츠 종료 -->	
 
 	<!-- 바닥메뉴 -->	
-	<div class="product_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
+	<div class="product_floormenu" th:classappend="${(goodsInfo.stockQty <= 0 or goodsInfo.goodsStat != 'G008_90')? 'soldout':''}"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
 		<div class="share_like">
 			<button type="button" class="share">공유하기</button>
 			<!-- <th:block th:include="~{web/goods/GoodsIncludeFormMob :: goodsSnsForm}"></th:block> -->
@@ -1270,12 +1270,8 @@
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
 		<div class="prd_buy">
-			<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 			<button type="button" class="buying btPop_auto" id="btn_purchase">구매하기</button>
-			</th:block>
-			<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
-			<button type="button" class="cantbuying" style="display:block;">SOLD OUT</button>
-			</th:block>
+			<button type="button" class="cantbuying">SOLD OUT</button>
 		</div>
 		<!-- (공통) 공유팝업 -->
 		<div class="modal fade" id="tglShare" tabindex="-1" role="dialog" aria-labelledby="aModalLabel" aria-hidden="true">
@@ -1675,10 +1671,10 @@
 			target.each(function(){ 
 				let data = {goodsCd : $(this).attr('id')
 							,optionSoldoutSkip : optionSoldoutSkip 
-							,mastrGoodsCd : $('#cartFprm input[name=goodsCd]').val()
+							,mastrGoodsCd : $('#cartForm input[name=goodsCd]').val()
 							};
 				let jsonData = JSON.stringify(data);
-				 
+				
 				fnOption1Display(idx, jsonData, $(this).attr('id') );
 				
 				idx++;
@@ -1799,7 +1795,7 @@
 		let data = {goodsCd : goodsCd
 					,optCd1 : optCd1
 					,optionSoldoutSkip : optionSoldoutSkip
-					,mastrGoodsCd : $('#cartFprm input[name=goodsCd]').val()
+					,mastrGoodsCd : $('#cartForm input[name=goodsCd]').val()
 					};
 		let jsonData = JSON.stringify(data);
 		
@@ -1837,7 +1833,7 @@
 						$obj.remove();
 					//	$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
 						//------
-						tag += '<div class="select_custom item_opt2 item_opt2_'+ridx+ ' '+goodsCd+'">\n';	
+						tag += '<div class="select_custom item_opt2 item_opt2_'+ridx+ ' '+goodsCd+'" qty="'+minOrdQty+'">\n';	
 						tag += '<div class="combo">\n';
 						tag += '<div class="select">선택</div>\n';
 						tag += '<ul class="list">\n';

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponFormMob.html

@@ -55,7 +55,7 @@
 													<span><em th:text="${CouponData.dcVal}"></em>%</span>
 												</th:block>
 												<th:block th:unless="${CouponData.dcWay == '%'}">
-													<span><em th:text="${CouponData.dcVal}"></em>원</span>
+													<span><em th:text="${#numbers.formatInteger(CouponData.dcVal,0,'COMMA')}"></em>원</span>
 												</th:block>
 												</p>
 												<p class="cp_condition">

+ 8 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html

@@ -252,3 +252,11 @@
 	</div>
 </div>
 
+<script th:inline="javascript">
+	$(document).ready(function() {
+		if ([[${pageNo}]] > 1) {
+			$('.part_goods').css('border-top', '1px solid #eee');
+		}
+	});
+</script>
+

+ 39 - 92
src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html

@@ -93,68 +93,7 @@
 							<li id="SearchOwnGiftcard"><a href="javascript:void(0);" >보유상품권</a></li>
 						</ul>
 						<div class="tabContents">
-							<div class="tab_cont" id="giftcardList">
-								<!-- tab_cont 사용내역 Start -->
-								<ul>
-									<li>
-										<div>
-											<span class="tag deepgray">차감</span>
-											<span class="tag_name">상품구매</span>
-											<span class="txt_content">남성 라그란 소매배색 F67M-TS927A</span>
-											<span class="txt_time">2020.10.06 22:50:14</span>
-										</div>
-										<div>
-											<span class="amount_minus">
-												<em>-10,000</em>원
-											</span>
-										</div>
-									</li>
-								</ul>
-								<!-- // tab_cont End -->
-							</div>
-							<div class="tab_cont ">
-										<div class="voucher">
-											<div>
-												<p class="vch_name">
-													STYLE24 상품권
-												</p>
-												<p class="vch_price">
-													<span class="tag primary_line"><em>300,900</em>원권</span>
-												</p>
-												<p class="vch_remain">
-													잔액<span><em>200,000</em>원</span>
-												</p>
-												<p class="vch_code">
-													1234-ABCD-3342-ADLS
-												</p>
-											</div>
-											<div class="vch_date">
-												~&nbsp;<span>2021.12.30</span>
-											</div>
-										</div>
-
-										<div class="voucher disable">
-											<div>
-												<p class="vch_name">
-													STYLE24 상품권
-												</p>
-												<p class="vch_price">
-													<span class="tag primary_line"><em>300,900</em>원권</span>
-												</p>
-												<p class="vch_remain">
-													전액소진
-												</p>
-												<p class="vch_code">
-													1234-ABCD-3342-ADLS
-												</p>
-											</div>
-											<div class="vch_date">
-												~&nbsp;<span>2021.12.30</span>
-											</div>
-										</div>
-
-								// tab_cont End
-							</div> 
+							<div class="tab_cont" id="giftcardList"></div> 
 						</div>
 					</div>
 				</div>
@@ -208,40 +147,48 @@ $("#SearchUseGiftcard").click(function() {
 function useGiftcard(result) {
 
 	let giftcardUseList = result.giftcardUseList;
-
 	let tmtbHtml = '';
 	
-	tmtbHtml += '<ul>                                                                   ';
-	for (let i = 0; i < giftcardUseList.length; i++) {
-		let useGiftcard = giftcardUseList[i];
-		tmtbHtml += '	<li>                                                               ';
-		tmtbHtml += '		<div>                                                          ';
-		if (useGiftcard.gfcdAmt<0) {
-			tmtbHtml += '			<span class="tag deepgray">차감</span>                       ';
-		}else{
-			tmtbHtml += '		    <span class="tag primary">적립</span>';
-		}
-		
-		tmtbHtml += '			<span class="tag_name">'+useGiftcard.occurDtlDesc+'</span>                         ';
-		tmtbHtml += '			<span class="txt_content">'	+ useGiftcard.goodsNm + '</span>   ';
-		tmtbHtml += '			<span class="txt_time">'+useGiftcard.regDt+'</span>          ';
-		tmtbHtml += '		</div>                                                         ';
-		tmtbHtml += '		<div>                                                          ';
-		if (useGiftcard.gfcdAmt<0) {
-			tmtbHtml += '			<span class="amount_minus">                                ';
-			tmtbHtml += '				<em>'+useGiftcard.gfcdAmt.addComma()+'</em>원                                      ';
-			tmtbHtml += '			</span>                                                    ';
-		}else{
-			tmtbHtml += '			<span class="amount_plus">                                ';
-			tmtbHtml += '				<em>'+useGiftcard.gfcdAmt.addComma()+'</em>원                                      ';
-			tmtbHtml += '			</span>                                                    ';
+	if (giftcardUseList.length == 0) {
+		console.log("여기 넘어와?");
+		tmtbHtml += '<div class="nodata">';
+		tmtbHtml += '<div class="txt_box">';
+		tmtbHtml += '<p>상품권 사용내역이 없습니다.<br></p>';
+		tmtbHtml += '</div>';
+		tmtbHtml += '</div>';
+	}else{
+		tmtbHtml += '<ul>                                                                   ';
+		for (let i = 0; i < giftcardUseList.length; i++) {
+			let useGiftcard = giftcardUseList[i];
+			tmtbHtml += '	<li>                                                               ';
+			tmtbHtml += '		<div>                                                          ';
+			if (useGiftcard.gfcdAmt<0) {
+				tmtbHtml += '			<span class="tag deepgray">차감</span>                       ';
+			}else{
+				tmtbHtml += '		    <span class="tag primary">적립</span>';
+			}
+			
+			tmtbHtml += '			<span class="tag_name">'+useGiftcard.occurDtlDesc+'</span>                         ';
+			tmtbHtml += '			<span class="txt_content">'	+ useGiftcard.goodsNm + '</span>   ';
+			tmtbHtml += '			<span class="txt_time">'+useGiftcard.regDt+'</span>          ';
+			tmtbHtml += '		</div>                                                         ';
+			tmtbHtml += '		<div>                                                          ';
+			if (useGiftcard.gfcdAmt<0) {
+				tmtbHtml += '			<span class="amount_minus">                                ';
+				tmtbHtml += '				<em>'+useGiftcard.gfcdAmt.addComma()+'</em>원                                      ';
+				tmtbHtml += '			</span>                                                    ';
+			}else{
+				tmtbHtml += '			<span class="amount_plus" style="color:#fd4802">                                ';
+				tmtbHtml += '				<em>+'+useGiftcard.gfcdAmt.addComma()+'</em>원                                      ';
+				tmtbHtml += '			</span>                                                    ';
+			}
+			
+			tmtbHtml += '		</div>                                                         ';
+			tmtbHtml += '	</li>                                                              ';
 		}
 		
-		tmtbHtml += '		</div>                                                         ';
-		tmtbHtml += '	</li>                                                              ';
+		tmtbHtml += '</ul>                                                                  ';
 	}
-	
-	tmtbHtml += '</ul>                                                                  ';
 
 	$("#giftcardList").html(tmtbHtml);
 }
@@ -275,7 +222,7 @@ function ownGiftcard(result) {
 
 	let tmtbHtml2 = "";
 
-	if (giftcardOwnList == null) {
+	if (giftcardOwnList.length == 0) {
 		tmtbHtml2 += '<div class="nodata">';
 		tmtbHtml2 += '<div class="txt_box">';
 		tmtbHtml2 += '<p>보유한 상품권이 없습니다.<br></p>';

+ 10 - 7
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -521,13 +521,16 @@
 </div>
 
 <script th:inline="javascript">
-// 버튼 클래스 설정
-$.each($('.btn_count'), function(idx, item) {
-	if ($(item).children().length > 3 && !$(item).hasClass('col2')) {
-		$(item).addClass('col2');
+$(document).ready(function() {
+	// 버튼 클래스 설정
+	$.each($('.btn_count'), function(idx, item) {
+		if ($(item).children().length > 3 && !$(item).hasClass('col2')) {
+			$(item).addClass('col2');
+		}
+	});
+	
+	if ([[${pageNo}]] > 1) {
+		$('.part_goods').css('border-top', '1px solid #eee');
 	}
 });
 </script>
-
-</th:block>
-

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypagePointFormMob.html

@@ -159,10 +159,10 @@ var fnGetPointTableInfo = function(param) {
 			tag += ' 	<div>';
 			if(item.pntAmt > 0){
 				tag += '		<span class="amount_plus">';
-				tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
+				tag += '			<em>+'+item.pntAmt.addComma()+'</em>P';
 				tag += '		</span>';
 			}else{
-				tag += '		<span class="c_primary">';
+				tag += '		<span class="amount_minus">';
 				tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
 				tag += '		</span>';
 			}

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -268,7 +268,7 @@
 															<div class="form_field">
 																<div class="imgUpload">
 																	<label for="fileAdd" class="fileAdd" id="fileAdd_reply">첫번째업로드</label>
-																	<input type="file" id="fileAdd" name="files" accept=".jpeg, .jpg, .png, video/mp4,video/x-m4v,video/*"> <!-- 210507_추가 : accept 속성 추가 -->
+																	<input type="file" id="fileAdd" name="files" accept="image/png, image/jpeg, image/jpg, video/mp4, video/x-m4v"> <!-- 210507_추가 : accept 속성 추가 -->
 																</div>
 															</div>
 															<!-- //이미지첨부 -->

+ 4 - 5
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -28,7 +28,6 @@
 						<div class="tip_wrap tip1" >
 							<div class="tip_tit">?</div>
 							<div class="tip_contents">
-								<a href="javascript:;" class="tip_close"><span class="sr-only">팁 닫기</span></a> <!-- 210407_tip_close 요소 추가 -->
 								<p class="tip_txt">
 									<ul>
 										<li>일반 리뷰 작성시 150P, 포토/영상 리뷰는 350P가 추가 적립됩니다.</li>
@@ -45,8 +44,8 @@
 				<div class="inner wide">
 					<div class="tabWrap">
 						<ul class="tabIndex">
-							<li id="completeReview"><a href="javascript:void(0);">작성 가능한 리뷰<span class="count" th:text="'('+${#numbers.formatInteger(completeReviewCount,0,'COMMA')}+')'"></span></a></li>
-							<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span class="count" th:text="'('+${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}+')'" ></span></a></li>
+							<li id="completeReview"><a href="javascript:void(0);">작성 가능한 리뷰<span class="count" th:text="${#numbers.formatInteger(completeReviewCount,0,'COMMA')}"></span></a></li>
+							<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span class="count" th:text="${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}" ></span></a></li>
 						</ul>
 						<div class="tabContents">
 							<div class="tab_cont active">
@@ -64,10 +63,10 @@
 
 								</div>
 								<div class="ui_foot" style="display:none;">
-									<button class="btn btnIcon_more" id="btnMore"  style="width: 100%;">더보기</button>
+									<button class="btn btnM btnIcon_more" id="btnMore"  style="width: 100%;">더보기</button>
 								</div>
 								<div class="ui_foot" style="display:none;">
-									<button class="btn btnIcon_more" id="btnMore2"  style="width: 100%;">더보기</button>
+									<button class="btn btnM btnIcon_more" id="btnMore2"  style="width: 100%;">더보기</button>
 								</div>
 							</div>
 							<!-- // tab_cont End -->

+ 8 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListInfoMob.html

@@ -248,3 +248,11 @@
 	</div>
 </div>
 
+<script th:inline="javascript">
+	$(document).ready(function() {
+		if ([[${pageNo}]] > 1) {
+			$('.part_goods').css('border-top', '1px solid #eee');
+		}
+	});
+</script>
+

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListFormMob.html

@@ -255,7 +255,7 @@ var fnGetInfiniteScrollDataList = function(pageNo) {
 		if (ordNoList.length > 0) {
 			$.ajax({
 				type: "POST",
-				url: '/mypage/order/list/info',
+				url: '/noMember/order/list/info',
 				data: JSON.stringify(jsonObj),
 				dataType: 'html',
 				beforeSend: function (xhr, settings) {

+ 16 - 0
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -105,6 +105,10 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBM007', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM007');">
 														<div class=" itemPic">
+															<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+															</th:block>
 															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
@@ -176,6 +180,10 @@
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM008');">
 														<div class="shape" th:classappend="${goodsStat.count==1}?'ranker'"><span th:text="${goodsStat.index+1}"></span></div>
 														<div class="itemPic">
+															<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+															</th:block>
 															<img alt="BLACK-a" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
@@ -251,6 +259,10 @@
 											<div class="item_state">
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM009');">
 													<div class="itemPic">
+														<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+															<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+															<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+														</th:block>
 														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 													</div>
@@ -352,6 +364,10 @@
 											<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBM013', planDtlSq=''">관심상품 추가</button>
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM013');">
 												<div class="itemPic">
+													<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+														<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+														<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+													</th:block>
 													<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 												</div>
 												<p class=" itemBrand" th:text="${goodsData.brandGroupNm}"></p>

+ 8 - 3
src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html

@@ -96,6 +96,10 @@
 											<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM001', planDtlSq=''">관심상품 추가</button>
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
 												<div class=" itemPic">
+													<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+														<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+														<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+													</th:block>
 													<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}" onerror="noneImg(this)"/>
 												</div>
 												<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
@@ -129,9 +133,10 @@
 										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
 											<div class="rank" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}">1</span></div>
 											<div class="itemPic">
-<!--												<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">-->
-
-<!--												</th:block>-->
+												<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+													<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+													<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+												</th:block>
 												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}" onerror="noneImg(this)"/>
 											</div>
 											<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>

+ 16 - 0
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -121,6 +121,10 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM003', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM003');">
 														<div class=" itemPic">
+															<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+															</th:block>
 															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
@@ -171,6 +175,10 @@
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${bestItemData.goodsCd}]], '', '', 'SMM004');">
 															<div class="shape" th:classappend="${bestItemStat.count==1}?'ranker'"><span th:text="${bestItemStat.count}"></span></div>
 															<div class="itemPic">
+																<th:block th:each="option,idx:${bestItemData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																	<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																	<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																</th:block>
 																<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class=" itemBrand" th:text="${bestItemData.brandGroupNm}">BRAND NAME</p>
@@ -403,6 +411,10 @@
 															<button type="button" class="itemLike" tabindex="0" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM007', planDtlSq=''">관심상품 추가</button>
 															<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM007');">
 																<div class="itemPic">
+																	<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																		<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																		<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																	</th:block>
 																	<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -492,6 +504,10 @@
 																	<button type="button" class="itemLike" tabindex="0" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM009', planDtlSq=''">관심상품 추가</button>
 																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM009');">
 																		<div class="itemPic">
+																			<th:block th:each="option,idx:${goodsData.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+																				<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+																				<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+																			</th:block>
 																			<img alt="" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>

+ 8 - 0
src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html

@@ -96,6 +96,10 @@
 										<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SOM002', planDtlSq=''">관심상품 추가</button>
 										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SOM002');">
 											<div class="itemPic">
+												<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+													<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+													<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+												</th:block>
 												<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
 											</div>
 											<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
@@ -135,6 +139,10 @@
 									<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SOM003');">
 										<div class="shape" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}">1</span></div>
 										<div class="itemPic">
+											<th:block th:each="option,idx:${item.videos}" th:with="videoArr=${#strings.arraySplit(idx.current,':')}">
+												<iframe th:if="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${'https://www.youtube.com/embed/'+videoArr[1]+'?autoplay=1&mute=1'}"></iframe>
+												<iframe th:unless="${videoArr[0]=='Y'}" id="pdThumbVideo" class="pd_mov" th:src="${kollusMediaUrl+'/'+videoArr[1]+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" allow="fullscreen" allowFullScreen></iframe>
+											</th:block>
 											<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}">
 										</div>
 										<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>

+ 4 - 4
src/main/webapp/ux/mo/css/common_m.css

@@ -390,7 +390,7 @@ input[type="file"] {
     font-size: 13px;
     color: #333333;
     width: 100%;
-    height: 45px;
+    height: 4.5rem;
 }
 .select_custom .combo {
     display: inline-block;
@@ -848,10 +848,10 @@ header .hmenus .bnb ul > li > a{display: block; padding: 8px 0; font-size: 1.5re
 
 
 /* gnb */
-body.header-show .app .gnb{top: 50px;}
-.app .gnb {position: -webkit-sticky; position: sticky; top: 0px; padding-right: 50px; background-color: #000; z-index: 9; /*transition: top 0.3s;*/ width: 100%;}
+body.header-show .app .gnb{top: 5.0rem;}
+.app .gnb {position: -webkit-sticky; position: sticky; top: 0px; padding-right: 3.0rem; background-color: #000; z-index: 9; /*transition: top 0.3s;*/ width: 100%;}
 .app .gnb {background-color:#222222; position:relative; z-index:79;} /* layout_m 재확인 */
-.app .gnb.expand{padding-right: 30px;}
+.app .gnb.expand{padding-right: 3.0rem;}
 
 .app .gnb .gnb-inner{position: relative; width: 100%; padding: 9px 10px; overflow-x: scroll;}
 .app .gnb .gnb-inner::-webkit-scrollbar {display: none;}

+ 12 - 10
src/main/webapp/ux/mo/css/layout_m.css

@@ -408,13 +408,13 @@
 .item_prod .itemLike::before, 
 .item_prod .itemLike::after {content: "";position: absolute;top: 0px;right: 0px;width: 100%;height: 100%; background-repeat: no-repeat;background-position: right top;background-size: contain;opacity: 0;transition: opacity 200ms ease 0s;}
 .item_prod .itemLike::before {background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position:-1.7rem 0px;background-repeat: no-repeat;}
-.item_prod .itemLike::after {background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position: -1.7rem 0px;background-repeat: no-repeat;}
+.item_prod .itemLike::after {background: url('/imagnes/mo/ico_like.png');background-size: 3.4rem;background-position: -1.7rem 0px;background-repeat: no-repeat;}
 /* .item_prod .itemLike:hover::before,  */
 /* .item_prod .itemLike:active::before {opacity: 1;} */
 /* .item_prod .itemLike.active::before {opacity: 1;} */
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; }
+.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background: #fff;}
 .item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .item_prod .itemPic .pd_mov {position: absolute;width: 100%;height: 100%;top: 50%;left: 0px;transform: translateY(-50%);z-index: 2;}
@@ -459,13 +459,15 @@
 .pd .pd_detail .btPopAuto_body .opt_result .number_count span.max_val {opacity:0.2;}
 .pd .pd_detail .btPopAuto_body .size{color:#666666}
 .pd .pd_detail .Purchase_pop{transition:none;}
-.pd .pd_detail .Purchase_pop .btPop_foot{position: absolute;width: 100%;bottom: 0; background: #fff;}
+.pd .pd_detail .Purchase_pop .btPop_foot{width: 100%; background: #fff;}
 .pd .pd_detail .Purchase_pop .item_prod .itemPercent{left:10.2rem;}
 .pd .pd_detail .Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
 .pd .pd_detail .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc;}
 .pd .pd_detail .Purchase_pop .select_custom .combo .list>li{padding:1.2rem 4.2rem 1.2rem 1.2rem; line-height:2rem; word-wrap: break-word;}
 .pd .pd_detail .Purchase_pop .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
 .pd .pd_detail .Purchase_pop .select_custom .opt_price{font-size:1.2rem; color:#888888;}
+.pd .pd_detail .Purchase_pop .deal_opt_item .select{padding-bottom:0}
+.pd .pd_detail .Purchase_pop .deal_opt_item .select .item_prod{top:-0.2rem}
 .pd .pd_detail .Purchase_pop .btn_box{display:flex;}
 .pd_detail .pd_info > .inner:after, .pd_detail > .inner:after{content: '';width: 100%;height: 1.2rem;padding: 0;background: #f5f5f5;position: absolute;bottom: -1.2rem;left: 0;right: auto;}
 .pd_detail > .inner:last-child::after{content: '';width: 100%;height: 0rem;}
@@ -832,7 +834,7 @@
 /* .pd_pop.Purchase_pop .btPop_body{max-height:70rem;} */
 
 /* 재확인 할 것 */
-.pd_pop.Purchase_pop .btPop_body{max-height:calc(100% - 14%);}
+.pd_pop.Purchase_pop .btPop_body{height:calc(100% - 10rem);}
 .pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0; margin-top:-0.6rem}
 .btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:84%;}
 .btPop_open .btPop.Purchase_pop .btPop_close{width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png);}
@@ -857,9 +859,9 @@
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */
 .pd .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select{min-height: 4.5rem;}
 .pd .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select::before{content: '';display: inline-block;width: 100%;height: 0;position: absolute;left: 1rem; color:#333333}
-.pd_pop.Purchase_pop .pop_option_select{display:none; position:absolute; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:500; background: #fff; height:100%;}
-.pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:auto; max-height:100%; background-color:#fff;}
-.pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:3.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
+.pd_pop.Purchase_pop .pop_option_select{display:none; position:fixed; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:1000; background: #fff; height:84%;}
+.pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:scroll; height:100%; background-color:#fff;}
+.pd_pop.Purchase_pop .pop_option_select .close{position: absolute; z-index: 99; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:3.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header{margin-bottom:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header:after{display:block; content:''; clear:both;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .title{position:relative; float:left; font-size:1.6rem; color:#222222; font-weight:500;}
@@ -1385,7 +1387,7 @@
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb{position:relative; width:100%; height:100%; min-height:45.6rem;}
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb img,
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb video{position: absolute; left: 50%; right: 0; top: 45%; bottom: auto; transform: translate(-50%, -50%); width: auto; height: auto; max-height: 100%; max-width: 100%; margin: auto 0; cursor: pointer;}
-.modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb iframe{position: absolute; top: 0;left: 0; right: 0; bottom: auto; transform: translate(0); width: auto; height: auto; max-height: 100%; max-width: 100%; margin: auto 0; cursor: pointer;}
+.modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb iframe{position: absolute; top: 0;left: 0; right: 0; bottom: auto; transform: translate(0, 100%); height: auto; max-height: 100%; max-width: 100%; margin: auto 0; cursor: pointer;}
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb{position:relative; background-color:#ddd; /*background-position:center center; background-repeat:no-repeat; background-size:contain;*/}
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb.nodata:before{display:block; content:''; position:absolute; top:0; left:0; width:100%; height:100%; background-color:rgba(0,0,0,.5); z-index:1;}
 .modal.pd_pop[class*="reviewdetail_pop"] .area_slider .thumb.nodata:after{display:block; content:'리뷰에 등록된 이미지가 없습니다.'; position:absolute; top:50%; left:50%; width:90%; font-size:1.2rem; color:#fff; text-align:center; z-index:2; -webkit-transform:translate(-50%, -50%); transform:translate(-50%, -50%);}
@@ -1471,7 +1473,7 @@
 .pd.deal ul::after {content:''; clear:both; display:block;}
 .pd.deal .pd_detail .area_desc .desc_wrap .descript_box .desc_info {margin-top:20px}
 .pd.deal .pd_detail .foldGroup > ul > li{border-bottom:0px none;}
-.pd.deal .tab_detail_nav {position:absolute; width:100%; top:0; left:0; border-bottom:1px solid #eee;}
+.pd.deal .tab_detail_nav {position:absolute; width:100%; top:0; left:0; border-bottom:1px solid #eee; z-index:1;}
 .pd.deal .tab_detail_nav.fix{position:fixed; top:0; left:0; width:100%; background-color:#fff; z-index:100; box-shadow: 0 1px 3px rgba(0,0,0,.2);}
 .pd.deal .tab_detail_nav ul::after {content:''; clear:both; display:block;}
 .pd.deal .tab_detail_nav ul li {float:left; width:25%; text-align:center; background:#fff; box-sizing:border-box;}
@@ -1494,7 +1496,7 @@
 /*.pd.deal .pd_dealitem .itemLink .itemPic::after {content:''; background:none; background:rgba(34,34,34,0.8) url('/images/mo/btn_deal_item_more.png') no-repeat 50% 50%; background-size:5rem; opacity:0; -webkit-transition:all .2s ease-in-out; transition:all .2s ease-in-out; z-index:2;}*/
 .pd.deal .pd_dealitem .itemLink {}
 .pd.deal .pd_dealitem .itemLink:hover .itemPic::after,
-.pd.deal .pd_dealitem .itemLink:active .itemPic::after {content:''; opacity:1;}
+.pd.deal .pd_dealitem .itemLink:active .itemPic::after {content:'';}
 .pd.deal .pd_dealitem .rank {max-height:none; padding:1rem 0 1rem; z-index:3;}
 .pd.deal .pd_dealitem .rank.detail::after {background:#fd4802}
 .pd.deal .pd_dealitem .rank.detail span {display:block; font-size:1.1rem; font-weight:500;}

+ 28 - 19
src/main/webapp/ux/mo/css/style24_m.css

@@ -349,8 +349,8 @@
 .it_nav li .btn.btn_link:hover{text-decoration: none;}
 .it_nav li .btn.btn_link.active {color: #fd4802; font-weight: 500;}
 .it_nav li .btn.btn_link.active span {border-bottom: 2px solid #fd4802;}
-.main_it .it_item {overflow: visible;
-  margin-right: 4rem;margin-left: -2rem;padding-left: 2rem; /* 아이템 사이즈 조정 */
+.main_it .it_item {/*overflow: visible;*/
+  margin-right: -4rem;margin-left: -2rem; padding-right: 4rem; padding-left: 2rem; /* 아이템 사이즈 조정 */
 }
 .main_it .it_item {display: none;}
 .main_it .it_item::after {content: '';display: block;clear: both;}
@@ -368,11 +368,11 @@
 .main_deal .count_tit {font-size: 1.5rem;}
 .hotdealcount{display: inline-block;width: auto;}
 .main_deal .count #countdown #tiles span {width: auto;font-size: 1.5rem;font-weight: 300;text-align: center;color: #fff;display: inline-block;position: relative;}
-.main_deal .count #countdown #tiles span:first-child:before {content: '';position: absolute;top: 1.0rem;right: -0.6rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
-.main_deal .count #countdown #tiles span:first-child:after {content: '';position: absolute;top: 0.5rem;right: -0.6rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
-.main_deal .count #countdown #tiles span:nth-child(2) {margin: 0 1.0rem;}
-.main_deal .count #countdown #tiles span:nth-child(2):before {content: '';position: absolute;top: 1.0rem;right: -0.6rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
-.main_deal .count #countdown #tiles span:nth-child(2):after {content: '';position: absolute;top: 0.5rem;right: -0.6rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
+.main_deal .count #countdown #tiles span:first-child:before {content: '';position: absolute;top: 1.0rem;right: -0.5rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
+.main_deal .count #countdown #tiles span:first-child:after {content: '';position: absolute;top: 0.5rem;right: -0.5rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
+.main_deal .count #countdown #tiles span:nth-child(2) {margin: 0 0.8rem;}
+.main_deal .count #countdown #tiles span:nth-child(2):before {content: '';position: absolute;top: 1.0rem;right: -0.5rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
+.main_deal .count #countdown #tiles span:nth-child(2):after {content: '';position: absolute;top: 0.5rem;right: -0.5rem;background: #fff;width: 0.2rem;height: 0.2rem;border-radius: 50%;}
 .main_deal {width: 100%; margin-bottom: 3.5rem;padding-top: 1.0rem;}
 .main_deal::after {content: '';display: block;clear: both;}
 .main_deal .titWrap {padding: 3rem 0 2rem 0px;}
@@ -380,7 +380,7 @@
 .main_deal .titWrap .count{margin-top: 1.2rem;}
 .main_deal .titWrap .count .count_tit{position:relative;}
 .main_deal .titWrap .count .count_tit:before{content: '';display: inline-block;background: url(/images/mo/ico_count.png) no-repeat;width: 2.4rem;height: 2.4rem;background-size: 2.4rem 2.4rem;position: absolute;left: -2.7rem;bottom: -0.5rem;}
-.main_deal .swiper-container {margin-right: -2rem;margin-left: -2rem;padding-left: 2rem;}
+.main_deal .swiper-container {margin-right: -4rem;margin-left: -2rem;padding-right: 4rem;padding-left: 2rem;}
 .main_deal .item_prod .itemName {color: rgb(204, 204, 204);}
 .main_deal .item_prod .itemPrice {color: #ffffff;}
 
@@ -412,7 +412,7 @@
 .main_pick .pick-post::-webkit-scrollbar {display: none;}
 .main_pick .pick-post .item_prod {width: 68%; padding-right: 10%;}
 .main_pick .pick-post .item_prod .itemLink:after{content: '';display: block;clear: both;}
-.main_pick .pick-post .item_prod .itemPic{width: 7rem;height: 10.5rem;float: left;padding-top: 12vh;background: #f0f0f0; margin-bottom: 0;}
+.main_pick .pick-post .item_prod .itemPic{width: 7rem;height: 10.5rem;float: left;padding-top: 12vh;background: #ffffff; margin-bottom: 0;}
 .main_pick .pick-post .item_prod .itemName{width: calc(100% - 9rem);top: 1.5rem;margin: 0px 8rem 0.8rem;}
 .main_pick .pick-post .item_prod .itemPrice{margin: 0px 8rem 0.8rem;top:1.5rem;}
 
@@ -1194,7 +1194,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .tbl_wrap .tbl.review_tbl td {padding-left: 0;}
 .my .review .tbl_wrap .tbl.review_tbl td textarea {height: 200px;}
 .my .review .tbl_wrap .tbl td .select {width: 400px;}
-.my .review .tbl_wrap .tbl td .txt_cnt {background: #fff; width: calc(100% - 3.0rem); position: absolute; bottom: 1.7rem; right: 1.5rem; margin-top: 0; padding:0.5rem 0 0.5rem; font-size: 1.3rem; text-align: right; color: #888;}
+.my .review .tbl_wrap .tbl td .txt_cnt {background: #fff; width: calc(100% - 3.0rem); position: absolute; bottom: 1.7rem; right: 1.5rem; margin-top: 0; padding:0 0 0.5rem; font-size: 1.3rem; text-align: right; color: #888;}
 .my .review .tbl_wrap .tbl td .rev_height, 
 .my .review .tbl_wrap .tbl td .rev_weight {border:1px solid #ddd; position: relative;}
 .my .review .tbl_wrap .tbl td .rev_height input, 
@@ -1305,7 +1305,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .pay_wrap .tbl table dt {vertical-align: top; background: url('/images/mo/ico_bracket.png') no-repeat left top 2px; background-size:0.7rem; padding-left: 1.3rem; color: #888; float:left; margin-bottom: 1.4rem; font-weight: 300;}
 .pay_wrap .tbl dl > div:last-child dt, .pay_wrap .tbl dl > div:last-child dd {margin-bottom: 0;}
 .pay_wrap .tbl table dd {text-align: right; color: #666; float:right;} 
-.pay_wrap .tbl .btn {float: right; padding:0.6rem 1.3rem; font-size: 1.1rem; height:auto; margin-top: 1rem;}
+.pay_wrap .tbl .btn {float: right; padding:0.6rem 1.3rem; font-size: 1.1rem; height:auto; margin-top: 1rem; display: block; margin-left:50%;}
+.pay_wrap .tbl .btn:after {content:''; clear:both; display: block;}
 
 /* my_order_3 */
 .my .my_goodsy .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding:2rem 0;}
@@ -1389,7 +1390,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .my_return .tbl_tarea td {font-weight: 300;}
 .my .my_return .tbl_tarea .textarea_wrap, .my .my_exchange .tbl_tarea .textarea_wrap {position: relative; padding:1.7rem 1.5rem 2.8rem; border:1px solid #d7d7d7;}
 .my .my_return .tbl_tarea .textarea_wrap .txt_cnt, .my .my_exchange .tbl_tarea .textarea_wrap .txt_cnt {background: #fff; width: calc(100% - 3.0rem); position: absolute; bottom: 0.1rem; right: 1.5rem; margin-top: 0; padding:0.5rem 0 0.5rem; font-size: 1.3rem; text-align: right; color: #888;}
-.my .my_return .tbl_tarea .textarea_wrap textarea, .my .my_exchange .tbl_tarea .textarea_wrap textarea {resize:none; height: 10rem; width: 100%; border:none; outline:none;}
+.my .my_return .tbl_tarea .textarea_wrap textarea, .my .my_exchange .tbl_tarea .textarea_wrap textarea {resize:none; height: 10rem; width: 100%; border:none; outline:none; color: #222;}
 .my .my_return .retrieve_box.direct input[type="tel"] {width: 100%; padding:0 1rem;}
 .my .my_return .retrieve_box.direct .ship_info dt {font-weight: 500;}
 .my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%; margin-bottom: 0.5rem;}
@@ -1449,14 +1450,15 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .refundAccountPop .btn_group_flex {margin-top: 1rem;}
 
 /* my_delivery_1 */
-.my_delivery .modal {display: inline-block;}
+.my_delivery .modal {display: inline-block; overflow-y: none;}
 .my_delivery .blocker:before {display: none;}
-.my_delivery .modal .modal-body {margin-bottom: 4.5rem;}
+.my_delivery .modal .modal-body {margin-bottom: 5rem;}
 .my_delivery .modal .modal-footer {position: fixed; left: 0; bottom: 0; width: 100%;}
 .my .my_delivery .inner {padding: 0;}
 .my .my_delivery .inner > .btn_group {position: fixed; left: 0; bottom: 0; width: 100%; z-index: 99; transition:all 0.3s;}
 .my .my_delivery .inner > .btn_group.active {transform: translate(0, -4.3rem);}
 .my .my_delivery .inner:last-child {padding-bottom: 0;}
+.my .my_delivery .delivery_list {padding-bottom: 4rem;}
 .my .my_delivery .ship_info {padding:3rem 2rem; border-bottom: 1px solid #eee;}
 .my .my_delivery .ship_info.active {background: #fff6f2;}
 .my .my_delivery .ship_info dl > div.addr {width: 100%;}
@@ -1569,7 +1571,6 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .coupon.disable .tag {border-color:#dddddd; background:none;}
 
 /* my_coupon */
-.my .inner {margin-bottom: 1.2rem;}
 .my .inner:last-child {margin-bottom: 0;}
 .my .my_coupon .highlight_area {background: #fff6f2;padding: 2rem 1.5rem;text-align: center;width: 100%;display: inline-table;position: relative;margin-top: 2rem;margin-bottom: 2rem;}
 .my .my_coupon .content_area {padding-top: 20px;}
@@ -1626,6 +1627,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .myVoucher .tip_wrap ul li::before{content: '';position: absolute;top: 7px;left: 0;background: #858585;width: 0.2rem;height: 0.2rem;}
 .my .myVoucher .form_field {  width: auto;  height: 4.5rem;     display: inline;}
 .my .myVoucher .form_field .input_wrap{  width: 100%;  margin-bottom: 1.5rem;padding-bottom: 2.5rem;}
+.my .myVoucher .form_field .certi_wrap {padding-right: 8rem;}
 .my .myVoucher input {width: 100%;}
 .my .myVoucher .certi_wrap .btn {width: 8.6rem;height: 4.5rem;position: absolute;top: 0;right: 0;padding: 0;text-align: center;}
 .my .myVoucher .tab_cont {background: #ffffff;padding: 0 2.0rem;}
@@ -1656,12 +1658,13 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .restock .restock_past {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#888; background:url('/images/mo/ico_restock_past.png') no-repeat 0% 45%;background-size: 1.1rem;}
 
 /* my_wishlist */
-.my .my_wishlist .wishlist {padding-top: 8rem;}
+.my .my_wishlist .wishlist {padding-top: 3rem;}
+main.my .my_wishlist .inner:last-child {padding-bottom: 0;}
 .my .my_wishlist .monthly_wish_wrap {margin-top:1rem;}
 .my .my_wishlist .monthly_wish_wrap:first-child {margin-top:0}
 .my .my_wishlist .monthly_wish_wrap .itemsGrp {margin:0 -1.25%;}
 .my .my_wishlist .monthly_wish_wrap .itemsGrp:after {content:''; display: block; clear:both;}
-.my .my_wishlist .monthly_wish_wrap .itemsGrp .item_prod {width:50%; height:60rem; padding:0 1.25%; float:left;}
+.my .my_wishlist .monthly_wish_wrap .itemsGrp .item_prod {width:50%; /*height:60rem;*/ padding:0 1.25%; float:left;}
 .my .my_wishlist .monthly_wish_wrap .itemsGrp .item_prod:nth-child(2n) {margin-right: 0;float: right;}
 .my .my_wishlist .monthly_wish_wrap .itemsGrp .item_prod .item_state {padding-bottom:4rem}
 .my .my_wishlist .monthly_wish_wrap .date {display:block; position:relative; width:100%; margin-bottom:1.8rem; text-align: center;}
@@ -1845,7 +1848,7 @@ background-size:100%;}
 .odPayment .fold_cont .area_overseas .info_box.overs1 .input_wrap .form_control {width: 100%; color: #222;}
 .odPayment .fold_cont .area_overseas .info_box.overs2 {margin-top:0; margin-right:0; color:#666; font-size: 1.4rem;}
 .odPayment .fold_cont .area_overseas .info_box .agree_overs {margin-top:15px; width:100%; word-break:keep-all;}
-.odPayment .fold_cont .area_overseas .info_box .agree_overs label {line-height:1.4; color:#666; font-size: 1.3rem;}
+.odPayment .fold_cont .area_overseas .info_box .agree_overs label {line-height:1.4; color:#666; font-size: 1.3rem; text-align: left;}
 .odPayment .fold_cont .area_overseas .info_box .agree_overs label::before,
 .odPayment .fold_cont .area_overseas .info_box .agree_overs label::after {top:10px !important; transform:translateY(0%) !important;}
 .odPayment .agree_insurance, .od .agree_insurance {display:none; margin:1rem 0 0;}
@@ -1859,7 +1862,7 @@ background-size:100%;}
 .od .fold_cont .area_selpoint input[type="text"]:disabled {background: #fff;}
 
 .od .fold_cont .area_customitem > p {font-size: 1.1rem; color: #888;}
-.od .fold_cont .area_customitem .agree_custom label {font-size: 1.3rem; color: #222;}
+.od .fold_cont .area_customitem .agree_custom label {font-size: 1.3rem; color: #222; text-align: left;}
 .od .fold_cont .area_customitem .form_field {margin:1.3rem 0 2rem;}
 .od .fold_cont .area_customitem .form_field input[type="checkbox"] + label:after,
 .od .fold_cont .area_customitem .form_field input[type="checkbox"] + label:before {top: 0; margin-top: 0;}
@@ -1913,6 +1916,8 @@ background-size:100%;}
 .adrsChange_Pop .badge_wrap {display: inline-block;}
 .adrsChange_Pop .order_badge {font-size: 1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: middle;}
 .adrsChange_Pop .order_bullet_badge {color: #fd4802; border:1px solid #fd4802;}
+.adrsChange_Pop .modal-footer {margin-bottom: 5rem;}
+.adrsChange_Pop .modal-footer .btn {position: fixed; left: 0; bottom: 0; height: 5rem; font-size: 1.4rem;}
 
 .adrsChange_Pop  {}
 .adrsChange_Pop .inner:last-child {padding-bottom: 0;}
@@ -1955,6 +1960,8 @@ background-size:100%;}
 .adrsAdd_pop .htop .btn_back span i.gl3 {left: 0;bottom: 6px;width: 12px;height: 2px;-webkit-transform: rotate(45deg);transform: rotate(45deg);}
 .adrsAdd_pop .htop .btn_back:active span i {left: -20px;}
 .adrsAdd_pop .default_addrs {margin-top: 1.5rem;}
+.adrsAdd_pop .modal-footer {margin-bottom: 5rem;}
+.adrsAdd_pop .modal-footer .btn {position: fixed; left: 0; bottom: 0; height: 5rem; font-size: 1.4rem;}
 /* //주문결제_배송지추가 팝업 */
 
 /* 주문결제_배송지수정 팝업 */
@@ -1986,6 +1993,8 @@ background-size:100%;}
 .adrsModify_pop .htop .btn_back span i.gl3 {left: 0;bottom: 6px;width: 12px;height: 2px;-webkit-transform: rotate(45deg);transform: rotate(45deg);}
 .adrsModify_pop .htop .btn_back:active span i {left: -20px;}
 .adrsModify_pop .default_addrs {margin-top: 1.5rem;}
+.adrsModify_pop .modal-footer {margin-bottom: 5rem;}
+.adrsModify_pop .modal-footer .btn {position: fixed; left: 0; bottom: 0; height: 5rem; font-size: 1.4rem;}
 /* //주문결제_배송지수정 팝업 */
 
 /* 주문결제_할인쿠폰변경 팝업 */