Selaa lähdekoodia

Merge branch 'develop' into bin2107

bin2107 4 vuotta sitten
vanhempi
commit
b7ae1438cf

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

@@ -512,4 +512,24 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getPlanContentInfo(Plan plan);
 	
+	/**
+	 * 총알배송 브랜드 리스트 
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 6. 29
+	 */
+	Collection<Plan> getShotBrandList();
+	
+	/**
+	 * 총알배송 브랜드 리스트 
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 6. 29
+	 */
+	Collection<Plan> getShotDeliveryGoodsList(Plan plan);
+	
 }

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

@@ -713,7 +713,7 @@ public class TsfCartService {
 						}
 					} else {                                                                // 할인 방식 할인율일 경우
 						tempAmt = resultAmt.getCurrPrice();
-						tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
+						tempAmt = (tempAmt - (int) (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
 						resultAmt.setTmtbDcAmt(tempAmt);
 
 						// 2021.04.29 다다익선할인금액수정
@@ -763,7 +763,7 @@ public class TsfCartService {
 						}
 					} else {                                                                // 할인 방식 할인율일 경우
 						tempAmt = resultAmt.getCurrPrice();
-						tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
+						tempAmt = (tempAmt - (int) (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
 						resultAmt.setTmtbDcAmt(tempAmt);
 
 						// 2021.04.29 다다익선할인금액수정
@@ -781,6 +781,11 @@ public class TsfCartService {
 						cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
 
 						cart.setTmtbDcAmt(apply.getTmtbDcAmt());
+						
+						log.info("cart.getTmtb1DcAmt() ::: {}", cart.getTmtb1DcAmt());
+						log.info("cart.getTmtb2DcAmt() ::: {}", cart.getTmtb2DcAmt());
+						log.info("cart.getTmtbDcAmt() ::: {}", cart.getTmtbDcAmt());
+						
 						cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
 						cart.setQtyTmtbNm(apply.getQtyTmtbNm());
 						cart.setQtyTmtbSq(apply.getQtyTmtbSq());

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

@@ -150,7 +150,10 @@ public class TsfOrderService {
 				&& !TscConstants.OrderDetailStat.DEPOSIT_WAIT.value().equals(tmpOrder.getOrdDtlStat())
 				&& !TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value().equals(tmpOrder.getOrdDtlStat())
 				&& !TscConstants.OrderDetailStat.GOODS_PREPARE.value().equals(tmpOrder.getOrdDtlStat())) {
-				allCanYn = "N";
+				// 2021.06.28 취소수량 존재 시 전체취소 불가 처리
+				if (tmpOrder.getCnclRtnQty() > 0) {
+					allCanYn = "N";
+				}
 			}
 
 			// 전체 구매확정 가능 여부 설정

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

@@ -705,5 +705,29 @@ public class TsfPlanningService {
 	 public Collection<Plan> getPlanContentInfo(Plan plan) {
 		 return planningDao.getPlanContentInfo(plan);
 	 }
+	 
+	 /**
+	 * 총알배송 브랜드 리스트 
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 6. 29
+	 */
+	public Collection<Plan> getShotBrandList(){
+		return planningDao.getShotBrandList();
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품 리스트 
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 6. 29
+	 */
+	public Collection<Plan> getShotDeliveryGoodsList(Plan plan){
+		return planningDao.getShotDeliveryGoodsList(plan);
+	}
 	
 }

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

@@ -578,11 +578,10 @@ public class TsfPlanningController extends TsfBaseController {
 	 * @since 2021. 3. 30
 	 */
 	@GetMapping("/shot/delivery/guide/form")
-	public ModelAndView planningShotDeliveryForm(@RequestParam(value="planGb",required = true)String planGb ,Plan plan) throws Exception {
+	public ModelAndView planningShotDeliveryForm(Plan plan) throws Exception {
 		ModelAndView mav = new ModelAndView();
 		Integer planSq = planningService.getShotPlanSq(plan);
 		plan.setPlanSq(planSq);
-		plan.setPlanGb(planGb);
 		
 		CustDeliveryAddr addr = new CustDeliveryAddr();
 		Integer custNo = null;
@@ -601,9 +600,9 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setCustGb(TsfSession.getCustGb());
 		// 코너 목록
-		mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
+		mav.addObject("shotBrandList", planningService.getShotBrandList());
 		// 코너 상품
-		mav.addObject("planCornerGoodsList", planningService.getPlanningCornerGoodsList(plan));
+		mav.addObject("shotBrandGoodsList", planningService.getShotDeliveryGoodsList(plan));
 
 		addr.setCustNo(custNo);
 		

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

@@ -94,6 +94,7 @@ public class Plan extends TscBaseDomain {
 	private String viewDt;			// 미리보기 일시
 	private String preview;			// 미리보기 여부 (Y:미리보기)
 	private Integer attachSq;
+	private String brandNm;
 
 	// 기획전 브랜드
 	private Integer brandGroupNo;	//기획전브랜드그룹번호

+ 190 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1734,4 +1734,194 @@
 		AND DISP_YN = 'Y'
 	</select>
 	
+	<select id="getShotBrandList" resultType="Plan" parameterType="Plan">
+		/* TsfPlanning.getShotBrandList */	
+		SELECT SDB.BRAND_GROUP_NO
+		      , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                BG.BRAND_GROUP_ENM
+		            ELSE
+		                BG.BRAND_GROUP_KNM
+		       END                                     AS BRAND_NM
+		  , SDB.CORNER_DISP_TYPE
+		  , SDB.DISP_ORD
+		  , SDB.REG_DT
+		FROM TB_SHOT_DELV_BRAND SDB INNER JOIN TB_BRAND_GROUP BG 
+		  ON SDB.BRAND_GROUP_NO = BG.BRAND_GROUP_NO 
+		WHERE BG.USE_YN = 'Y'
+		ORDER BY SDB.DISP_ORD 
+	</select>
+	
+	<!-- 총알배송 상품 목록 -->
+	<select id="getShotDeliveryGoodsList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getShotDeliveryGoodsList */	
+		WITH TAB_BRAND_GOODS AS (
+		   SELECT RNK.*
+		        ,(CASE WHEN RNK.LIST_PRICE > 0 THEN 100 - ROUND((RNK.CURR_PRICE / RNK.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
+		      FROM
+		         (
+		          SELECT  ROW_NUMBER() OVER (PARTITION BY GOODS.BRAND_GROUP_NO ORDER BY GOODS.DISP_ORD DESC) AS RNUM
+		                 , GOODS.*
+		            FROM 
+		                (
+		                 SELECT 
+		                    CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                             BG.BRAND_GROUP_ENM
+		                         ELSE
+		                             BG.BRAND_GROUP_KNM
+		                    END                                    AS BRAND_NM /*브랜드그룹명*/
+		                  , SDB.BRAND_GROUP_NO 
+		                  , SDB.DISP_ORD
+		                  , G.GOODS_CD 
+		                  , G.GOODS_NM 
+		                  , G.GOODS_GB                                               /*상품구분*/
+		                  , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		                  , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		                  , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		                  , G.GOODS_TNM                                              /*상품타이틀명*/
+		                  , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		                  , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		                  , G.CURR_PRICE                                             /*현재판매가*/
+		                FROM   TB_SHOT_DELV_BRAND SDB
+		                                 INNER JOIN TB_SHOT_DELV_GOODS SDG
+		                        ON SDB.BRAND_GROUP_NO = SDG.BRAND_GROUP_NO
+		                                 INNER JOIN TB_GOODS G
+		                        ON SDG.GOODS_CD = G.GOODS_CD 
+		                          		  INNER JOIN TB_BRAND B
+		                        ON G.BRAND_CD = B.BRAND_CD 
+		                                 INNER JOIN TB_BRAND_GROUP BG 
+		                        ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO 
+		                                 INNER JOIN TB_GOODS_STOCK GS
+		                        ON SDG.GOODS_CD = GS.GOODS_CD 
+		                WHERE  1=1  
+		                AND    G.GOODS_CD NOT IN (SELECT GOODS_CD FROM TB_GOODS_SHOT_DELV_SKIP GSDS)
+		                AND    G.SELF_GOODS_YN = 'Y'
+		                AND    G.SELF_MALL_YN = 'Y'
+		                AND    SDG.DEL_YN = 'N'
+		                AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*현재 판매되는 상품*/
+		                AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		                AND    BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		                AND    GS.STOCK_QTY  <![CDATA[>]]>  0 /*재고있는상품*/
+		                UNION 
+		                SELECT 
+		                       CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                                BG.BRAND_GROUP_ENM
+		                            ELSE
+		                                BG.BRAND_GROUP_KNM
+		                       END                                    AS BRAND_NM /*브랜드그룹명*/
+		                     , SDB.BRAND_GROUP_NO 
+		                     , SDB.DISP_ORD
+		                     , G.GOODS_CD 
+		                     , G.GOODS_NM 
+		                     , G.GOODS_GB                                               /*상품구분*/
+		                     , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		                     , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		                     , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		                     , G.GOODS_TNM                                              /*상품타이틀명*/
+		                     , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		                     , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		                     , G.CURR_PRICE                                             /*현재판매가*/
+		                FROM   TB_SHOT_DELV_BRAND SDB
+		                                  INNER JOIN TB_BRAND_GROUP BG 
+		                        ON SDB.BRAND_GROUP_NO = BG.BRAND_GROUP_NO 
+		                                  INNER JOIN TB_BRAND B
+		                        ON BG.BRAND_GROUP_NO = B.BRAND_GROUP_NO 
+		                                 INNER JOIN TB_GOODS G
+		                        ON B.BRAND_CD = G.BRAND_CD 
+		                                 INNER JOIN TB_GOODS_STOCK GS
+		                        ON G.GOODS_CD = GS.GOODS_CD 
+		                WHERE  1=1  
+		                AND    G.GOODS_CD NOT IN (SELECT GOODS_CD FROM TB_GOODS_SHOT_DELV_SKIP GSDS)
+		                AND    G.SELF_GOODS_YN = 'Y'
+		                AND    G.SELF_MALL_YN = 'Y'
+		                AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*현재 판매되는 상품*/
+		                AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		                AND    BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		                AND    GS.STOCK_QTY  <![CDATA[>]]>  0 /*재고있는상품*/
+		               )GOODS 
+		        )RNK
+		   WHERE RNK.RNUM <![CDATA[<=]]> 100
+		)
+		, TAB_GOODS_IMG AS (
+		        /* 상품의 이미지 */
+		            SELECT BG.GOODS_CD
+		                 , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
+		            FROM   TAB_BRAND_GOODS BG
+		                 , TB_GOODS_IMG GI
+		            WHERE  BG.GOODS_CD = GI.GOODS_CD
+		            AND    BG.MAIN_COLOR_CD = GI.COLOR_CD
+		            AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
+		            GROUP  BY BG.GOODS_CD
+		)
+		, TAB_COLORCHIP AS (
+		            /* 상품 컬러칩 */
+		            SELECT BG.GOODS_CD
+		                 , GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
+		            FROM   TAB_BRAND_GOODS BG
+		                 , TB_OPTION O
+		                 , TB_COLOR C
+		                 , TB_COMMON_CODE CC
+		            WHERE  BG.GOODS_CD = O.GOODS_CD
+		            AND    O.OPT_CD1 = C.COLOR_CD
+		            AND    C.COLOR_GRP_CD = CC.CD
+		            AND    O.DISP_YN = 'Y'
+		            AND    C.USE_YN = 'Y'
+		            AND    CC.USE_YN = 'Y'
+		            GROUP  BY BG.GOODS_CD
+		)
+		, TAB_GOODS_BENEFIT AS (
+		            /* 상품혜택 */
+		            SELECT GOODS_CD
+		                 , GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',') AS ICON
+		            FROM   (
+		                    SELECT BG.GOODS_CD
+		                         , GB.BENEFIT_GB
+		                         , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
+		                                WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
+		                                WHEN GB.BENEFIT_GB = '30' THEN '사은품'
+		                                WHEN GB.BENEFIT_GB = '40' THEN '신상'
+		                                ELSE '총알배송'
+		                           END                               AS BENEFIT_NM
+		                         , RANK() OVER(PARTITION BY BG.GOODS_CD
+		                                       ORDER BY GB.BENEFIT_GB
+		                                              , GB.GOODS_CD) AS NUMB
+		                    FROM   TAB_BRAND_GOODS BG
+		                         , TB_GOODS_BENEFIT GB
+		                    WHERE  BG.GOODS_CD = GB.GOODS_CD
+		                   ) Z
+		            GROUP  BY GOODS_CD
+		)
+		 SELECT 
+		        BG.RNUM
+		      , BG.BRAND_NM
+		      , BG.GOODS_CD
+		      , BG.BRAND_GROUP_NO
+		      , FN_GET_GOODS_NM(BG.GOODS_NM,BG.GOODS_GB,BG.FOREIGN_BUY_YN,BG.PARALLEL_IMPORT_YN,BG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		      , BG.GOODS_NM
+		      , BG.GOODS_TNM
+		      , BG.MAIN_COLOR_CD
+		      , BG.LIST_PRICE
+		      , FN_GET_BENEFIT_PRICE( #{frontGb} /**P*/,BG.GOODS_CD,BG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
+		      , GI.SYS_IMG_NM
+		      , C.COLOR_CHIPS                                                                                                      /*컬러칩*/
+		      , GB.ICON                                                                                                            /*혜택아이콘*/
+		       <choose>
+	                 <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+	             , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+	                 </when>
+	                 <otherwise>
+	             , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+	                 </otherwise>
+		      </choose>
+		FROM   TAB_BRAND_GOODS BG
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON BG.GOODS_CD = GI.GOODS_CD
+		LEFT OUTER JOIN TAB_COLORCHIP C ON BG.GOODS_CD = C.GOODS_CD
+		LEFT OUTER JOIN TAB_GOODS_BENEFIT GB ON BG.GOODS_CD = GB.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON BG.GOODS_CD = W.GOODS_CD
+		        AND W.CUST_NO = #{custNo}
+        </if>
+	</select>
+	
 </mapper>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html

@@ -33,7 +33,7 @@
 				if (_osType === 'A') {
 					 window.style24.getPushList();
 				} else if (_osType === 'I') {
-
+					window.webkit.messageHandlers.getPushList.postMessage({"dummy":"dummy"});
 				}
 			} else {
 				$('#notice').addClass('nodata');

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

@@ -983,25 +983,25 @@ var paymentInfoSet = function() {
 					}
 					
 					if (displayTemp == false) {
-						$("#orderForm .area_paymentinfo .agree1").hide();
-						
 						if (delvCnt > 0) {
 							$("#orderForm .area_paymentinfo .paymentinfo").show();
 						} else {
 							$("#orderForm .area_paymentinfo .paymentinfo").hide();
 						}
+						$("#orderForm .area_paymentinfo .agree1").hide();
 					}
 				});
 
 				// 2021.05.16 초기값설정
 				$("#orderForm .area_paymethod .agree_insurance").hide();
-				$("#orderForm .area_paymentinfo .agree1").hide();
 				
 				if (delvCnt > 0) {
 					$("#orderForm .area_paymentinfo .paymentinfo").show();
 				} else {
 					$("#orderForm .area_paymentinfo .paymentinfo").hide();
 				}
+				
+				$("#orderForm .area_paymentinfo .agree1").hide();
 
 				// 결제하기
 				$("#btn_payment").on("click", function(){

+ 10 - 12
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -118,8 +118,8 @@
                     </div>
                     <div class="popup_con">
                         <div class="button_list clear">
-                        	<th:block th:if="${planCornerList!=null}" th:each="a, cornerStat : ${planCornerList}">
-                           	 <button type="button" th:onclick="fnCornerClick([[${cornerStat.index+1}]], [[${a.cornerNm}]])"><span th:text="${a.cornerNm}"></span></button>
+                        	<th:block th:if="${shotBrandList!=null}" th:each="a, cornerStat : ${shotBrandList}">
+                           	 <button type="button" th:onclick="fnCornerClick([[${cornerStat.index+1}]], [[${a.brandNm}]])"><span th:text="${a.brandNm}"></span></button>
                             </th:block>
                         </div>
                     </div>
@@ -166,17 +166,17 @@
 <script th:inline="javascript">
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let planCornerList = [[${planCornerList}]];
-let planCornerGoodsList = [[${planCornerGoodsList}]];
-if(planCornerList.length>0){
+let shotBrandList = [[${shotBrandList}]];
+let shotBrandGoodsList = [[${shotBrandGoodsList}]];
+if(shotBrandList.length>0){
 	var html = '';
-	$.each(planCornerList, function(idx, item)  {
+	$.each(shotBrandList, function(idx, item)  {
 		html += '<div class="inner" id="type'+idx+'">';
 		html += '	<div class="dp_listItems_wrap type1">';
-		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>';
+		html += '		<h2 class="dp_subtitle">'+item.brandNm+'</h2>';
 		html += '			<div class="itemsGrp">';
-		$.each(planCornerGoodsList, function(idx2, item2)  {
-			if (item2.cornerNm == item.cornerNm) {
+		$.each(shotBrandGoodsList, function(idx2, item2)  {
+			if (item2.brandGroupNo == item.brandGroupNo) {
 			html += '				<div class="item_prod">';
 			html += '					<div class="item_state">';
 			if(item2.likeIt === 'likeit'){
@@ -333,8 +333,6 @@ var fnCornerClick = function (result1,result2) {
 	
 }
 
-
-
 //팝업_닫기
 $('.popup_close').on("click",function(){
     $('.popup_box').hide().removeClass('active');
@@ -344,7 +342,7 @@ $('.popup_close').on("click",function(){
 
 $(document).ready(function(){
 	shotBody();
-	$("#filter").text(planCornerList[0].cornerNm);
+	$("#filter").text(shotBrandList[0].brandNm);
 	// 다른기획전
 
 	$(window).scroll(function(){

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

@@ -828,19 +828,19 @@
 						<div th:id="${'goodsDescHtml_' + goodsCompose.compsGoodsCd}"></div>
 					</th:block>
 
-					<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
+					<th:block th:if="${goodsCompose.tobeFormYn == 'Y'}">
 						<!-- 착용컷 노출 -->
-						<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
-															or #strings.contains(goodsImgList,'_C2')
-															or #strings.contains(goodsImgList,'_C3')
-															or #strings.contains(goodsImgList,'_C4')
-															or #strings.contains(goodsImgList,'_C5')}">
+						<div class="view_outfit_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_C1') 
+															or #strings.contains(goodsCompose.goodsImgList,'_C2')
+															or #strings.contains(goodsCompose.goodsImgList,'_C3')
+															or #strings.contains(goodsCompose.goodsImgList,'_C4')
+															or #strings.contains(goodsCompose.goodsImgList,'_C5')}">
 							<span class="tit_view">OUTFIT VIEW</span>
-							<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+							<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${status.first}">
 							<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
 							</th:block>
 							<div class="view">
-								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
 																							or #strings.contains(goodsImg.sysImgNm,'_C2')
 																							or #strings.contains(goodsImg.sysImgNm,'_C3')
 																							or #strings.contains(goodsImg.sysImgNm,'_C4')
@@ -852,20 +852,20 @@
 						
 						<!-- //착용컷 노출 -->
 						<!-- 상품컷 노출 -->
-						<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
-															or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
-															or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
-															or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
-															or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
-															or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
-															or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
-															or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
-															or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
-															or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
-															or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
+						<div class="view_detail_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_01') or #strings.contains(goodsCompose.goodsImgList,'_02')
+															or #strings.contains(goodsCompose.goodsImgList,'_D1') or #strings.contains(goodsCompose.goodsImgList,'_D2')
+															or #strings.contains(goodsCompose.goodsImgList,'_D3') or #strings.contains(goodsCompose.goodsImgList,'_D4')
+															or #strings.contains(goodsCompose.goodsImgList,'_D5') or #strings.contains(goodsCompose.goodsImgList,'_D6')
+															or #strings.contains(goodsCompose.goodsImgList,'_D7') or #strings.contains(goodsCompose.goodsImgList,'_D8')
+															or #strings.contains(goodsCompose.goodsImgList,'_D9') or #strings.contains(goodsCompose.goodsImgList,'_D10')
+															or #strings.contains(goodsCompose.goodsImgList,'_D11') or #strings.contains(goodsCompose.goodsImgList,'_D12')
+															or #strings.contains(goodsCompose.goodsImgList,'_D13') or #strings.contains(goodsCompose.goodsImgList,'_D14')
+															or #strings.contains(goodsCompose.goodsImgList,'_D15') or #strings.contains(goodsCompose.goodsImgList,'_D16')
+															or #strings.contains(goodsCompose.goodsImgList,'_D17') or #strings.contains(goodsCompose.goodsImgList,'_D18')
+															or #strings.contains(goodsCompose.goodsImgList,'_D19') or #strings.contains(goodsCompose.goodsImgList,'_D20')}">
 							<span class="tit_view">PRODUCT VIEW</span>
 							<div class="view">
-								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') or #strings.contains(goodsImg.sysImgNm,'_02')
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') or #strings.contains(goodsImg.sysImgNm,'_02')
 																							or #strings.contains(goodsImg.sysImgNm,'_D1') or #strings.contains(goodsImg.sysImgNm,'_D2')
 																							or #strings.contains(goodsImg.sysImgNm,'_D3') or #strings.contains(goodsImg.sysImgNm,'_D4')
 																							or #strings.contains(goodsImg.sysImgNm,'_D5') or #strings.contains(goodsImg.sysImgNm,'_D6')
@@ -882,22 +882,22 @@
 						</div>
 						<!-- //상품컷 노출 -->
 						<!-- 원단 노출 -->
-						<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
+						<div class="view_fabric_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_F1')}">
 							<span class="tit_view">FABRIC</span>
 							<div class="view">
-								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
 								<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>
 						<!-- //원단 노출 -->
 						<!-- 라벨 노출 -->
-						<div class="view_label_box" th:if="${#strings.contains(goodsImgList,'_L1') 
-															or #strings.contains(goodsImgList,'_L2')}">
+						<div class="view_label_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_L1') 
+															or #strings.contains(goodsCompose.goodsImgList,'_L2')}">
 							<span class="tit_view">LABEL INFO</span>
 							<div class="view">
 								<span>
-									<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
+									<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
 																							or #strings.contains(goodsImg.sysImgNm,'_L2')}">
 									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									</th:block>
@@ -906,9 +906,9 @@
 						</div>
 						
 						<!-- //네이밍룰 안맞는 이미지 노출 -->
-						<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
+						<div class="view_detail_box" th:if="${not #strings.contains(goodsCompose.goodsImgList,'_01')}">
 							<div class="view">
-								<th:block th:each="goodsImg, status : ${goodsImgList}" >
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" >
 									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									</th:block>
 							</div>

+ 5 - 5
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -956,24 +956,24 @@ var paymentInfoSet = function() {
 					}
 					
 					if (displayTemp == false) {
-						$("#orderForm .area_paymentinfo .agree1").hide();
-						
 						if (delvCnt > 0) {
 							$("#orderForm .area_paymentinfo .paymentinfo").show();
 						} else {
 							$("#orderForm .area_paymentinfo .paymentinfo").hide();
 						}
+						$("#orderForm .area_paymentinfo .agree1").hide();
 					}
 				});
 
-				// 2021.05.16 초기값설정
-				$("#orderForm .area_paymentinfo .agree1").hide();
 				if (delvCnt > 0) {
 					$("#orderForm .area_paymentinfo .paymentinfo").show();
 				} else {
 					$("#orderForm .area_paymentinfo .paymentinfo").hide();
 				}
 				
+				// 2021.05.16 초기값설정
+				$("#orderForm .area_paymentinfo .agree1").hide();
+				
 				// 결제하기
 				$("#btn_payment").on("click", function(){
 					// 사은품정보
@@ -1464,7 +1464,7 @@ var dcAmtInfoSet = function() {
 					}
 					
 					// 2021.04.23 추가
-					mcxDialog.alert("총 " + getZeroMinusDelAmt(pntDcAmt) + " P를 차감 결제 합니다.");
+					mcxDialog.alert("총 " + pntDcAmt + " P를 차감 결제 합니다.");
 					
 					// 포인트 적용
 					$("#orderAmtForm .pntDcSumAmt").text(pntDcAmt);

+ 10 - 19
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -28,11 +28,6 @@
 		</div>
 		<div class="wrap">
 			<div class="content wide dp_Bulletship"> <!-- 페이지특정 클래스 = dp_Bulletship -->
-				<div class="cont_head">
-					<div>
-                        <h3>총알배송</h3>
-                    </div>
-				</div>
 				<div class="cont_body">
 				    <div class="bulletship">
 						<!-- <div class="bulletship_head" th:utext="${#strings.replace(#strings.replace(shotHtmlTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"> -->
@@ -148,43 +143,39 @@
 /*<![CDATA[*/
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let planCornerList = [[${planCornerList}]];
-let planCornerGoodsList = [[${planCornerGoodsList}]];
+let shotBrandList = [[${shotBrandList}]];
+let shotBrandGoodsList = [[${shotBrandGoodsList}]];
 // 로그인 확인
-if(planCornerList.length>0){
+if(shotBrandList.length>0){
 	var html = '';
 	
 	html += '<div class="cont_head">';
 	html += '     <div class="sticky_nav">';
 	html += '         <ul>    ';
-	$.each(planCornerList, function(idx, item)  {
-		html += '             <li><a href="#brand'+idx+'">'+item.cornerNm+'</a></li>';
+	$.each(shotBrandList, function(idx, item)  {
+		html += '             <li><a href="#brand'+idx+'">'+item.brandNm+'</a></li>';
 	})
 	html += '         </ul>';
 	html += '     </div>';
 	html += '</div>';
 	html += '<div class="cont_body">';
 	html += '     <div class="list_content">';
-	$.each(planCornerList, function(idx, item)  {
+	$.each(shotBrandList, function(idx, item)  {
 		html += '         <div id="brand'+idx+'">';
 		html += '             <div class="item_header">';
-		html += '                 <h4>'+item.cornerNm+'</h4>';
+		html += '                 <h4>'+item.brandNm+'</h4>';
 		html += '             </div>';
 		html += '             <div class="itemsGrp';
-		if (item.cornerDispType == 'G045_1') {
-			html += ' cut1';
-		}else if(item.cornerDispType == 'G045_2'){
+		if(item.cornerDispType == 'G045_2'){
 			html += ' cut2';
-		}else if(item.cornerDispType == 'G045_3'){
-			html += ' cut3';
 		}else if(item.cornerDispType == 'G045_4'){
 			html += ' cut4';
 		}else if(item.cornerDispType == 'G045_5'){
 			html += ' cut5';
 		}
 		html += '">';
-		$.each(planCornerGoodsList, function(idx2, item2)  {
-			if (item2.cornerNm == item.cornerNm) {
+		$.each(shotBrandGoodsList, function(idx2, item2)  {
+			if (item2.brandGroupNo == item.brandGroupNo) {
 				html += '                 <div class="item_prod">';
 				html += '                     <div class="item_state">';
 				if(item2.likeIt === 'likeit'){

+ 11 - 11
src/main/webapp/biz/mypage.js

@@ -412,7 +412,7 @@ var fnReceipt = function(param) {
 		// 팝업 크기 설정
 		option = 'width=455, height=815';
 	}
-console.log(receiptWin);
+
 	// 팝업 생성
 	window.open(receiptWin, "", option);
 }
@@ -436,16 +436,16 @@ var fnGetTextLength = function(obj, maxLen) {
 // 리뷰작성 페이지 이동
 var fnReviewCreate = function(obj1,obj2,obj3) {
 	let ordNo = obj1;
-		let ordDtlNo = obj2;
-		let goodsCd = obj3;
-		let reviewStat = 'c';
-		
-		$('#createReview input[name=ordNo]').val(ordNo);
-		$('#createReview input[name=ordDtlNo]').val(ordDtlNo);
-		$('#createReview input[name=goodsCd]').val(goodsCd);
-		$('#createReview input[name=reviewStat]').val(reviewStat);
-		
-		document.createReview.submit();
+	let ordDtlNo = obj2;
+	let goodsCd = obj3;
+	let reviewStat = 'c';
+	
+	$('#createReview input[name=ordNo]').val(ordNo);
+	$('#createReview input[name=ordDtlNo]').val(ordDtlNo);
+	$('#createReview input[name=goodsCd]').val(goodsCd);
+	$('#createReview input[name=reviewStat]').val(reviewStat);
+	
+	document.createReview.submit();
 }
 
 // 취반교 신청 취소 버튼 클릭 이벤트

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

@@ -1960,7 +1960,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 
 
 /* Notch  */
-@media only screen and (min-width: 375px) and (max-width: 415px) and (min-height: 722px) and (max-height: 897px){/* footer{padding-bottom: 8rem;}  *//* footer .f1 {padding: 0 0 8.5rem;}  *//* footer .btn_top {bottom: 20.5%;} */.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.shopping_bag .od_calc_wrap{padding-bottom: 8.8rem; background-color: #f5f5f5; background-color: #aa2020;}.cs_contactUs_my_footer,.product_floormenu,.product_floormenu.fixed{/*height: calc(env(safe-area-inset-bottom) + 8.8rem);height: calc(constant(safe-area-inset-bottom) + 8.8rem);*/	background: #38c056; padding-bottom: 8.8rem;}}footer,footer .f1 {padding-bottom: calc(env(safe-area-inset-bottom) + 3.5rem);padding-bottom: clac(constant(safe-area-inset-bottom) + 3.5rem);}footer .btn_top {bottom: calc(env(safe-area-inset-bottom) + 6.5rem);bottom: clac(constant(safe-area-inset-bottom) + 6.5rem);}.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{bottom: calc(env(safe-area-inset-bottom) + 6.5rem);bottom: clac(constant(safe-area-inset-bottom) + 6.5rem);}.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.cs_contactUs_my_footer,.shopping_bag .od_calc_wrap,.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex,.product_floormenu,.product_floormenu.fixed{/* background: #f5f5f5; height: 5.8rem; height: calc() + 5.8rem); height: calc() + 5.8rem); */ 	padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); background: #f5f5f5; background: #000000;}
+@media only screen and (min-width: 375px) and (max-width: 415px) and (min-height: 722px) and (max-height: 897px){/* footer{padding-bottom: 8rem;}  *//* footer .f1 {padding: 0 0 8.5rem;}  *//* footer .btn_top {bottom: 20.5%;} */.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.shopping_bag .od_calc_wrap{padding-bottom: 8.8rem; background-color: #f5f5f5; background-color: #aa2020;}.cs_contactUs_my_footer,.product_floormenu,.product_floormenu.fixed{/*height: calc(env(safe-area-inset-bottom) + 8.8rem);height: calc(constant(safe-area-inset-bottom) + 8.8rem);*/	background: #38c056; padding-bottom: 8.8rem;}}footer,footer .f1 {padding-bottom: calc(env(safe-area-inset-bottom) + 3.5rem);padding-bottom: clac(constant(safe-area-inset-bottom) + 3.5rem);}footer .btn_top {bottom: calc(env(safe-area-inset-bottom) + 6.5rem);bottom: clac(constant(safe-area-inset-bottom) + 6.5rem);}.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.cs_contactUs_my_footer,.shopping_bag .od_calc_wrap,.product_floormenu,.product_floormenu.fixed{/* background: #f5f5f5; height: 5.8rem; height: calc() + 5.8rem); height: calc() + 5.8rem); */ 	padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); background: #f5f5f5; background: #000000;}
 
 
 /* APP ONLY */

+ 3 - 1
src/main/webapp/ux/mo/css/layout_m.css

@@ -1227,15 +1227,17 @@
 .pd_delivery .change .pop_table tr th {width: 10rem; padding: 0 0 0 1.2rem; color:#222; font-weight:500; background: #f5f5f5; text-align:left; word-break: break-all;}
 
 /* pd_pop > 상품리뷰 페이지 */
+
 .modal.pd_pop.pd_review_pop {overflow-x: hidden;overflow-y: auto;}
 .modal.pd_pop.pd_review_pop .modal-header{border-bottom:0.1rem solid #eee !important;}
 .modal.pd_pop.pd_review_pop .modal-body{margin-top:9.3rem; padding:0}
 .modal.pd_pop.pd_review_pop .modal-header{height:auto;}
 .modal.pd_pop.pd_review_pop .pd_detail{overflow: hidden;}
 .modal.pd_pop.pd_review_pop .riview_box .area_slider{margin-bottom:0;}
-.modal.pd_pop.pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 /* .modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:98;-webkit-transform: translateZ(0);} */
 /* .modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{padding-bottom: env(safe-area-inset-bottom);-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0); -webkit-transform:translate3d(0, 0, 0);} */
+/* .pd_review_pop .btn_group_flex > div > .btn, */
+.pd_review .btn_group_flex > div > .btn{height:5.3rem;}
 .pd_review{background:#f5f5f5;overflow-x: hidden;}
 .pd_review.best,
 .pd_review.photo{background:#fff; position:relative; bottom:0; z-index:999; max-height:35rem;}

+ 3 - 1
src/main/webapp/ux/pc/css/layout.css

@@ -1173,6 +1173,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .goods_info .order_desc .goods_box .gd_item .name {float:none; display:block; display:-webkit-box; width:100%; height:auto; max-height:40px; margin-top:15px; color:#222; font-size:16px; font-weight:300; line-height:20px; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical;}
 .goods_info .order_desc .goods_box .gd_item .brand {float:left; display:inline-block; margin-right:10px; color:#888; font-size:14px; font-weight:200;}
 .goods_info .order_desc .goods_box .gd_item .tag {float:left; margin-right:6px; margin-top:-5px;}
+.goods_info .order_desc .goods_box .gd_item.soldout .thumb:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 14px; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 142px; z-index: 20; text-align: center;}
 .goods_info .order_desc .goods_box .gd_opt {margin-top:15px;}
 .goods_info .order_desc .goods_box .gd_opt .option_wrap {margin-top:15px}
 .goods_info .order_desc .goods_box .gd_opt .option_wrap:first-child {margin-top:0;}
@@ -1821,7 +1822,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail * {display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: #fff; font-weight: 300; letter-spacing: 0;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .brand {font-size: 14px;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .tit {margin:20px 0 15px; padding-bottom: 0; max-height:66px; font-size:24px; line-height:1.4; word-break:keep-all; text-align:left;}
-	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .sale {font-size: 14px;}
+	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .sale {font-size: 14px; -webkit-line-clamp: 1; height: 13px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 9; width: 88.4%; margin:-70px auto 0; min-height:356px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li {height: 150px; margin-bottom: 16px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li:last-child {margin-bottom: 0;}
@@ -2222,6 +2223,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.od .od_side .area_order .od_item_box .part_dlvr .gd_list .item_gd .price {margin-top:5px}
 	.od .od_side .area_order .od_item_box .part_dlvr .gd_list .item_gd .info_reserv {margin-top:10px; color:#fd4802; font-size:14px; font-weight:200;}
 	.od .od_side .area_order .od_item_box .part_dlvr .gd_list .item_gd .info_reserv span {margin-left:10px; font-weight:300;}
+	.od .od_side .area_order .od_item_box .part_dlvr .gd_list .item_gd.soldout .thumb:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 14px; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 150px; z-index: 20; text-align: center;}
 	.od .od_side .area_order .od_amount_box {padding:30px; color:#888; font-size:14px; font-weight:200;}
 	.od .od_side .area_order .od_amount_box dl div {margin-top:20px;}
 	.od .od_side .area_order .od_amount_box dl div:first-child {margin-top:0px}