ソースを参照

사은품 노출 방법 변경

eskim 5 年 前
コミット
636605fbcc

+ 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 (

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

@@ -76,7 +76,7 @@
 							<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> 이상 구매 시
+										<th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></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>
 								</tr>

+ 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>