Quellcode durchsuchen

검색관련 수정

gagamel vor 5 Jahren
Ursprung
Commit
803de2e194

+ 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();
 		}

+ 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');