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

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front.git into develop

eskim 5 лет назад
Родитель
Сommit
3b7ac23ea0

+ 97 - 1
src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java

@@ -1,5 +1,8 @@
 package com.style24.front.biz.thirdparty;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -13,6 +16,8 @@ import org.springframework.stereotype.Component;
 import com.diquest.ir.common.exception.IRException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
+import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.searchengine.Filter;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
 import istyle.AutoSearch;
@@ -74,6 +79,91 @@ public class SearchEngineDiquest {
 		return result;
 	}
 
+	/**
+	 * 카테고리 목록
+	 * @param params - 파라미터
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 31
+	 */
+	@SuppressWarnings("unchecked")
+	public SearchEngine getCategoryList(SearchEngine params) {
+		SearchEngine result = new SearchEngine();
+
+		Map<String, Object> paramMap = new HashMap<>();// this.convertObjectToMap(params);
+		paramMap.put("adminIp", ipAddr);
+		paramMap.put("adminPort", port);
+//		paramMap.put("cate1No", 1300);
+		paramMap.put("brandGroupNo", 0);
+		paramMap.put("frontGb", TsfSession.getFrontGb());
+		paramMap.put("keyword", "키즈");
+		paramMap.put("formalGb", "G009_20");
+
+		// 브랜드그룹번호 값이 있으면 (=브랜드메인에서 조회했으면)
+		paramMap.put("defaultCateYn", "Y");
+		if (params.getBrandGroupNo() > 0) {
+			paramMap.put("defaultCateYn", "Y");
+		}
+
+		log.info("--------------------------1");
+		log.info("{}", paramMap);
+
+		try {
+			log.info("--------------------------2");
+			JSONObject jsonObj = SearchService.getCategoryGoodsList(paramMap);
+			log.info("jsonObj: {}", jsonObj.toString());
+
+//			Gson gson = new Gson();
+//			Map<String, Object> resMap = gson.fromJson(jsonObj.toJSONString(), Map.class);
+//			log.info("{}", resMap);
+//
+//			if (resMap.get("returnCode").equals("1")) { // 성공
+//				result = gson.fromJson(resMap.get("response").toString(), SearchEngine.class);
+//			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+
+	/**
+	 * 필터 목록
+	 * @param params - 파라미터
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 31
+	 */
+	@SuppressWarnings("unchecked")
+	public Collection<Filter> getFilterList(SearchEngine params) {
+		Collection<Filter> result = new ArrayList<Filter>();
+
+		Map<String, Object> paramMap = this.convertObjectToMap(params);
+		paramMap.put("adminIp", ipAddr);
+		paramMap.put("adminPort", port);
+		log.info("{}", paramMap);
+
+		try {
+			JSONObject jsonObj = SearchService.getFilterList(paramMap);
+			log.info("jsonObj.toJSONString(): {}", jsonObj.toJSONString());
+
+			Gson gson = new Gson();
+			Map<String, Object> resMap = gson.fromJson(jsonObj.toJSONString(), Map.class);
+			log.info("{}", resMap);
+
+			if (resMap.get("returnCode").equals("1")) { // 성공
+				Filter[] arrFilter = gson.fromJson(resMap.get("response").toString(), Filter[].class);
+				result = Arrays.asList(arrFilter);
+//				result = gson.fromJson(resMap.get("response").toString(), new TypeToken<Collection<Filter>>() {
+//				}.getType());
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+
 	/**
 	 * 상품리스트
 	 * @param params - 파라미터
@@ -81,6 +171,7 @@ public class SearchEngineDiquest {
 	 * @author gagamel
 	 * @since 2021. 5. 31
 	 */
+	@SuppressWarnings("unchecked")
 	public SearchEngine getGoodsList(SearchEngine params) {
 		SearchEngine result = new SearchEngine();
 
@@ -94,7 +185,12 @@ public class SearchEngineDiquest {
 			log.info("jsonObj.toJSONString(): {}", jsonObj.toJSONString());
 
 			Gson gson = new Gson();
-			result = gson.fromJson(jsonObj.toJSONString(), SearchEngine.class);
+			Map<String, Object> resMap = gson.fromJson(jsonObj.toJSONString(), Map.class);
+			log.info("{}", resMap);
+
+			if (resMap.get("returnCode").equals("1")) { // 성공
+				result = gson.fromJson(resMap.get("response").toString(), SearchEngine.class);
+			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

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

@@ -1,6 +1,8 @@
 package com.style24.front.biz.web;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -697,10 +699,10 @@ public class TsfDisplayController extends TsfBaseController {
 //		}
 
 		StringBuilder sql = new StringBuilder();
-		if(params.getPriceArr() != null && params.getPriceArr().length > 0){
-			for(int i=0; i<params.getPriceArr().length; i++){
+		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){
+				if (i > 0) {
 					sql.append(" OR ");
 				}
 				sql.append(" ( G.CURR_PRICE >= ").append(price[0]).append(" AND G.CURR_PRICE  <= ").append(price[1]).append(" )");
@@ -709,10 +711,10 @@ public class TsfDisplayController extends TsfBaseController {
 		}
 
 		StringBuilder sql2 = new StringBuilder();
-		if(params.getDcRateArr() != null && params.getDcRateArr().length > 0){
-			for(int i=0; i<params.getDcRateArr().length; i++){
+		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){
+				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(" )");
@@ -935,21 +937,28 @@ public class TsfDisplayController extends TsfBaseController {
 
 	/**
 	 * 검색상품 목록 화면
-	 * @param params - 검색엔진 정보
+	 * @param keyword - 검색키워드
+	 * @param brandGroupNo - 브랜드그룹번호
 	 * @return
 	 * @author gagamel
 	 * @since 2021. 5. 6
 	 */
 	@GetMapping("/search/goods/list/form")
-	public ModelAndView searchGoodsListForm(SearchEngine params) {
+	public ModelAndView searchGoodsListForm(@RequestParam(value = "keyword") String keyword, @RequestParam(value = "brandGroupNo", required = false) Integer brandGroupNo) {
+		SearchEngine params = new SearchEngine();
+		params.setKeyword(keyword);
+		params.setBrandGroupNo(brandGroupNo == null ? 0 : brandGroupNo);
+
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/SearchGoodsListForm"));
 
-		mav.addObject("cateInfo", params);
+//		mav.addObject("cateInfo", params);
 
 		// 상품검색키워드 카테고리 목록
+//		mav.addObject("cateList", diquest.getCategoryList(params));
 		mav.addObject("cateList", displayService.getKeywordCategoryList(params.getKeyword()));
 
 		// 상품리스트 카테고리별 필터 목록
+//		Collection<Filter> filterList = diquest.getFilterList(params);
 		Collection<Filter> filterList = displayService.getSearchGoodsListCategoryFilterList(params);
 
 		// 필터 설정
@@ -1007,18 +1016,21 @@ public class TsfDisplayController extends TsfBaseController {
 
 	/**
 	 * 검색어 레이어
+	 * @param brandGroupNo - 브랜드그룹번호
 	 * @return
+	 * @throws UnsupportedEncodingException
 	 * @author bin2107
 	 * @since 2021. 5. 11
 	 */
 	@PostMapping("/search/layer")
-	public ModelAndView searchLayerForm() {
+	public ModelAndView searchLayerForm(@RequestParam(value = "brandGroupNo", required = false) Integer brandGroupNo) throws UnsupportedEncodingException {
 		ModelAndView mav = new ModelAndView();
 
 		// 최근검색어 목록
 		Collection<String> recentlyKeywordList = new ArrayList<>();
 		String ckKeywords = GagaCookieUtil.getCookie(TsfSession.getHttpServletRequest(), TsfConstants.CK_PREFIX + "_today_keyword");
 		if (StringUtils.isNotBlank(ckKeywords)) {
+			ckKeywords = URLDecoder.decode(ckKeywords, "UTF-8");
 			String[] arrKeywords = ckKeywords.split("\\,");
 			StringBuilder sql = new StringBuilder();
 			if (arrKeywords.length > 0) {
@@ -1034,6 +1046,8 @@ public class TsfDisplayController extends TsfBaseController {
 		// 인기검색어
 		mav.addObject("trendKeywordList", diquest.getTrendKeywordList());
 
+		mav.addObject("brandGroupNo", brandGroupNo);
+
 		mav.setViewName(super.getDeviceViewName("display/SearchLayer"));
 		return mav;
 	}

+ 0 - 5
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -123,11 +123,6 @@
 		<div class="black_screen"></div>
 	</div>
 	
-	<!-- 검색 레이어 -->
-	<div class="common_search" id="layer_search">
-	</div>
-	<!-- //검색 레이어 -->
-
 <script th:inline="javascript">
 /*<![CDATA[*/
 	// 전체카테고리 조회

+ 51 - 2
src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html

@@ -18,10 +18,12 @@
 <div class="cont_search">
 	<div class="area_input">
 		<form id="searchMainForm" name="searchMainForm">
+			<input type="hidden" name="brandGroupNo" th:value="${brandGroupNo}"/>
+			
 			<fieldset>
 				<legend>통합검색</legend>
-				<input type="text" id="search" name="search" value="" placeholder="검색어를 입력하세요." class="search_input" title="검색어 입력" maxlength="100">
-				<button type="button" class="sch_btn"><i class="ico ico_search"><em>검색</em></i></button>
+				<input type="text" name="keyword" value="" placeholder="검색어를 입력하세요." class="search_input" title="검색어 입력" maxlength="100" required="required" data-valid-name="검색어"/>
+				<button type="button" class="sch_btn" id="btnSearchKeyword"><i class="ico ico_search"><em>검색</em></i></button>
 			</fieldset>
 		</form>
 	</div>
@@ -384,6 +386,53 @@
 	var fnClose = function() {
 		$("#layer_search").removeClass('active');
 	}
+	
+	// 검색어 입력 후 엔터키
+	$('#searchMainForm input[name=keyword]').keypress(function (event) {
+		if (event.which === 13) {
+			event.preventDefault();
+			$('#btnSearchKeyword').trigger('click');
+		}
+	});
+	
+	var ckKeyword = "st24ck_today_keyword";
+	var fnSetKeywordCookie = function(keyword) {
+		var arrKeyword = new Array;
+		var arrTempKeyword = new Array;
+		var j = 0;
+
+		arrKeyword = gagajf.getCookie(ckKeyword).split(",");
+
+		if (arrKeyword.length > 0) {
+			for (var i = 0; i < arrKeyword.length; i++) {
+				// 쿠키에 없으면
+				if (arrKeyword[i] != keyword && arrKeyword[i] != "") {
+					arrTempKeyword[j++] = arrKeyword[i];
+				}
+			}
+
+			arrTempKeyword[j++] = keyword;
+		} else {
+			gagajf.setCookie(ckKeyword, keyword, 1);
+		}
+
+		gagajf.setCookie(ckKeyword, arrTempKeyword, 1);
+	}
+	
+	// 키워드 검색
+	$('#btnSearchKeyword').on('click', function() {
+		if (!gagajf.validation($('#searchMainForm'))) {
+			return false;
+		}
+		
+		let keyword = encodeURIComponent($('#searchMainForm input[name=keyword]').val());
+		
+		// 쿠키 세팅
+		fnSetKeywordCookie(keyword);
+		
+		let actionUrl = _PAGE_SEARCH_GOODS + '?keyword=' + keyword + '&brandGroupNo=' + $('#searchMainForm input[name=brandGroupNo]').val();
+		cfnGoToPage(actionUrl);
+	});
 
 	$(document).ready( function() {
 		$("#layer_search").addClass('active');

+ 7 - 6
src/main/webapp/ux/style24_link.js

@@ -57,7 +57,6 @@ const _PAGE_GOODS_REVIEW_PHTO_LIST_LAYER = _frontUrl + "/goods/review/photo/laye
 const _PAGE_GOODS_CPN_DOWNLOAD = "/goods/coupon/download";											// 상품쿠폰다운로드
 const _PAGE_GOODS_EP_CPN_DOWNLOAD = "/goods/ep/coupon/download";									// EP쿠폰다운로드
 const _PAGE_DEAL_GOODS_DETAIL_LAYER = _frontUrl + "/goods/deal/detail/layer/";						// 딜상품 상세레이어
-const _PAGE_SEARCH_LAYER = _frontUrl + "/display/search/layer/";									// 검색레이어
 
 //== 장바구니 ==/
 const _PAGE_CART = _frontUrl + "/cart/list/form";								// 장바구니
@@ -93,12 +92,14 @@ const _PAGE_NOMEMBER_ORDER_DETAIL = _frontUrl + "/noMember/order/detail/form/";
 const _PAGE_NOMEMBER_CRE_LIST = _frontUrl + "/noMember/cre/list/form";				// 비회원 > 취소/교환/반품 목록
 
 //== 검색 ==/
+const _PAGE_SEARCH_LAYER = _frontUrl + "/display/search/layer/";					// 검색레이어
+const _PAGE_SEARCH_GOODS = _frontUrl + "/display/search/goods/list/form";			// 검색상품목록
 
 //== 기획전 ==/
-const _PAGE_PLANNING_MAIN = _frontUrl + "/planning/main/form"; 					      // 기획전 메인
-const _PAGE_PLANNING_DETAIL = _frontUrl + "/planning/detail/form";				      // 기획전 상세
-const _PAGE_PLANNING_CPN_DOWNLOAD = "/planning/coupon/download";			          // 상품쿠폰다운로드
-const _PAGE_PLANNING_REPLY_DETAIL_LAYER = _frontUrl + "/planning/reply/detail/layer"; // 상품평- 상세(포토)
+const _PAGE_PLANNING_MAIN = _frontUrl + "/planning/main/form"; 							// 기획전 메인
+const _PAGE_PLANNING_DETAIL = _frontUrl + "/planning/detail/form";						// 기획전 상세
+const _PAGE_PLANNING_CPN_DOWNLOAD = "/planning/coupon/download";						// 상품쿠폰다운로드
+const _PAGE_PLANNING_REPLY_DETAIL_LAYER = _frontUrl + "/planning/reply/detail/layer";	// 상품평- 상세(포토)
 
 //== 핫딜==/
 const _PAGE_SOCIAL_MAIN = _frontUrl + "/social/main/form";						// 소설(핫딜) 메인
@@ -1392,7 +1393,7 @@ function copyToClipboard() {
  *		cfnSearchLayer();
  * </pre>
  */
-function cfnSearchLayer() {
+function cfnSearchLayer(brandGroupNo) {
 	var Param = new Object();
 	var str = '<div class="common_search active" id="layer_search"></div>';
 	if ("P" != _frontGb){