Kaynağa Gözat

Merge branch 'develop' into bin2107

bin2107 5 yıl önce
ebeveyn
işleme
f55086b89f
23 değiştirilmiş dosya ile 652 ekleme ve 168 silme
  1. 20 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  2. 1 1
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  3. 20 8
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  4. 1 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  5. 18 7
      src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java
  6. 4 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  7. 4 7
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  8. 80 60
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  9. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  10. 2 7
      src/main/resources/config/application-run.yml
  11. 2 1
      src/main/resources/config/application-tsit.yml
  12. 138 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html
  13. 293 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html
  14. 11 10
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  15. 6 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  16. 17 17
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  17. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html
  18. 6 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewDetailFormWeb.html
  19. 7 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewPhotoFormWeb.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsShopBenefitFormWeb.html
  21. 1 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeFormWeb.html
  22. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  23. 13 27
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

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

@@ -442,4 +442,24 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getCustomerGradeAccessibleList(Plan plan);
 	
+	/**
+	 * 기획전/이벤트 비회원 접근 조회
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 5. 4
+	 */
+	int getNonmemberGradeAccessible(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 접근 프론트 구분
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	String getFrontAccessibleList(Plan plan);
+	
 }

+ 1 - 1
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -495,7 +495,7 @@ public class TsfCouponService {
 	 *
 	 * @param coupon
 	 * @return Collection<Coupon>
-	 * @author card007
+	 * @author sowon
 	 * @since 2021.02.25
 	 */
 	@Transactional("shopTxnManager")

+ 20 - 8
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -124,20 +124,16 @@ public class TsfPlanningService {
 
 		Plan plan = new Plan();
 		plan.setPlanSq(planSq);
-		
-		// 비회원일 때
-		if (!TsfSession.isLogin()) {
-			msg = "로그인 후 접근 가능합니다.";
-		}
 
 		// 디바이스접근가능여부 조회
 		plan.setFrontGb(TsfSession.getFrontGb());
 		if ("N".equals(planningDao.getDeviceAccessibleYn(plan))) {
-			msg = "PC웹에서만 접근이 가능합니다.";
+			String frontGb = planningDao.getFrontAccessibleList(plan);
+			msg = frontGb + "에서만 접근이 가능합니다.";
 			if ("M".equals(TsfSession.getFrontGb())) {
-				msg = "모바일웹에서만 접근이 가능합니다.";
+				msg =  frontGb + "에서만 접근이 가능합니다.";
 			} else if ("A".equals(TsfSession.getFrontGb())) {
-				msg = "에서만 접근이 가능합니다.";
+				msg =  frontGb + "에서만 접근이 가능합니다.";
 			}
 		}
 
@@ -146,6 +142,12 @@ public class TsfPlanningService {
 			msg = "신규회원만 접근 가능합니다.";
 		}
 		
+		if (!TsfSession.isLogin()) {
+			if (planningDao.getNonmemberGradeAccessible(plan) > 0) {
+				msg = "로그인 후 이용 가능합니다.";
+			}
+		}
+		
 		if (TsfSession.isLogin()) {
 			// 고객구분접근가능여부 조회
 			plan.setCustGb(TsfSession.getCustGb());
@@ -637,4 +639,14 @@ public class TsfPlanningService {
 	public Collection<Plan> getEntryReplyAttachList(Plan plan){
 		return planningDao.getEntryReplyAttachList(plan);
 	}
+	
+	/**
+	 * 기획전/이벤트 비회원 접근 조회
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 5. 4
+	 */
+	
 }

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

@@ -824,7 +824,7 @@ public class TsfGoodsController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap getGoodsReviewList(@RequestBody Review review) {
 
-		//log.info(" getGoodsReviewList =>{}", review);
+		log.info(" getGoodsReviewList =>{}", review);
 
 		GagaMap result = new GagaMap();
 

+ 18 - 7
src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java

@@ -3,8 +3,8 @@ package com.style24.front.biz.web;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.style24.front.biz.service.TsfKollusService;
 import com.style24.front.support.controller.TsfBaseController;
@@ -12,6 +12,8 @@ import com.style24.persistence.domain.KollusResult;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.rest.server.GagaResponse;
+
 /**
  * Kollus Upload Controller (카테노이드 동영상 업로드)
  *
@@ -31,13 +33,16 @@ public class TsfKollusUploadController extends TsfBaseController {
 	 * @author gagamel
 	 * @since 2021. 4. 16
 	 */
-	@GetMapping("/goods/upload/result")
-	public void updateGoodsVideoResult(KollusResult result) {
+	@RequestMapping("/goods/upload/result")
+	@ResponseBody
+	public GagaResponse updateGoodsVideoResult(KollusResult result) {
 		log.info("{}", result);
 
 		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
 			kollusService.updateGoodsVideoResult(result);
 		}
+
+		return super.ok();
 	}
 
 	/**
@@ -45,13 +50,16 @@ public class TsfKollusUploadController extends TsfBaseController {
 	 * @author gagamel
 	 * @since 2021. 4. 16
 	 */
-	@GetMapping("/review/upload/result")
-	public void updateReviewVideoResult(KollusResult result) {
+	@RequestMapping("/review/upload/result")
+	@ResponseBody
+	public GagaResponse updateReviewVideoResult(KollusResult result) {
 		log.info("{}", result);
 
 		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
 			kollusService.updateReviewVideoResult(result);
 		}
+
+		return super.ok();
 	}
 
 	/**
@@ -59,13 +67,16 @@ public class TsfKollusUploadController extends TsfBaseController {
 	 * @author gagamel
 	 * @since 2021. 4. 16
 	 */
-	@GetMapping("/display/upload/result")
-	public void updateDisplayVideoResult(KollusResult result) {
+	@RequestMapping("/display/upload/result")
+	@ResponseBody
+	public GagaResponse updateDisplayVideoResult(KollusResult result) {
 		log.info("{}", result);
 
 		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
 			kollusService.updateDisplayVideoResult(result);
 		}
+
+		return super.ok();
 	}
 
 }

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

@@ -166,6 +166,8 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setPlanSq(plan.getPlanSq());
 		review.setPlanSq(plan.getPlanSq());
 		coupon.setPlanSq(plan.getPlanSq());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
 		plan.setFrontGb(TsfSession.getFrontGb());
 
 		Plan planInfo = planningService.getPlanDetailInfo(plan);
@@ -374,8 +376,10 @@ public class TsfPlanningController extends TsfBaseController {
 
 		if (count == 0) {
 			result.set("message", message.getMessage("COUPON_0002"));
+			result.set("cpnId", coupon.getCpnId());
 		} else {
 			result.set("message", message.getMessage("COUPON_0001", new Object[] {count}));
+			result.set("cpnId", coupon.getCpnId());
 		}
 
 		return result;

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

@@ -728,8 +728,8 @@
 		                             WHEN 'M' = #{frontGb} THEN CP.DC_MVAL
 		                             ELSE CP.DC_AVAL END) AS DC_VAL
 		                     , CP.CPN_TYPE
-		                     , IF (CP.PD_GB = 'D', NOW(), CP.AVAIL_STDT) AS AVAIL_STDT
-		                     , IF (CP.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL Cp.AVAIL_DAYS DAY, ' 23:59:59'), CP.AVAIL_EDDT) AS AVAIL_EDDT
+		                     , CP.AVAIL_STDT
+		                     , CP.AVAIL_EDDT
 		                     , G.GOODS_CD
 		                     , G.CURR_PRICE
 		                FROM   TB_GOODS G
@@ -748,10 +748,7 @@
 		                </choose> 
 		                AND    CP.SITE_CD = #{siteCd}
 		                AND    CP.CPN_STAT = 'G232_11'   -- 쿠폰인 진행중인 쿠폰만
-		                <![CDATA[
-		                AND    NOW() <= IF (CP.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL CP.AVAIL_DAYS DAY, ' 23:59:59'), CP.AVAIL_EDDT)
-		                ]]>
-		                AND    NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
+		                AND    NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
 		                AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
 		                AND    CP.DC_CD_GB = 'G233_00'                         -- 일반유형(할인쿠폰구분)
 		                AND    (CASE WHEN 'P' = #{frontGb} THEN CP.DC_PVAL
@@ -1327,7 +1324,7 @@
 		AND (CASE WHEN 'P' = 'P' THEN C.DC_PVAL
 		         WHEN 'M' = 'P' THEN C.DC_MVAL
 		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
-		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 총발행제한수
+		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
 		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 고객당발행제한수량
 		AND (SELECT COUNT(1)
 		     FROM TB_COUPON_CUST_GBN

+ 80 - 60
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -399,6 +399,29 @@
 		WHERE PLAN_SQ = #{planSq}
 	</select>
 	
+		<!-- 고객등급접근가능리스트 -->
+	<select id="getFrontAccessibleList" parameterType="Plan" resultType="String">
+		/* TsfPlanning.getFrontAccessibleList */
+		SELECT CASE FRONT_GB WHEN 'P'     THEN 'PC웹'
+		                     WHEN 'P|M'   THEN 'PC웹, 모바일웹'
+		                     WHEN 'P|M|A' THEN 'PC웹, 모바일웹, 모바일앱'
+		                     WHEN 'M'     THEN '모바일웹'
+		                     WHEN 'M|A'   THEN '모바일웹, 모바일앱'
+		                     WHEN 'A'     THEN '모바일앱'
+		                     WHEN 'P|A'   THEN 'PC웹, 모바일앱'
+		                     END AS FRONT_GB 
+		FROM tb_plan  
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
+		<!-- 비회원 접근 조회 -->
+	<select id="getNonmemberGradeAccessible" parameterType="Plan" resultType="int">
+		/* TsfPlanning.getCustomerGubunAccessibleYn */
+		SELECT count(*)
+		FROM TB_PLAN_CUST_GRADE 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
 	<!-- 고객등급접근가능여부 조회 -->
 	<select id="getCustomerGradeAccessibleYn" parameterType="Plan" resultType="String">
 		/* TsfPlanning.getCustomerGradeAccessibleYn */
@@ -729,67 +752,64 @@
 	
 	<select id="getPlanCouponInfo" parameterType="Coupon" resultType="Coupon">
 		/* TsfPlanning.getPlanCouponInfo*/
-		SELECT F.*
-		<if test="planSq != null and planSq != ''">
-		      ,(CASE F.CPN_ID WHEN (SELECT CPN_ID FROM TB_CUST_COUPON C WHERE C.CPN_ID = F.CPN_ID AND CUST_NO = #{custNo})THEN '받기완료'
-		        ELSE '쿠폰받기' END ) AS COUPON_STAT
+		SELECT C.CPN_ID 
+		      ,C.CPN_NM 
+		      ,C.CPN_DESC       
+		      ,C.CPN_TYPE 
+		      ,C.BUY_LIMIT_AMT 
+		      ,C.CUST_PUB_LIMIT_QTY 
+		      ,C.TOT_PUB_LIMIT_QTY
+		      ,C.MAX_DC_AMT 
+		      ,PC.NOTE 
+		      ,PC.TITLE
+		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		              END
+		             ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                   ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		              END)     AS USE_CONDITION  /*사용조건*/
+		     , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		            ELSE CONCAT('1인 최대 ',C.CUST_PUB_LIMIT_QTY,'매')
+		       END             AS ISSUE_CONDITION /*발급수량*/
+		      ,CASE WHEN  #{frontGb} = 'P' THEN C.DC_PVAL
+		            WHEN  #{frontGb} = 'M' THEN C.DC_MVAL
+		            WHEN  #{frontGb} = 'A' THEN C.DC_AVAL
+		            ELSE C.DC_AVAL
+		            END                                       AS DC_VAL
+		      ,CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                    ELSE '%'
+		                    END                                      AS DC_WAY    /*할인방법*/
+		      ,C.PD_GB 
+		      ,IF (C.PD_GB = 'D', NOW(), C.AVAIL_STDT) AS AVAIL_STDT
+		      ,IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT) AS AVAIL_EDDT
+		      ,(CASE WHEN CC.CPN_ID IS NULL THEN '쿠폰받기' ELSE '받기완료' END ) AS COUPON_STAT
+		FROM TB_PLAN_CONTENTS PC 
+		                 INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
+		                 INNER JOIN TB_COUPON C ON PCI.ITEM_VAL = C.CPN_ID 
+		                 LEFT JOIN TB_CUST_COUPON CC ON C.CPN_ID = CC.CPN_ID 
+		WHERE 1=1
+		AND C.CPN_STAT = 'G232_11'
+		AND C.SITE_CD = #{siteCd}
+		AND C.DOWN_ABL_YN  = 'N'
+		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		AND NOW()   <![CDATA[<=]]>  IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
+		AND (CASE WHEN 'P' = 'P' THEN C.DC_PVAL
+		         WHEN 'M' = 'P' THEN C.DC_MVAL
+		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
+		AND PC.PLAN_SQ = #{planSq}
+		AND PC.DISP_YN ='Y'
+		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
+		<if test="custNo != null and custNo > 0">
+		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO=  #{custNo}) -- 고객당발행제한수량
 		</if>
-		FROM
-		(
-			SELECT  PC.PLAN_CONT_SQ 
-				  , PC.PLAN_SQ 
-				  , PC.TMPL_TYPE 
-				  , PC.TITLE 
-				  , PC.LINK_URL
-				  , PC.NOTE 
-				  , PCI.ITEM_VAL
-				  , PCI.DISP_ORD
-				  , TC.CPN_ID
-				  , TC.CPN_NM
-				  , TC.CPN_DESC
-				  , TC.SITE_CD
-				  , TC.AF_LINK_CD
-				  , TC.CPN_TYPE
-				  , TC.APPLY_SCOPE
-				  ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				   WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				  , TC.DC_PVAL
-				  , TC.DC_MVAL
-				  , TC.DC_AVAL
-				  , TC.MAX_DC_AMT
-				  , TC.PD_GB, AVAIL_STDT
-				  , TC.AVAIL_EDDT
-				  , TC.AVAIL_DAYS
-				  , TC.CUST_PUB_LIMIT_QTY
-				  , TC.TOT_PUB_LIMIT_QTY
-				  , TC.ONE_PUB_QTY
-				  , TC.DN_GB
-				  , TC.DOWN_STDT
-				  , TC.DOWN_EDDT
-				  , TC.BUY_LIMIT_AMT
-				  , TC.REISSUANCE
-				  , TC.CPN_STAT
-				  , TC.END_ALIM_YN
-				  , TC.FIRST_ORD_YN
-				  , TC.DOWN_ABL_YN
-				  , TC.DC_CD_GB
-				  , TC.CUST_JOIN_STDT
-				  , TC.CUST_JOIN_EDDT
-				  , TC.BUY_STDT
-				  , TC.BUY_EDDT
-				  , TC.NEW_CUST_YN
-			FROM TB_PLAN_CONTENTS PC INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
-			  						 INNER JOIN TB_COUPON TC ON PCI.ITEM_VAL = TC.CPN_ID 
-			WHERE 1=1 
-			<if test="planSq != null and planSq != ''">
-				AND PC.PLAN_SQ = #{planSq}
-			</if>
-				AND PC.TMPL_TYPE = 'G082_20'
-				AND PC.DISP_YN ='Y'
-				AND NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT
-				AND NOW() BETWEEN TC.DOWN_STDT AND TC.DOWN_EDDT 
-		)F
- 
+		GROUP BY    C.CPN_ID 
+		           ,C.CPN_NM 
+		           ,C.CPN_DESC       
+		           ,C.CPN_TYPE 
+		           ,C.BUY_LIMIT_AMT 
+		           ,C.CUST_PUB_LIMIT_QTY 
+		           ,C.TOT_PUB_LIMIT_QTY
+		           ,C.MAX_DC_AMT
 	</select>
 	
 	<select id="getPlanImageInfo" parameterType="Plan" resultType="Plan">

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

@@ -55,7 +55,7 @@
 		            AND REVIEW_SQ = R.REVIEW_SQ
 		            AND (FILE_GB  = 'I'
 		                 OR
-		                 FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'
+		                 FILE_GB = 'M' AND R.CONFIRM_YN = 'Y' AND NULLIF(KMC_KEY,'') IS NOT NULL 
 		                )
 		            )
 		</if>
@@ -167,7 +167,7 @@
 		                    AND RPA.REVIEW_SQ = RP.REVIEW_SQ
 		                    AND (RPA.FILE_GB  = 'I'
 		                         OR
-		                         RPA.FILE_GB = 'M' AND RP.CONFIRM_YN = 'Y'  AND  RPA.KMC_KEY IS NOT NULL
+		                         RPA.FILE_GB = 'M' AND RP.CONFIRM_YN = 'Y'  AND  NULLIF(RPA.KMC_KEY,'') IS NOT NULL
 		                        )
 		                    )
 		        </if>
@@ -246,13 +246,13 @@
 		<if test="reviewHeight != null and reviewHeight != ''">
 		 <![CDATA[
 		AND R.HEIGHT >= #{reviewHeightSt}
-		AND R.HEIGHT < #{reviewHeightEd}
+		AND R.HEIGHT <= #{reviewHeightEd}
 		]]>
 		</if>
 		<if test="reviewWeight != null and reviewWeight != ''">
 		<![CDATA[
 		AND R.WEIGHT >= #{reviewWeightSt}
-		AND R.WEIGHT < #{reviewWeightEd}
+		AND R.WEIGHT <= #{reviewWeightEd}
 		]]>
 		</if>
 		)Z

+ 2 - 7
src/main/resources/config/application-run.yml

@@ -29,7 +29,7 @@ logging.config: classpath:log/logback-run.xml
 domain:
     front: //www.style24.com
     image: //image.style24.com
-    uximage: //www.style24.com
+    uximage: //image.istyle24.com/Upload
 
 # SSL Server
 has-ssl: true
@@ -39,7 +39,7 @@ upload:
         target.path: /app/was/deploy/wivismall.front/data
         max.size: 10
         allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
-        view: //image.style24.com/speedy_image-wivismall
+        view: //image.istyle24.com/Upload
     goods:
         target.path: /app/was/deploy/wivismall.front/data/goods
         max.size: 10
@@ -50,11 +50,6 @@ upload:
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //image.istyle24.com/Upload
-    excel:
-        target.path: /app/was/deploy/wivismall.front/data/excel
-        max.size: 10
-        allow.extension: xls|xlsx
-        view: //www.style24.com/excel
 
 download.path: /app/was/deploy/wivismall.front/data
 

+ 2 - 1
src/main/resources/config/application-tsit.yml

@@ -23,7 +23,8 @@ domain:
 #    front: //tdfront.style24.com
     front: //ts5000.ipdisk.co.kr
     image: //tdimage.style24.com
-    uximage: //tdimage.style24.com
+#    uximage: //tdimage.style24.com
+    uximage: //ts5000.ipdisk.co.kr
 
 upload:
     default:

+ 138 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageCustSecedeCompleteFormMob.html
+ * @desc    : 마이페이지 > 회원탈퇴 완료 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.04   jsshin      최초 작성
+ *******************************************************************************
+ -->
+
+<body>
+<th:block layout:fragment="content">
+<main class="container my">
+	<section class="content myMbLeave">
+		<div class="inner">
+			<div class="mb_leave_complete">
+				<span th:text="${custNm}"></span>님의 STYLE24 회원탈퇴가<br> 정상적으로 처리되었습니다
+			</div>
+			<div class="tbl type5">
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
+					<thead>
+						<tr>
+							<th scope="col">진행중<p>(주문/취소/반품/교환)</p></th>
+							<th scope="col">포인트<p>(보유/적립예정)</p></th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>
+								<span class="hold_order">
+									<em id="ordCnt">0</em>&nbsp;/&nbsp;
+									<em id="cnclCnt">0</em>&nbsp;/&nbsp;
+									<em id="rtnCnt">0</em>&nbsp;/&nbsp;
+									<em id="exCnt">0</em>
+								</span>
+							</td>
+							<td>
+								<span class="hold_point">
+									<em id="pntAmt" th:text="|${#numbers.formatDecimal(pointInfo.rmPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>&nbsp;&nbsp;/&nbsp;
+									<em id="expAmt" th:text="|${#numbers.formatDecimal(pointInfo.expectedPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>
+								</span>
+							</td>
+						</tr>
+					</tbody>
+					<thead>
+						<tr>
+							<th scope="col">상품권 잔여금액</th>
+							<th scope="col">쿠폰</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>
+								<span class="hold_voucher">
+									<em id="giftAmt" th:text="|${#numbers.formatDecimal(rmGfcdAmt, 0, 'COMMA', 0, 'POINT')}원|">0원</em>
+								</span>
+							</td>
+							<td>
+								<span class="hold_coupon">
+									<em id="cpnCnt" th:text="|${#numbers.formatDecimal(couponCnt, 0, 'COMMA', 0, 'POINT')}장|">0장</em>
+								</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+
+		</div>
+
+		<div class="inner">
+			<div class="announce_txt">
+				<div class="announce_list">
+					<ul>
+						<li>탈퇴 시 소유하고 있는 포인트, 쿠폰 등은 모두 소멸됩니다.</li>
+						<li>거래 정보가 있는 경우 전자상서래 등에서의 소비자 보호에 관한 법률에 따라 계약 또는 청약철외에 관란 기록, 대금 결제 및 재화 등의 공급에 대한 기록은 5년 동안 보존됩니다.</li>
+						<li>보유하셨던 상품권 금액은 탈퇴와 함께 삭제되면 환불되지 않습니다.<br>회원탈퇴 후 STYLE24에 입력하신 상품문의 및 후기, 댓글은 삭제되지 않으며, 회원 정보 삭제로 인해 작성자 본인을 확인할 수 없어 편집 및 삭제 처리가 원천적으로 불가능합니다. 상품문의 및 후기, 댓글 삭제를 원하시는 경우에는 먼저 해당게시물을 삭제하신 후 탈퇴를 신청하시기 바랍니다.</li>
+						<li>진행 중인 주문/취소/반품/교환 건이 있을 경우 탈퇴가 되지 않습니다.</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="goods_btn_wrap btn_group_flex">
+				<div>
+					<button type="button" id="btnConfirm" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<span>확인</span>
+					</button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	const orderStatInfo = [[${orderStatInfo}]];
+
+	var fnOrderStatInit = function () {
+
+		// 진행중인 주문건
+		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPaymentCount
+			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount
+			+ orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount;
+		let total = orderTotal + orderStatInfo.cancelCount + orderStatInfo.returnCount + orderStatInfo.exchangeCount;
+
+		$('#ordCnt').text(orderTotal.addComma());
+		// 진행중인 취소건
+		$('#cnclCnt').text(orderStatInfo.cancelCount.addComma());
+		// 진행중인 반품건
+		$('#rtnCnt').text(orderStatInfo.returnCount.addComma());
+		// 진행중인 교환건
+		$('#exCnt').text(orderStatInfo.exchangeCount.addComma());
+		// 토탈 건수
+		$('#totalCnt').text(total);
+
+	}
+
+	$(document).ready( function() {
+		fnOrderStatInit();
+		$('#htopTitle').text('회원탈퇴');
+	});
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>

+ 293 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html

@@ -0,0 +1,293 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageCustSecedeFormMob.html
+ * @desc    : 마이페이지 > 탈퇴화면
+ *
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.04   jsshin      최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<style>
+.hide{display:none}
+</style>
+<main class="container my">
+	<section class="content myMbLeave">
+		<div class="inner">
+			<div id="leaveIncomplete" class="message hide">
+				<p class="msg_tit t_err">
+					고객님께서는 진행중인 주문/취소/반품/교환건이<br>
+					<span id="totalCnt"></span>건 이상 확인이 되어 탈퇴오청이 불가능 합니다.
+				</p>
+				<div class="content">
+					<p>
+						진행중인 건이 종료된 후 다시 시도해 주세요.
+					</p>
+				</div>
+			</div>
+			<div class="tbl type5">
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
+					<thead>
+						<tr>
+							<th scope="col">진행중<p>(주문/취소/반품/교환)</p></th>
+							<th scope="col">포인트<p>(보유/적립예정)</p></th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>
+								<span class="hold_order">
+									<em id="ordCnt">0</em>&nbsp;/&nbsp;
+									<em id="cnclCnt">0</em>&nbsp;/&nbsp;
+									<em id="rtnCnt">0</em>&nbsp;/&nbsp;
+									<em id="exCnt">0</em>
+								</span>
+							</td>
+							<td>
+								<span class="hold_point">
+									<em id="pntAmt" th:text="|${#numbers.formatDecimal(pointInfo.rmPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>&nbsp;/&nbsp;
+									<em id="expAmt" th:text="|${#numbers.formatDecimal(pointInfo.expectedPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>
+								</span>
+							</td>
+						</tr>
+					</tbody>
+					<thead>
+						<tr>
+							<th scope="col">상품권 잔여금액</th>
+							<th scope="col">쿠폰</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>
+								<span class="hold_voucher">
+									<em id="giftAmt" th:text="|${#numbers.formatDecimal(rmGfcdAmt, 0, 'COMMA', 0, 'POINT')}원|">0원</em>
+								</span>
+							</td>
+							<td>
+								<span class="hold_coupon">
+									<em id="cpnCnt" th:text="|${#numbers.formatDecimal(couponCnt, 0, 'COMMA', 0, 'POINT')}장|">0장</em>
+								</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+
+		</div>
+		<form id="secedeCustForm" class="form_wrap" action="/mypage/customer/secede/complete/form" method="post">
+		<div class="inner">
+			<div class="titWrap">
+				<div class="">보안을 위해 회원님의<br>아이디 및 비밀번호를 다시 확인 합니다.</div>
+			</div>
+				<div class="tblWrap">
+					<div class="tbl">
+						<table>
+							<colgroup>
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<td>
+										<div class="form_field">
+											<input type="text" id="custId" name="custId" class="form_control" readonly="readonly"/>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										<div class="form_field">
+											<input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요." minlength="8" maxlength="20"/>
+										</div>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+		</div>
+		<div class="inner">
+			<div class="announce_txt">
+				<div class="announce_list">
+					<ul>
+						<li>탈퇴 시 소유하고 있는 포인트, 쿠폰 등은 모두 소멸됩니다.</li>
+						<li>거래 정보가 있는 경우 전자상거래 등에서의소비자 보호에 관한 법률에 따라 계약 또는 청약철회에 과난 기록, 대금 결제 및 재화 등의 공급에 대한 기록은 5년 동안 보존됩니다.</li>
+						<li>보유하셨던 상품권 금액은 탈퇴와 함께 삭제되며 환불되지 않습니다.<br>회원탈퇴 후 STYLE24에 입력하신 상품문의 및 후기, 댓글은 삭제되지 않으면, 회원정보 삭제로 인해 작성자 본인을 확인할 수 없어 편집 및 삭제 처리가 원천적으로 불가능합니다. 상품문의 및 후기, 댓글 삭제를 원하시는 경우에는 먼저 해당 게시물을 삭제하신 후 탈퇴를 신청하시기 바랍니다.</li>
+						<li>진행 중인 주문/취소/반품/교환 건이 있을 경우 탈퇴가 되지 않습니다.</li>
+					</ul>
+				</div>
+			</div>
+			<div class="check_box">
+				<div class="form_field">
+					<div>
+						<input type="checkbox" name="checkSecede" id="checkSecede" value="Y">
+						<label for="checkSecede">
+							<span>STYLE24 회원탈퇴 시 처리사항 안내를 확인하였음에 동의합니다.</span>
+						</label>
+					</div>
+				</div>
+			</div>
+		</div>
+		</form>
+		<div class="inner">
+			<div class="goods_btn_wrap btn_group_flex">
+				<div>
+					<button type="button" id="btnSaveSecede" class="btn btn_dark">
+						<span>회원탈퇴</span>
+					</button>
+					<button type="button" id="btnConfirm" class="btn btn_dark hide" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<span>확인</span>
+					</button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	const orderStatInfo = [[${orderStatInfo}]];
+	const snsType = [[${snsType}]];
+	const custId = [[${custId}]];
+
+
+	var fnOrderStatInit = function () {
+		let $leaveIncomplete = $('#leaveIncomplete');
+		let $btnSaveSecede = $('#btnSaveSecede');
+		let $btnConfirm = $('#btnConfirm');
+		let $secedeCustForm = $('#secedeCustForm');
+		let $subH3 = $('.subH3');
+
+		let isPossible = true;
+
+		// 진행중인 주문건
+		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPaymentCount
+			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount
+			+ orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount;
+		let total = orderTotal + orderStatInfo.cancelCount + orderStatInfo.returnCount + orderStatInfo.exchangeCount;
+
+		$('#ordCnt').text(orderTotal.addComma());
+		// 진행중인 취소건
+		$('#cnclCnt').text(orderStatInfo.cancelCount.addComma());
+		// 진행중인 반품건
+		$('#rtnCnt').text(orderStatInfo.returnCount.addComma());
+		// 진행중인 교환건
+		$('#exCnt').text(orderStatInfo.exchangeCount.addComma());
+		// 토탈 건수
+		$('#totalCnt').text(total);
+
+		let custIdText = custId;
+		if (snsType === 'NV') {
+			custIdText = '네이버 간편가입회원'
+		}
+		if (snsType === 'KK') {
+			custIdText = '카카오 간편가입회원'
+		}
+		if (snsType === 'YS') {
+			custIdText = 'YES24 간편가입회원'
+		}
+		$('#secedeCustForm input[name=custId]').val(custIdText);
+
+		if (orderTotal > 0) {
+			$('#ordCnt').addClass('on');
+			isPossible = false
+		}
+
+		if (orderStatInfo.cancelCount > 0) {
+			$('#cnclCnt').addClass('on');
+			isPossible = false
+		}
+
+		if (orderStatInfo.returnCount > 0) {
+			$('#rtnCnt').addClass('on');
+			isPossible = false
+		}
+
+		if (orderStatInfo.exchangeCount > 0) {
+			$('#exCnt').addClass('on');
+			isPossible = false
+		}
+
+		if (isPossible) {
+			$subH3.show();
+			$secedeCustForm.show();
+			$btnConfirm.hide();
+			$leaveIncomplete.hide();
+			$btnSaveSecede.show();
+		} else {
+			$subH3.hide();
+			$secedeCustForm.hide();
+			$btnSaveSecede.hide();
+			$leaveIncomplete.show();
+			$btnConfirm.show();
+		}
+
+
+	}
+
+	$('#btnSaveSecede').on('click', function () {
+		let secedeCustInfo = $('#secedeCustForm').serializeObject();
+
+		if (gagajf.isNull(secedeCustInfo.passwd)) {
+			mcxDialog.alertC('비밀번호를 입력해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#secedeCustForm input[name=passwd]').focus();
+				}
+			});
+			return;
+		}
+
+		if (gagajf.isNull(secedeCustInfo.checkSecede)) {
+			mcxDialog.alertC('회원탈퇴 처리사항 안내에 동의해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+				}
+			});
+			return;
+		}
+		let params = {};
+		params.passwd = secedeCustInfo.passwd;
+		let jsonData = JSON.stringify(params);
+		gagajf.ajaxJsonSubmit('/mypage/customer/password/confirm', jsonData, fnConfirmPassword)
+	});
+
+	var fnConfirmPassword = function (result) {
+		if (result.isMatch) {
+			$("#secedeCustForm").submit();
+		} else {
+			mcxDialog.alertC('비밀번호를 다시 입력해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#secedeCustForm input[name=passwd]').focus();
+				}
+			});
+			return;
+		}
+	}
+
+
+
+	$(document).ready( function() {
+		fnOrderStatInit();
+		$('#htopTitle').text('회원탈퇴');
+	});
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>

