Просмотр исходного кода

모바일 가격.할인 필터수정

bin2107 5 лет назад
Родитель
Сommit
6746bcee14

+ 24 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -696,6 +696,30 @@ public class TsfDisplayController extends TsfBaseController {
 //			params.setCateNo(params.getCate1No());
 //		}
 
+		StringBuilder sql = new StringBuilder();
+		if(params.getPriceArr() != null && params.getPriceArr().length > 0){
+			for(int i=0; i<params.getPriceArr().length; i++){
+				String[] price = params.getPriceArr()[i].split(",");
+				if(i>0){
+					sql.append(" OR ");
+				}
+				sql.append(" ( G.CURR_PRICE >= ").append(price[0]).append(" AND G.CURR_PRICE  <= ").append(price[1]).append(" )");
+			}
+			params.setPriceSql(sql.toString());
+		}
+
+		StringBuilder sql2 = new StringBuilder();
+		if(params.getDcRateArr() != null && params.getDcRateArr().length > 0){
+			for(int i=0; i<params.getDcRateArr().length; i++){
+				String[] dcRate = params.getDcRateArr()[i].split(",");
+				if(i>0){
+					sql2.append(" OR ");
+				}
+				sql2.append(" ( ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) >= ").append(dcRate[0]).append(" AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <= ").append(dcRate[1]).append(" )");
+			}
+			params.setDcRateSql(sql2.toString());
+		}
+
 		pageable.setTotalCount(goodsService.getCategoryGoodsCount(params));
 		params.setPageable(pageable);
 		result.set("paging", pageable);

+ 6 - 0
src/main/java/com/style24/persistence/domain/searchengine/SearchEngine.java

@@ -54,9 +54,15 @@ public class SearchEngine implements Serializable {
 	private String[] colorArr;		// 색상배열
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] benefitArr;	// 혜택배열
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] priceArr;	// 가격배열
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] dcRateArr;	// 할인율배열
 	private String unisex;			// 남여공용만보기(성별구분:G007_Z)
 	private String newGoods;		// 신상품만보기(혜택구분:40)
 	private String sortingType;		// 정렬순서(BELOVED: 인기상품순, REVIEW: 리뷰많은순 그외는 최신상품순)
+	private String priceSql;
+	private String dcRateSql;
 	private int pageNo = 1;			// 페이지번호
 	private int pageSize = 50;		// 페이지사이즈
 	private int pageUnit = 10;		// 페이지단위

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

@@ -912,8 +912,8 @@
 		      SELECT  BG.BRAND_GROUP_NO
 		            , (CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM ELSE BG.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		            , BG.DISP_NM_LANG
-		            , B.BRAND_ENM AS BRAND_GROUP_ENM
-		            , B.BRAND_KNM AS BRAND_GROUP_KNM
+		            , BG.BRAND_GROUP_ENM
+		            , BG.BRAND_GROUP_KNM
 		            , BG.LOGO_FILE_NM
 		      FROM  TB_BRAND B
 		      INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO

+ 13 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -2016,6 +2016,12 @@
 		    <if test="dcRateTo != null and dcRateTo != ''">
 		     AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
 		    </if>
+		    <if test="priceArr != null and priceArr.length>0">
+		     AND (${priceSql})
+		    </if>
+		    <if test="dcRateArr != null and dcRateArr.length>0">
+		    AND (${dcRateSql})
+		    </if>
 		)
 		, TAB_OPT_SIZE AS (
 		    /*옵션 사이즈 목록 조회*/
@@ -2243,6 +2249,12 @@
 		        <if test="dcRateTo != null and dcRateTo != ''">
 		            AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
 		        </if>
+		        <if test="priceArr != null and priceArr.length>0">
+		            AND (${priceSql})
+		        </if>
+		        <if test="dcRateArr != null and dcRateArr.length>0">
+		            AND (${dcRateSql})
+		        </if>
 		)
 		, TAB_OPT_SIZE AS (
 		    /*옵션 사이즈 목록 조회*/
@@ -2343,7 +2355,7 @@
 		    LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
 		</if>
 		)
-		SELECT G.BRAND_GROUP_NM
+		SELECT DISTINCT G.BRAND_GROUP_NM
 		      , G.GOODS_CD
 		      , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
 		      , G.GOODS_TNM

