ソースを参照

상품 목록 필터 수정

bin2107 5 年 前
コミット
bc90d292ea

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -189,6 +189,7 @@ public interface TsfDisplayDao {
 	 * @date 2021. 4. 5
 	 */
 	Collection<GoodsSearch> getCategoryFliterSeason(GoodsSearch goodsSearch);
+
 	/**
 	 * 상품카테고리 필터 컬러 목록
 	 * @param
@@ -197,4 +198,13 @@ public interface TsfDisplayDao {
 	 * @date 2021. 4. 5
 	 */
 	Collection<GoodsSearch> getCategoryFliterColor(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 컬러 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterBenefit(GoodsSearch goodsSearch);
 }

+ 12 - 0
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -395,4 +395,16 @@ public class TsfDisplayService {
 	public Collection<GoodsSearch> getCategoryFliterColor(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
 		return displayDao.getCategoryFliterColor(goodsSearch);
 	}
+
+	/**
+	 * 상품카테고리 필터 혜택 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterBenefit-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterBenefit(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterBenefit(goodsSearch);
+	}
 }

+ 2 - 6
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -453,11 +453,6 @@ public class TsfDisplayController extends TsfBaseController {
 		goodsSearch.setFrontGb(TsfSession.getFrontGb());
 		goodsSearch.setCustGb(TsfSession.getCustGb());
 
-		log.info("goodsSearch:::{}",goodsSearch);
-		log.info("brandGroupNo:::{}",brandGroupNo);
-		log.info("formalGb:::{}",formalGb);
-		log.info("cateNo:::{}",cateNo);
-
 		mav.addObject("filterBrandList", displayService.getCategoryFliterBrand(goodsSearch, brandGroupNo, formalGb, cateNo));
 		mav.addObject("filterSizeList", displayService.getCategoryFliterSize(goodsSearch, brandGroupNo, formalGb, cateNo));
 		mav.addObject("filterPriceList", displayService.getCategoryFliterPrice(goodsSearch, brandGroupNo, formalGb, cateNo));
@@ -466,7 +461,8 @@ public class TsfDisplayController extends TsfBaseController {
 		mav.addObject("filterAgeList", null);
 		mav.addObject("filterSeasonList", null);
 		mav.addObject("filterColorList", displayService.getCategoryFliterColor(goodsSearch, brandGroupNo, formalGb, cateNo));
-		log.info("1111::{}",displayService.getCategoryFliterSize(goodsSearch, brandGroupNo, formalGb, cateNo));
+		mav.addObject("filterBenefitList", displayService.getCategoryFliterBenefit(goodsSearch, brandGroupNo, formalGb, cateNo));
+		
 		mav.addObject("siteCd",siteCd);
 		mav.addObject("cateGb",cateGb);
 		mav.addObject("formalGb",formalGb);

+ 11 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -43,4 +43,15 @@ public class GoodsSearch extends TscBaseDomain {
     private String seasonNm;
     private String colorGrpCd;
     private String colorChip;
+    private String benefitCd;
+    private String benefitNm;
+
+    private Integer price1;
+    private Integer price2;
+    private Integer price3;
+    private Integer price4;
+    private Integer price5;
+    private Integer price6;
+
+
 }

+ 76 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -939,4 +939,80 @@
 		GROUP BY C.COLOR_GRP_CD , CC.CD_DESC
 		ORDER  BY CC.DISP_ORD
 	</select>
+
+	<!-- 상품 카테고리 필터 혜택 -->
+	<select id="getCategoryFliterBenefit" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterBenefit */
+		WITH TAB_BENEFIT AS (
+			            SELECT GB.CPN_YN
+			            	 , GB.FREEGIFT_YN
+			            	 , G.FORMAL_GB
+			            	 , G.MIN_ORD_AMT
+			            	 , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS CURR_PRICE /*현재판매가*/
+			            	 , DF.REAL_DELV_AMT
+			            FROM	TB_CATE_4SRCH C4
+						JOIN	TB_CATE_GOODS CG ON C4.LEAF_CATE_NO = CG.CATE_NO
+		                <choose>
+		                	<when test="brandGroupNo != null and brandGroupNo != ''">
+		                		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                	</when>
+		                	<otherwise>
+		                		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                	</otherwise>
+		                </choose>
+						JOIN	TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
+						JOIN	TB_GOODS_STOCK GS ON CG.GOODS_CD = GS.GOODS_CD
+						LEFT OUTER JOIN	TB_GOODS_BENEFIT GB ON G.GOODS_CD = GB.GOODS_CD
+						JOIN	TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+						JOIN	TB_SITE_BRAND SB ON B.BRAND_CD = SB.BRAND_CD
+						JOIN	TB_DELIVERY_FEE DF ON G.DELV_FEE_CD = DF.DELV_FEE_CD
+			           WHERE	1=1
+		               AND    C4.SITE_CD = #{siteCd}
+		               AND    C4.CATE_GB = #{cateGb}
+		               AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		               AND    C4.CATE1_NO = #{cate1No}
+		               <if test="cate2No != null and cate2No != ''">
+		               	AND    C4.CATE2_NO = #{cate2No}
+		               </if>
+		               <if test="cate3No != null and cate3No != ''">
+		               	AND    C4.CATE3_NO = #{cate3No}
+		               </if>
+		               <if test="cate4No != null and cate4No != ''">
+		               	AND    C4.CATE4_NO = #{cate4No}
+		               </if>
+		               <if test="cate5No != null and cate5No != ''">
+		               	AND    C4.CATE5_NO = #{cate5No}
+		               </if>
+		               AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		               AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		               AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		               AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		               AND    SB.SITE_CD = #{siteCd}
+		               AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		               AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		)
+		   SELECT	Z.BENEFIT_CD , Z.BENEFIT_NM
+		    FROM	(
+					SELECT '10'       AS BENEFIT_CD
+						 , '쿠폰할인' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  CPN_YN = 'Y'
+					UNION ALL
+					SELECT '20'       AS BENEFIT_CD
+						 , '무료배송' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  REAL_DELV_AMT = 0 -- MIN_ORD_AMT >= CURR_PRICE
+					UNION ALL
+					SELECT '30'       AS BENEFIT_CD
+						 , '사은품' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  FREEGIFT_YN = 'Y'
+					UNION ALL
+					SELECT '40'   AS BENEFIT_CD
+						 , '신상' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  FORMAL_GB = 'G009_10'
+				) Z
+		GROUP BY Z.BENEFIT_CD , Z.BENEFIT_NM
+	</select>
 </mapper>

+ 28 - 38
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -191,7 +191,8 @@
 										<li>
 											<label class="color-check" onclick="filterSel();">
 												<input type="checkbox" group="filterValue" th:id="${'chkFilterColor'+filterColorStat.count}" name="filterColorCds" th:value="${filterColorData.colorChip}" >
-												<span class="pdColor-color" th:style="${'background-color:'+filterColorData.colorChip}"></span>
+												<span class="pdColor-color" th:if="${filterColorData.colorChip=='#FFFFFF'}" th:style="${'background-color:'+filterColorData.colorChip+';'+' border:1px solid #aaa;'}"></span>
+												<span class="pdColor-color" th:if="${filterColorData.colorChip!='#FFFFFF'}" th:style="${'background-color:'+filterColorData.colorChip}"></span>
 											</label>
 										</li>
 									</th:block>
@@ -200,38 +201,15 @@
 							</div>
 							<!-- //컬러 -->
 							<!-- 혜택 -->
-							<div class="sort tap09">
+							<div class="sort tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}">
 								<ul>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>할인쿠폰</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>사은품</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>단독특가</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>온라인단독</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>무료배송</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterAgeCds" value=""><span>총알배송</span>
-										</label>
-									</li>
+									<th:block th:each="filterBenefitData, filterBenefitStat : ${filterBenefitList}">
+										<li>
+											<label class="Benefits_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterBenefits'+filterBenefitStat.count}" name="filterBenefitsCds" th:value="${filterBenefitData.benefitCd}"><span th:text="${filterBenefitData.benefitNm}"></span>
+											</label>
+										</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
@@ -546,14 +524,26 @@
 		// 컨텐츠 호출
 		$(document).ready( function() {
 			//가격 슬라이드
-			var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
-			var my_from = custom_values.indexOf('9,000원');
-			var my_to = custom_values.indexOf('230,000원');
+			//var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
+			var custom_values = [];
+			$.each(filterPriceList, function (priceIdx, priceItem){
+				custom_values[0] = priceItem.price1;
+				custom_values[1] = priceItem.price2;
+				custom_values[2] = priceItem.price3;
+				custom_values[3] = priceItem.price4;
+				custom_values[4] = priceItem.price5;
+				custom_values[5] = priceItem.price6;
+			});
+
+			var my_from = custom_values.indexOf(custom_values[0]); //custom_values.indexOf('9,000원');
+			var my_to = custom_values.indexOf(custom_values[5]); //custom_values.indexOf('230,000원');
+			var minValue = custom_values[0];
+			var maxValue = custom_values[5];
 
 			$(".dp .js-range-slider01, .sch_result .js-range-slider01").ionRangeSlider({
 				type: "double",
-				min: 9000,
-				max: 1799000,
+				min: minValue,
+				max: maxValue,
 				from: my_from,
 				to: my_to,
 				grid: true,
@@ -566,7 +556,7 @@
 			//할인율
 			var custom_values02 = ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'];
 			var my_from02 = custom_values02.indexOf('0%');
-			var my_to02 = custom_values02.indexOf('10%');
+			var my_to02 = custom_values02.indexOf('100%');
 			$(".dp .js-range-slider02, .sch_result .js-range-slider02").ionRangeSlider({
 				type: "double",
 				min: 0,