+ 11 - 10
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -47,6 +47,7 @@
 			<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'}">
+			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 			</th:block>
 		</div>
 		</th:block>
@@ -85,7 +86,7 @@
 																		or #strings.contains(goodsImg.sysImgNm,'_M3')
 																		or #strings.contains(goodsImg.sysImgNm,'_M4')
 																		or #strings.contains(goodsImg.sysImgNm,'_M5')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>
 	</div>
@@ -108,7 +109,7 @@
 																		or #strings.contains(goodsImg.sysImgNm,'_D3')
 																		or #strings.contains(goodsImg.sysImgNm,'_D4')
 																		or #strings.contains(goodsImg.sysImgNm,'_D5')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>
 	</div>
@@ -118,7 +119,7 @@
 		<span class="tit_view">FABRIC</span>
 		<div class="view">
 			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>
 	</div>
@@ -131,7 +132,7 @@
 			<span>
 				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
 																		or #strings.contains(goodsImg.sysImgNm,'_L2')}">
-				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250}" alt="">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 				</th:block>
 			</span>
 		</div>
@@ -240,10 +241,10 @@
 		</div>
 	</div>
 	<!-- //상품필수정보 노출 -->
-	</div>
-	<div class="btn_more_box covered">
-		<button type="button" class="btn btn_default btn_md">
-			<span>상세정보 더보기</span>
-		</button>
-	</div>
+</div>
+<div class="btn_more_box covered">
+	<button type="button" class="btn btn_default btn_md">
+		<span>상세정보 더보기</span>
+	</button>
+</div>
 </html>

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