+ 16 - 13
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -171,7 +171,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount1" name="dcRate" type="checkbox" value="0,10" onclick="filterDcRateMob(this,'dcRate','off','1');"><label for="discount1"> <span id="dcRateText1">10% 이하</span> </label>
+														<input id="discount1" name="dcRate" type="checkbox" value="0,10" data-id="10% 이하" onclick="filterDcRateMob(this,'dcRate','off','1');"><label for="discount1"> <span id="dcRateText1">10% 이하</span> </label>
 													</div>
 												</div>
 											</a>
@@ -180,7 +180,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount2" name="dcRate" type="checkbox" value="10,20" onclick="filterDcRateMob(this,'dcRate','off','2');"><label for="discount2"> <span id="dcRateText2">10~20%</span> </label>
+														<input id="discount2" name="dcRate" type="checkbox" value="10,20" data-id="10~20%" onclick="filterDcRateMob(this,'dcRate','off','2');"><label for="discount2"> <span id="dcRateText2">10~20%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -189,7 +189,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount3" name="dcRate" type="checkbox" value="20,30" onclick="filterDcRateMob(this,'dcRate','off','3');"><label for="discount3"> <span id="dcRateText3">20~30%</span> </label>
+														<input id="discount3" name="dcRate" type="checkbox" value="20,30" data-id="20~30%" onclick="filterDcRateMob(this,'dcRate','off','3');"><label for="discount3"> <span id="dcRateText3">20~30%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -198,7 +198,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount4" name="dcRate" type="checkbox" value="30,40" onclick="filterDcRateMob(this,'dcRate','off','4');"><label for="discount4"> <span id="dcRateText4">30~40%</span> </label>
+														<input id="discount4" name="dcRate" type="checkbox" value="30,40" data-id="30~40%" onclick="filterDcRateMob(this,'dcRate','off','4');"><label for="discount4"> <span id="dcRateText4">30~40%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -207,7 +207,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount5" name="dcRate" type="checkbox" value="40,50" onclick="filterDcRateMob(this,'dcRate','off','5');"><label for="discount5"> <span id="dcRateText5">40~50%</span> </label>
+														<input id="discount5" name="dcRate" type="checkbox" value="40,50" data-id="40~50%" onclick="filterDcRateMob(this,'dcRate','off','5');"><label for="discount5"> <span id="dcRateText5">40~50%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -216,7 +216,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount6" name="dcRate" type="checkbox" value="50,60" onclick="filterDcRateMob(this,'dcRate','off','6');"><label for="discount6"> <span id="dcRateText6">50~60%</span> </label>
+														<input id="discount6" name="dcRate" type="checkbox" value="50,60" data-id="50~60%" onclick="filterDcRateMob(this,'dcRate','off','6');"><label for="discount6"> <span id="dcRateText6">50~60%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -225,7 +225,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount7" name="dcRate" type="checkbox" value="60,70" onclick="filterDcRateMob(this,'dcRate','off','7');"><label for="discount7"> <span id="dcRateText7">60~70%</span> </label>
+														<input id="discount7" name="dcRate" type="checkbox" value="60,70" data-id="60~70%" onclick="filterDcRateMob(this,'dcRate','off','7');"><label for="discount7"> <span id="dcRateText7">60~70%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -234,7 +234,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount8" name="dcRate" type="checkbox" value="70,80" onclick="filterDcRateMob(this,'dcRate','off','8');"><label for="discount8"> <span id="dcRateText8">70~80%</span> </label>
+														<input id="discount8" name="dcRate" type="checkbox" value="70,80" data-id="70~80%" onclick="filterDcRateMob(this,'dcRate','off','8');"><label for="discount8"> <span id="dcRateText8">70~80%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -243,7 +243,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount9" name="dcRate" type="checkbox" value="80,90" onclick="filterDcRateMob(this,'dcRate','off','9');"><label for="discount9"> <span id="dcRateText9">80~90%</span> </label>
+														<input id="discount9" name="dcRate" type="checkbox" value="80,90" data-id="80~90%" onclick="filterDcRateMob(this,'dcRate','off','9');"><label for="discount9"> <span id="dcRateText9">80~90%</span> </label>
 													</div>
 												</div>
 											</a>
