فهرست منبع

Merge branch 'eskim' into develop

eskim 5 سال پیش
والد
کامیت
1d0462d1f9

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

@@ -209,7 +209,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 			// 사은품
 			paramsGoods.setMaxRownum(1);
-			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods));
+			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods)); 
 
 			// 딜용 상품평건수
 			Review review = new Review();

+ 4 - 0
src/main/java/com/style24/persistence/domain/Freegift.java

@@ -25,4 +25,8 @@ public class Freegift {
 	private String leftQty;
 	private String targetVal;
 	
+	private int rnum;
+	
+	private String freeGoods;
+
 }

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

@@ -1073,6 +1073,103 @@
 	<!-- 상품의 사은품 목록 -->
 	<select id="getFreeGoodsList"  parameterType="Goods" resultType="Freegift">
 		/* TsfGoods.getFreeGoodsList */
+		WITH TAB_GOODS AS (
+		          SELECT GOODS_CD
+		               , SUPPLY_COMP_CD
+		               , BRAND_CD
+		          FROM TB_GOODS
+		          WHERE GOODS_CD =  #{goodsCd}
+		      )
+		, TAB_FREEGIFT AS (
+		     SELECT A.FREEGIFT_SQ
+		          , B.FREEGIFT_SECTION_SQ
+		          , A.ALL_YN     -- 모두지급
+		          , B.SECTION_GB -- G810_10|수량, G810_11|금액
+		          , B.SECTION_VAL
+		          , D.GOODS_CD
+		     FROM TB_FREEGIFT A
+		     INNER JOIN TB_FREEGIFT_SECTION B ON A.FREEGIFT_SQ = B.FREEGIFT_SQ
+		     AND B.DEL_YN = 'N'
+		     INNER JOIN (SELECT D.FREEGIFT_SQ
+		                      , G.GOODS_CD
+		                 FROM TAB_GOODS G
+		                          INNER JOIN TB_FREEGIFT_GOODS D ON G.GOODS_CD = D.TARGET_VAL
+		                     AND D.GOODS_GB IN ('G800_10', 'G800_20')
+		                     AND D.TARGET_GB = 'G260_10' -- 상품코드
+		                     AND D.DEL_YN = 'N'
+		                 UNION
+		                 SELECT S.FREEGIFT_SQ
+		                      , G.GOODS_CD
+		                 FROM TAB_GOODS G
+		                          INNER JOIN TB_FREEGIFT_GOODS S ON G.SUPPLY_COMP_CD = S.TARGET_VAL
+		                     AND S.GOODS_GB IN ('G800_10', 'G800_20')
+		                     AND S.TARGET_GB = 'G260_13' -- 공급업체코드
+		                     AND S.DEL_YN = 'N'
+		                 UNION
+		                 SELECT SB.FREEGIFT_SQ
+		                      , G.GOODS_CD
+		                 FROM TAB_GOODS G
+		                          INNER JOIN TB_FREEGIFT_GOODS SB ON G.BRAND_CD = SB.TARGET_VAL
+		                     AND SB.GOODS_GB IN ('G800_10', 'G800_20')
+		                     AND SB.TARGET_GB = 'G260_12' -- 브랜드코드
+		                     AND SB.DEL_YN = 'N'
+		     ) D ON A.FREEGIFT_SQ = D.FREEGIFT_SQ
+		     LEFT OUTER JOIN TB_FREEGIFT_GOODS E ON A.FREEGIFT_SQ = E.FREEGIFT_SQ
+		                                         AND E.GOODS_GB = 'G800_30'
+		                                         AND E.TARGET_GB = 'G260_10'
+		                                         AND E.DEL_YN = 'N'
+		                                         AND E.TARGET_VAL = #{goodsCd}
+		     WHERE NOW() BETWEEN A.FREEGIFT_STAT AND A.FREEGIFT_EDDT
+		     AND A.FREEGIFT_STAT = 'G232_11'
+		     AND NULLIF(E.TARGET_VAL, '') IS NULL
+		     AND A.DEL_YN = 'N'
+		     ORDER BY A.FREEGIFT_SQ, B.FREEGIFT_SECTION_SQ
+		 )
+		 , TAB_FREEGOODS AS (
+		     SELECT B.ALL_YN
+		          , C.FREEGIFT_SQ
+		          , C.FREEGIFT_SECTION_SQ
+		          , C.FREEGIFT_VAL_SQ
+		          , F.GOODS_NM
+		          , C.ITEM_QTY
+		          , CASE WHEN B.ALL_YN = 'Y' THEN 1
+		                 ELSE (RANK() OVER (PARTITION BY B.ALL_YN , C.FREEGIFT_SQ, C.FREEGIFT_SECTION_SQ
+		                                    ORDER BY  C.FREEGIFT_SQ , C.FREEGIFT_SECTION_SQ , C.FREEGIFT_VAL_SQ)) 
+		                 END AS ROWNUM
+		     FROM TAB_FREEGIFT B
+		     INNER JOIN TB_FREEGIFT_VAL C ON B.FREEGIFT_SQ = C.FREEGIFT_SQ
+		                                  AND B.FREEGIFT_SECTION_SQ = C.FREEGIFT_SECTION_SQ
+		                                  AND C.DEL_YN = 'N'
+		                                  AND C.LEFT_QTY - C.ITEM_QTY > 0 -- 사은품 잔여수량
+		     INNER JOIN TB_FREE_GOODS F ON F.PRODUCT_NO = C.PRODUCT_NO
+		                                AND F.USE_YN = 'Y'
+		 )
+		SELECT Z.*
+		FROM (
+		    SELECT  F.FREEGIFT_SQ
+		          , F.FREEGIFT_SECTION_SQ
+		          , F.ALL_YN     -- 모두지급
+		          , F.SECTION_GB -- G810_10|수량, G810_11|금액
+		          , F.SECTION_VAL
+		          , FG.GOODS_NM
+		          , GROUP_CONCAT(CONCAT(FG.GOODS_NM,':',FG.ITEM_QTY)) AS FREE_GOODS
+		          -- , RANK() OVER (PARTITION BY F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ ORDER BY  FG.FREEGIFT_VAL_SQ ) AS RNUM
+		    FROM TAB_FREEGIFT F
+		    INNER JOIN TAB_FREEGOODS FG ON F.FREEGIFT_SQ = FG.FREEGIFT_SQ
+		                                AND F.FREEGIFT_SECTION_SQ = F.FREEGIFT_SECTION_SQ
+		                                AND FG.ROWNUM = 1
+		    GROUP BY  F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ , F.ALL_YN , F.SECTION_GB , F.SECTION_VAL
+		    ORDER BY F.FREEGIFT_SQ, F.FREEGIFT_SECTION_SQ
+		) Z
+		WHERE 1 = 1
+		<if test="maxRownum != null and maxRownum > 0">
+		LIMIT #{maxRownum}
+		</if> 
+	</select>
+	
+	<!-- 상품의 사은품 목록 -->
+	<select id="getFreeGoodsList_org"  parameterType="Goods" resultType="Freegift">
+		/* TsfGoods.getFreeGoodsList_org */
 		SELECT Z.*
 		FROM (
 		      WITH TAB_GOODS AS (

+ 2 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -44,6 +44,7 @@
 	<!-- //등록리뷰 없을 시 -->
 	<!-- 등록리뷰 있을 시 -->
 	<div class="area_rv_average" th:if="${reviewList != null and !reviewList.empty}">
+		<th:block th:if="${goodsInfo.reviewRegCnt > 0}">
 		<h6 class="sr-only">구매평점</h6>
 		<div class="star_score">
 			<span class="tit">구매평점</span>
@@ -52,6 +53,7 @@
 				<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
 			</span>
 		</div>
+		</th:block>
 		<!-- 착용정보 있을 시 노출 -->
 		<th:block th:if="${not #strings.isEmpty(goodsInfo.sizeGb)}">
 		<div class="average">

+ 4 - 2
src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html

@@ -76,8 +76,10 @@
 							<tbody>
 								<tr th:each="freeGoods, status : ${freeGoodsList}">
 									<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> 이상 구매 시
-										<p><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></p>
+										<th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시
+										<th:block th:each="goodsNm : ${#strings.arraySplit(freeGoods.freeGoods,',')}" th:with="goodsArray=${#strings.arraySplit(goodsNm,':')}">
+										<p><th:block th:text="${goodsArray[0]}"></th:block> <th:block th:text="${#numbers.formatInteger(goodsArray[1], 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></p>
+										</th:block>
 									</th>
 								</tr>
 							</tbody>

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

@@ -44,7 +44,8 @@
 	</div>
 	<!-- //등록리뷰 없을 시 -->
 	<!-- 등록리뷰 있을 시 -->
-	<div class="area_rv_average" th:if="${reviewList != null and !reviewList.empty}">
+	<div class="area_rv_average" th:if="${reviewList != null and !reviewList.empty }">
+		<th:block th:if="${goodsInfo.reviewRegCnt > 0}">
 		<h6 class="sr-only">구매평점</h6>
 		<div class="star_score">
 			<span class="tit">구매평점</span>
@@ -53,8 +54,9 @@
 				<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
 			</span>
 		</div>
+		</th:block>
 		<!-- 착용정보 있을 시 노출 -->
-		<th:block th:if="${not #strings.isEmpty(goodsInfo.sizeGb)}">
+		<th:block th:if="${not #strings.isEmpty(goodsInfo.sizeGb) and goodsInfo.reviewRegCnt > 0}">
 		<div class="average">
 			<div class="part_average">
 				<span class="tit">사이즈</span>
@@ -491,9 +493,14 @@
 				tag += '				<div>\n';
 				tag += '					<dt>구매옵션</dt>\n';
 				if (item.goodsOptionList != null && item.goodsOptionList.length > 0){
+				tag += '					<dd>';	
 					$.each(item.goodsOptionList, function(gIdx, goodsOption){
-				tag += '					<dd>'+ goodsOption.optCd1Nm +' / '+ goodsOption.optCd2 +'</dd>\n';		
+				tag += '					'+ goodsOption.optCd1Nm +' / '+ goodsOption.optCd2 ;		
+				if ((gIdx+1) < item.goodsOptionList.length){
+				tag += ', ';
+				}
 					});
+				tag += '					</dd>';	
 				}
 				tag += '				</div>\n';
 				tag += '			</dl>\n';

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

@@ -105,9 +105,11 @@
 				tag +='						<div>\n';
 				tag +='							<dt>구매옵션</dt>\n';
 				if (review.goodsOptionList != null && review.goodsOptionList.length > 0){
+				tag +='							<dd>\n';	
 					$.each(review.goodsOptionList, function(aIdx, reviewGoods){
-				tag +='							<dd>'+ reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2+'</dd>\n';
+				tag +='							<p><span>'+ reviewGoods.optCd1Nm +'</span> / <span>'+ reviewGoods.optCd2+'</span></p>\n';
 					});		
+				tag +='							<dd>\n';	
 				}
 
 				tag +='						</div>\n';

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

@@ -73,11 +73,14 @@
 								<col width="50%">
 								<col width="*">
 							</colgroup>
-							<tbody>
+							<tbody> 
 								<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="th"><th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시</div>
+										<th:block th:each="goodsNm : ${#strings.arraySplit(freeGoods.freeGoods,',')}" th:with="goodsArray=${#strings.arraySplit(goodsNm,':')}">
+										<div class="td"><th:block th:text="${goodsArray[0]}"></th:block> <th:block th:text="${#numbers.formatInteger(goodsArray[1], 0,'COMMA')}"></th:block>개 증정 
+										<th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></div>
+										</th:block>
 									</td>
 								</tr>
 							</tbody>

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

@@ -368,6 +368,7 @@
 .bnnbox_crop {width:100%;}
 .bnnbox_crop::after {content:''; clear:both; display:block;}
 .bnnbox_crop > div {width: 100%;height: 230px;float: none;overflow: hidden;}
+.bnnbox_crop > div > img {width: 100%;height: auto;}
 .bnnbox_crop > .bnn_half {float:left; width:50%;}
 .bnnbox_crop > .bnn_half > a {display:block; position:relative; width:100%; height:0%; padding-top:26.0918%; overflow:hidden;}
 .bnnbox_crop > .bnn_half > a img {position:absolute; left:50%; right:0; top:50%; bottom:auto; transform:translate(-50%, -50%); width:auto; height:100%;}