@@ -374,15 +374,15 @@
 				if (flag == "layer"){
 					$objUp.prepend(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt1');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
+					//$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
 					$objUp.prepend(tagUpS);
 					var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
-					$('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
+					//$('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else{
 					$objDown.prepend(tagDownS);
 					var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
+					//$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}
 				
 			}
@@ -489,15 +489,15 @@
 				if (flag == "layer"){
 					$objUp.prepend(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt2');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
+					//$('.pd_descrp_pop .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
 					$objUp.prepend(tagUpS);
 					var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
-					$('.pd_detail .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
+					//$('.pd_detail .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}else{
 					$objDown.prepend(tagDownS);
 					var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
+					//$('.pd_desc_wrap .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}
 			}
 			

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

@@ -46,7 +46,6 @@
 												</th:block>
 												<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
 												<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
-												
 												</th:block>
 												</span>
 											</a>
@@ -478,6 +477,7 @@
 						<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'}">
+						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 						</th:block>
 					</div>
 					</th:block>
@@ -519,7 +519,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_M3')
 																					or #strings.contains(goodsImg.sysImgNm,'_M4')
 																					or #strings.contains(goodsImg.sysImgNm,'_M5')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>
 				</div>
@@ -542,7 +542,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_D3.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D4.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>
 				</div>
@@ -552,7 +552,7 @@
 					<span class="tit_view">FABRIC</span>
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>
 				</div>
@@ -565,7 +565,7 @@
 						<span>
 							<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
 																					or #strings.contains(goodsImg.sysImgNm,'_L2')}">
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 							</th:block>
 						</span>
 					</div>
@@ -1349,34 +1349,34 @@
 					if (ridx == 1){
 						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');
 						//$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").addClass("on");
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").children(".combo").children(".list").css("display", "block");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").addClass("on");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").children(".combo").children(".list").css("display", "block");
 					}else if (ridx == 2){
 						var opt_selecter02_2 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_2');
 						//$('.opt_set_select .select_custom.item_opt2.item_opt2_2').find('.combo .select').trigger('click');
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_2").addClass("on");
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_2").children(".combo").children(".list").css("display", "block");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_2").addClass("on");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_2").children(".combo").children(".list").css("display", "block");
 					}else if (ridx == 3){
 						var opt_selecter02_3 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_3');
 						//$('.opt_set_select .select_custom.item_opt2.item_opt2_3').find('.combo .select').trigger('click');
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_3").addClass("on");
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_3").children(".combo").children(".list").css("display", "block");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_3").addClass("on");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_3").children(".combo").children(".list").css("display", "block");
 					}else if (ridx == 4){
 						var opt_selecter02_4 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_4');
 						//$('.opt_set_select .select_custom.item_opt2.item_opt2_4').find('.combo .select').trigger('click');
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_4").addClass("on");
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_4").children(".combo").children(".list").css("display", "block");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_4").addClass("on");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_4").children(".combo").children(".list").css("display", "block");
 					}else{
 						var opt_selecter02_5 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_5');
 						//$('.opt_set_select .select_custom.item_opt2.item_opt2_5').find('.combo .select').trigger('click');
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_5").addClass("on");
-						$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_5").children(".combo").children(".list").css("display", "block");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_5").addClass("on");
+						//$('.pd_detail .item_detail .opt_set_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_5").children(".combo").children(".list").css("display", "block");
 					}
 					
 				}else{
 					var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1');
-					$('.pd_detail .item_detail .opt_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").addClass("on");
-					$('.pd_detail .item_detail .opt_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").children(".combo").children(".list").css("display", "block");
+					//$('.pd_detail .item_detail .opt_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").addClass("on");
+					//$('.pd_detail .item_detail .opt_select .set_option .list li').closest(".form_field").siblings(".form_field").children(".item_opt2.item_opt2_1").children(".combo").children(".list").css("display", "block");
 					//$('.opt_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
 					
 				}	

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html

@@ -492,7 +492,7 @@
 				tag += '					<dt>구매옵션</dt>\n';
 				if (item.goodsOptionList != null && item.goodsOptionList.length > 0){
 					$.each(item.goodsOptionList, function(gIdx, goodsOption){
-				tag += '					<dd>'+ goodsOption.optCd1 +' / '+ goodsOption.optCd2 +'</dd>\n';		
+				tag += '					<dd>'+ goodsOption.optCd1Nm +' / '+ goodsOption.optCd2 +'</dd>\n';		
 					});
 				}
 				tag += '				</div>\n';

+ 6 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsReviewDetailFormWeb.html

@@ -101,21 +101,23 @@
 				tag +='			<div class="response_box">\n';
 				tag +='				<div class="full">\n';
 				tag +='					<dl>\n';
-				if (review.goodsOptionList != null && review.goodsOptionList.length > 0){
-					$.each(review.goodsOptionList, function(aIdx, reviewGoods){
+				
 				tag +='						<div>\n';
 				tag +='							<dt>구매옵션</dt>\n';
+				if (review.goodsOptionList != null && review.goodsOptionList.length > 0){
+					$.each(review.goodsOptionList, function(aIdx, reviewGoods){
 				tag +='							<dd>'+ reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2+'</dd>\n';
-				tag +='						</div>\n';
 					});		
 				}
+
+				tag +='						</div>\n';
 				tag +='					</dl>\n';
 				tag +='				</div>\n';
 				tag +='				<div class="full">\n';
 				tag +='					<dl>\n';
 				tag +='						<div>\n';
 				tag +='							<dt>키/몸무게</dt>\n';
-				tag +='							<dd>'+review.height+' / '+review.weight +' \n';
+				tag +='							<dd>'+review.height+'cm / '+review.weight +'kg \n';
 				tag +='							</dd>\n';
 				tag +='						</div>\n';
 				tag +='					</dl>\n';

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

@@ -48,7 +48,7 @@
 	var fnReviewPhotoGetList = function() {
 
 	// Initialize a pagination
-		gagaPaging.init('goodsReviewPhotoForm', fnReviewPhotoGetListCallback, 'reviewPhtoPageNav', 1);
+		gagaPaging.init('goodsReviewPhotoForm', fnReviewPhotoGetListCallback, 'reviewPhtoPageNav', 20);
 
 		// Load data
 		gagaPaging.load(1);
@@ -70,10 +70,15 @@
 				tag += '				<li>\n';
 				tag += '					<a href="javascript:void();" onclick="fnGoodsReviewDetail(\''+item.reviewSq+'\');">\n';
 				tag += '						<div class="pic">\n';
-				tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+				if ("I" ==reviewAttach.fileGb){
+					tag += '							<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->	
+				}else{
+					tag += '							<span class="thumb '+ fileGbClass +'"><iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></span>\n';	
+				}
 				tag += '						</div>\n';
 				tag += '					</a>\n';
 				tag += '				</li>\n';		
+						return false;
 					});	
 				}
 				

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsShopBenefitFormWeb.html

@@ -77,7 +77,7 @@
 								<tr th:each="freeGoods, status : ${freeGoodsList}">
 									<td>
 										<div class="th"><th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시</div>
-										<div class="td"><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></div>
+										<div class="td"><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></div>
 									</td>
 								</tr>
 							</tbody>

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

@@ -17,7 +17,6 @@
  *******************************************************************************
  -->
 <body>
-
 <!--  container -->
 <th:block layout:fragment="content">
 	<div class="content myMbLeave"> <!-- 페이지특정 클래스 = myMbLeave -->
@@ -115,7 +114,7 @@
 									<td>
 										<div class="form_field">
 											<div class="input_wrap">
-												<input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요."/>
+												<input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요." minlength="8" maxlength="20"/>
 											</div>
 										</div>
 									</td>

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

@@ -170,7 +170,7 @@
 				html += '							<span class="title sr-only">주문 옵션</span>                                                      ';
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + ' / ' + item.optCd2Arr[index2] + '</span>\n';
+						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + '</span>\n';
 					})
 				}else{
 					html += '							<span class="option">'+item.colorNm+'</span>     ';
@@ -234,7 +234,7 @@
 				html+='								<span class="title sr-only">주문 옵션</span>';
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + ' / ' + item.optCd2Arr[index2] + '</span>\n';
+						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option +'</span>\n';
 					})
 				}else{
 					html += '							<span class="option">'+item.colorNm+'</span>     ';

+ 13 - 27
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -674,36 +674,22 @@ if(coupon.length>0){
 		html += '					<div>';
 		html += '						<p class="cp_name">'+item.cpnNm+'</p>';
 		html += '						<p class="cp_cont">';
-		if (item.dcWay == '할인율') {
-			html += '							<span> <span><em>'+item.dcPval+'%</em></span>';
-		}else{
-			html += '							<span><em>'+item.dcPval.addComma()+'</em>원</span>'; 
-		}
+		html += '							<span><em>'+item.dcVal+'</em>'+item.dcWay+'</span>';
 		html += '						</p>';
-		html += '						<p class="cp_condition">'+item.buyLimitAmt.addComma()+'원 이상 구매 시 최대 ' +item.maxDcAmt.addComma()+'원 할인';
-
-		if (item.custPubLimitQty != 0) {
-			html += '								<span>1인 최대 '+item.custPubLimitQty+'장</span>';	
-		}
+		html += '						<p class="cp_condition">'+item.useCondition;
+		html += '								<span>'+item.issueCondition+'</span>';	
 		html += '						</p>';
 		html += '					</div>';
-		if(typeof item.couponStat != 'undefined'){
-			if (item.couponStat == '쿠폰받기') {
-				html += '					<button type="button" id="coupon_" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
-				html += '						<span>쿠폰받기</span>';								/* 받기완료  */
-				html += '					</button>';			
-			}else{
-				html += '					<button type="button"';
-				html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>';  
-				html += '						<span>받기완료</span>';								
-				html += '					</button>';			
-			}
-		}else{
-			html += '					<button type="button" id="coupon_" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
+		if (item.couponStat == '쿠폰받기') {
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
 			html += '						<span>쿠폰받기</span>';								/* 받기완료  */
-			html += '					</button>';		
+			html += '					</button>';			
+		}else{
+			html += '					<button type="button"';
+			html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>';  
+			html += '						<span>받기완료</span>';								
+			html += '					</button>';			
 		}
-		
 		html += '				</div>';
 		html += '				<button type="button" class="btn_underline"	id="btn_couponInfo_pop" onclick="useInfoCoupon('+item.cpnId+')">';
 		html += '					<span>사용안내</span>';
@@ -771,8 +757,8 @@ var fnPlanCouponDown = function(obj){
 
 // 쿠폰다운로드 콜백
 var fnPlanCouponCallBack = function(result){
-	
-	// 화면 전환 필요		
+	$('#coupon_'+ result.cpnId).html('<span>받기완료</span>');
+	$('#coupon_'+ result.cpnId).attr('disabled', true);
 }
 
 // 설문조사 참여 버튼 클릭