@@ -252,7 +252,7 @@
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input id="discount10" name="dcRate" type="checkbox" value="90,0" onclick="filterDcRateMob(this,'dcRate','off','10');"><label for="discount10"> <span id="dcRateText10">90이상</span> </label>
+														<input id="discount10" name="dcRate" type="checkbox" value="90,0" data-id="90%이상" onclick="filterDcRateMob(this,'dcRate','off','10');"><label for="discount10"> <span id="dcRateText10">90이상</span> </label>
 													</div>
 												</div>
 											</a>
@@ -408,7 +408,7 @@
 					priceHtml += '	<a href="javascript:void(0)">\n';
 					priceHtml += '		<div class="form_field">\n';
 					priceHtml += '			<div>\n';
-					priceHtml += '				<input type="checkbox" id="price'+(i+1)+'" name="price" value="'+minPrice+','+maxPrice+'" onclick="filterPriceMob(this,\'price\',\'off\',\''+(i+1)+'\');"><label for="price'+(i+1)+'">\n';
+					priceHtml += '				<input type="checkbox" id="price'+(i+1)+'" name="price" value="'+minPrice+','+maxPrice+'" data-id="'+minPrice.addComma()+'원 ~ '+maxPrice.addComma()+'원" onclick="filterPriceMob(this,\'price\',\'off\',\''+(i+1)+'\');"><label for="price'+(i+1)+'">\n';
 					priceHtml += '				<span id="pricdSpan'+(i+1)+'">'+minPrice.addComma()+'원 ~ '+maxPrice.addComma()+'원</span> </label>\n';
 					priceHtml += '			</div>\n';
 					priceHtml += '		</div>\n';
@@ -1038,6 +1038,9 @@
 			$('#filterForm input[name=benefit]:checked').each(function(){
 				$(this).attr('checked', true);
 			});
+			$('#filterForm input[name=price]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				// if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
 				var historyData = sessionStorage.getItem(document.location.href);
@@ -1058,7 +1061,7 @@
 				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
 					$("#totCntId").text(historyData.totalCount);
 				}
-				if(filterPriceList.length > 0){
+				/*if(filterPriceList.length > 0){
 					let min = 0;
 					let max = 0;
 					var val = '';
@@ -1075,7 +1078,7 @@
 							$(this).prop("checked",true);
 						}
 					});
-				}
+				}*/
 				fnReCheckFilterList();
 				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);

+ 12 - 1
src/main/webapp/WEB-INF/views/mob/display/OutletMainFormMob.html

@@ -33,7 +33,9 @@
 												<img th:src="${@environment.getProperty('domain.image') + item.imgPath2}" alt="">
 											</div>
 											<div class="txtWrap">
-												<p th:text="${item.strTitle1}">오랫동안 기다려온<br>겨울세일 시작</p>
+												<p class="subject">
+													<input type="hidden" name="mainTitle" th:value="${item.strTitle1}"/>
+												</p>
 												<p class="txt_xs" th:text="${item.subText1}">재고있을 때 미리 득템</p>
 											</div>
 										</a>
@@ -172,6 +174,15 @@
 			});
 			$('.dp_cate_list').html(tag);
 		}
+
+		$('.subject').each(function (){
+			let tag = '';
+			if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())) {
+				var brText = $(this).find("input[name=mainTitle]").val();
+				tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+				$(this).append(tag);
+			}
+		});
 	</script>
 
 </th:block>

+ 12 - 2
src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html

@@ -47,7 +47,9 @@
 										<img th:src="${@environment.getProperty('domain.image') + item.imgPath1}" alt="서브메인 썸네일">
 									</div>
 									<div class="txt">
-										<p class="subject" th:text="${item.strTitle1}"></p>
+										<p class="subject">
+											<input type="hidden" name="mainTitle" th:value="${item.strTitle1}"/>
+										</p>
 										<span th:text="${item.subText1}"></span>
 									</div>
 								</a>
@@ -238,7 +240,15 @@
 		});
 		$('.dp_cate_list').html(tag);
 		// $('.cate1Nm').html(cate1.cate1Nm);
-		
+
+		$('.subject').each(function (){
+			let tag = '';
+			if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())) {
+				var brText = $(this).find("input[name=mainTitle]").val();
+				tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+				$(this).append(tag);
+			}
+		});
 	}
 /*]]>*/
 </script>

+ 53 - 5
src/main/webapp/biz/goods.js

@@ -439,6 +439,12 @@ var fnSetFilterHtml = function (gubun, staus, mobGb){
 	$('#filterForm input[name=benefit]:checked').each(function(){
 		filterHtml += '<input type="hidden" name="benefitArr" value="'+$(this).val()+'"/>\n';
 	});
+	$('#filterForm input[name=price]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="priceArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=dcRate]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="dcRateArr" value="'+$(this).val()+'"/>\n';
+	});
 	if(!gagajf.isNull($("#filterForm input[name=hPriceFrom]").val())){
 		filterHtml += '<input type="hidden" name="priceFrom" value="'+$("#filterForm input[name=hPriceFrom]").val()+'"/>\n';
 	}
@@ -665,6 +671,16 @@ var fnSortingChange = function (obj, sortingType, stat, appGb){
 
 // 모바일 가격 필터
 var filterPriceMob = function (obj, gubun, staus, idx){
+	if(staus=='on'){
+		$(obj).attr('onclick','filterPriceMob(this,\''+gubun+'\',\'off\',\''+idx+'\');');
+	}else{
+		$(obj).attr('onclick','filterPriceMob(this,\''+gubun+'\',\'on\',\''+idx+'\');');
+	}
+
+	fnFilterSet(gubun, 'price', 'Mob');
+}
+
+var filterPriceMobOri = function (obj, gubun, staus, idx){
 	$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
 	$("#searchGoodsForm input:hidden[name=priceTo]").remove();
 
@@ -715,6 +731,15 @@ var filterPriceMob = function (obj, gubun, staus, idx){
 
 // 모바일 할인 필터
 var filterDcRateMob = function (obj, gubun, staus, idx){
+	if(staus=='on'){
+		$(obj).attr('onclick','filterDcRateMob(this,\''+gubun+'\',\'off\',\''+idx+'\');');
+	}else{
+		$(obj).attr('onclick','filterDcRateMob(this,\''+gubun+'\',\'on\',\''+idx+'\');');
+	}
+	fnFilterSet(gubun, 'dcRate', 'Mob');
+}
+
+var filterDcRateMobOri = function (obj, gubun, staus, idx){
 	$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
 	$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
 
@@ -811,17 +836,40 @@ var fnReCheckFilterList = function (){
 		if(!gagajf.isNull(searchId)){
 			var data = '';
 			if(searchId == 'price'){
-				$('#filterForm #priceArea').find('li').each(function(index){
-					if($(this).find('input[name=price]').prop('checked') == true){
-						$("#priceFilterDiv").find('.daps1').append('<span class="pic">'+$("#pricdSpan"+(index+1)).text()+'</span>');
-					}
+				let priceSpan = '';
+				$('#searchGoodsForm').find('input[name=priceArr]').each(function (idx){
+					let formPrice = $(this).val();
+					$('#filterForm #priceArea').find('li').each(function(index){
+						let filterPrice = $(this).find('input[name=price]').val();
+						if(formPrice == filterPrice){
+							$("#price"+(index+1)).prop('checked',true);
+							if(idx>0){
+								priceSpan += ',';
+							}
+							priceSpan += $("#pricdSpan"+(index+1)).text();
+						}
+					});
 				});
+				// $('#filterForm #priceArea').find('li').each(function(index){
+				// 	if($(this).find('input[name=price]').prop('checked') == true){
+				// 		if(index > 0){
+				// 			priceSpan += ',';
+				// 		}
+				// 		priceSpan += $("#pricdSpan"+(index+1)).text();
+				// 	}
+				// });
+				$("#priceFilterDiv").find('.daps1').append('<span class="pic">'+priceSpan+'</span>');
 			}else if(searchId == 'dcRate'){
+				let dcRateSpan = '';
 				$('#filterForm #dcRateArea').find('li').each(function(index){
 					if($(this).find('input[name=dcRate]').prop('checked') == true){
-						$("#dcRateFilterDiv").find('.daps1').append('<span class="pic">'+$("#dcRateText"+(index+1)).text()+'</span>');
+						if(index > 1){
+							dcRateSpan += ',';
+						}
+						dcRateSpan += $("#dcRateText"+(index+1)).text();
 					}
 				});
+				$("#dcRateFilterDiv").find('.daps1').append('<span class="pic">'+dcRateSpan+'</span>');
 			}else{
 				$('#filterForm input[name='+searchId+']:checked').each(function(idx){
 					if(searchId=='color'){