SearchEngineDiquest.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. package com.style24.front.biz.thirdparty;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. import java.util.List;
  7. import java.util.Arrays;
  8. import javax.annotation.PostConstruct;
  9. import com.gagaframework.web.parameter.GagaMap;
  10. import org.json.simple.JSONObject;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.core.env.Environment;
  13. import org.springframework.stereotype.Component;
  14. import com.fasterxml.jackson.databind.ObjectMapper;
  15. import com.google.gson.Gson;
  16. import com.style24.front.biz.dao.TsfDisplayDao;
  17. import com.style24.persistence.domain.Cate1;
  18. import com.style24.persistence.domain.searchengine.AutoCompleteResponse;
  19. import com.style24.persistence.domain.searchengine.CateResponse;
  20. import com.style24.persistence.domain.searchengine.Filter;
  21. import com.style24.persistence.domain.searchengine.FilterResponse;
  22. import com.style24.persistence.domain.searchengine.GoodsListResponse;
  23. import com.style24.persistence.domain.searchengine.PlanningResponse;
  24. import com.style24.persistence.domain.searchengine.SearchEngine;
  25. import istyle.AutoSearch;
  26. import istyle.PlanSearch;
  27. import istyle.SearchService;
  28. import lombok.extern.slf4j.Slf4j;
  29. /**
  30. * 검색엔진 - NHN다이퀘스트
  31. *
  32. * @author gagamel
  33. * @since 2021. 04. 29
  34. */
  35. @Component
  36. @Slf4j
  37. public class SearchEngineDiquest {
  38. @Autowired
  39. private Environment env;
  40. private String ipAddr; // 검색엔진 IP
  41. private Integer port; // 검색엔진 포트
  42. @Autowired
  43. private TsfDisplayDao displayDao;
  44. @PostConstruct
  45. public void init() {
  46. ipAddr = env.getProperty("search.engine.diquest.ip");
  47. port = Integer.valueOf(env.getProperty("search.engine.diquest.port"));
  48. log.debug("\n\n---- NHN Diquest initialization started ----");
  49. log.debug("ipAddr: [{}]", ipAddr);
  50. log.debug("port: [{}]", port);
  51. log.debug("\n--- NHN Diquest initialization completed ----\n");
  52. }
  53. /**
  54. * 인기검색어 조회
  55. * @return
  56. * @author gagamel
  57. * @since 2021. 5. 10
  58. */
  59. public SearchEngine getTrendKeywordList() {
  60. SearchEngine result = new SearchEngine();
  61. // 인기검색어
  62. Map<String, Object> paramMap = new HashMap<String, Object>();
  63. paramMap.put("adminIp", ipAddr);
  64. paramMap.put("adminPort", port);
  65. log.info("///[getTrendKeywordList] paramMap: {}", paramMap);
  66. try {
  67. JSONObject jsonObj = AutoSearch.trendKeyword(paramMap);
  68. log.info("///[getTrendKeywordList] jsonObj: {}", jsonObj.toJSONString());
  69. Gson gson = new Gson();
  70. result = gson.fromJson(jsonObj.toJSONString(), SearchEngine.class);
  71. log.info("///[getTrendKeywordList] result: {}", result);
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. return result;
  76. }
  77. /**
  78. * 자동완성 조회
  79. * @param keyword - 검색어
  80. * @return
  81. * @author gagamel
  82. * @since 2021. 6. 7
  83. */
  84. public AutoCompleteResponse getAutoComplete(String keyword) {
  85. AutoCompleteResponse result = new AutoCompleteResponse();
  86. Map<String, Object> paramMap = new HashMap<String, Object>();
  87. paramMap.put("adminIp", ipAddr);
  88. paramMap.put("adminPort", port);
  89. paramMap.put("keyword", keyword);
  90. log.info("///[getAutoComplete] paramMap: {}", paramMap);
  91. try {
  92. JSONObject jsonObj = AutoSearch.getAutoComplete(paramMap);
  93. log.info("///[getAutoComplete] jsonObj: {}", jsonObj.toJSONString());
  94. Gson gson = new Gson();
  95. result = gson.fromJson(jsonObj.toJSONString(), AutoCompleteResponse.class);
  96. log.info("///[getAutoComplete] result: {}", result);
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. }
  100. return result;
  101. }
  102. /**
  103. * 카테고리 목록
  104. * @param params - 파라미터
  105. * @return
  106. * @author gagamel
  107. * @since 2021. 5. 31
  108. */
  109. public Collection<Cate1> getCategoryList(SearchEngine params) {
  110. Collection<Cate1> result = new ArrayList<Cate1>();
  111. Map<String, Object> paramMap = this.convertObjectToMap(params);
  112. paramMap.put("adminIp", ipAddr);
  113. paramMap.put("adminPort", port);
  114. // paramMap.put("cate1No", 1300);
  115. // paramMap.put("brandGroupNo", 0);
  116. // paramMap.put("keyword", "키즈");
  117. // paramMap.put("formalGb", "G009_20");
  118. // 브랜드그룹번호 값이 있으면 (=브랜드메인에서 조회했으면)
  119. paramMap.put("defaultCateYn", "Y");
  120. if (params.getBrandGroupNo() > 0) {
  121. paramMap.put("defaultCateYn", displayDao.getBrandGroupDefaultCategoryYn(params.getBrandGroupNo()));
  122. }
  123. log.info("///[getCategoryList] paramMap: {}", paramMap);
  124. try {
  125. JSONObject jsonObj = SearchService.getCategoryGoodsList(paramMap);
  126. log.info("///[getCategoryList] jsonObj: {}", jsonObj.toJSONString());
  127. Gson gson = new Gson();
  128. CateResponse response = gson.fromJson(jsonObj.toJSONString(), CateResponse.class);
  129. if (jsonObj.get("returnCode").toString().equals("1")) { // 성공
  130. result = response.getResponse();
  131. log.info("///[getCategoryList] result: {}", result);
  132. }
  133. } catch (Exception e) {
  134. e.printStackTrace();
  135. }
  136. return result;
  137. }
  138. /**
  139. * 필터 목록
  140. * @param params - 파라미터
  141. * @return
  142. * @author gagamel
  143. * @since 2021. 5. 31
  144. */
  145. public Collection<Filter> getFilterList(SearchEngine params) {
  146. Collection<Filter> result = new ArrayList<Filter>();
  147. Map<String, Object> paramMap = this.convertObjectToMap(params);
  148. paramMap.put("adminIp", ipAddr);
  149. paramMap.put("adminPort", port);
  150. log.info("///[getFilterList] paramMap: {}", paramMap);
  151. try {
  152. JSONObject jsonObj = SearchService.getFilterList(paramMap);
  153. log.info("///[getFilterList] jsonObj: {}", jsonObj.toJSONString());
  154. Gson gson = new Gson();
  155. FilterResponse response = gson.fromJson(jsonObj.toJSONString(), FilterResponse.class);
  156. if (jsonObj.get("returnCode").toString().equals("1")) { // 성공
  157. result = response.getResponse();
  158. log.info("///[getFilterList] result: {}", result);
  159. }
  160. } catch (Exception e) {
  161. e.printStackTrace();
  162. }
  163. return result;
  164. }
  165. /**
  166. * 상품리스트
  167. * @param params - 파라미터
  168. * @return
  169. * @author gagamel
  170. * @since 2021. 5. 31
  171. */
  172. public GoodsListResponse getGoodsList(SearchEngine params) {
  173. GoodsListResponse result = new GoodsListResponse();
  174. Map<String, Object> paramMap = this.convertObjectToMap(params);
  175. paramMap.put("adminIp", ipAddr);
  176. paramMap.put("adminPort", port);
  177. paramMap.put("pageNumber", String.valueOf(params.getPageNo()));
  178. paramMap.put("rowsPerPage", String.valueOf(params.getPageSize()));
  179. log.info("///[getGoodsList] paramMap: {}", paramMap);
  180. try {
  181. JSONObject jsonObj = SearchService.getGoodsList(paramMap);
  182. log.info("///[getGoodsList] jsonObj: {}", jsonObj.toJSONString());
  183. if (jsonObj.get("returnCode").toString().equals("1")) { // 성공
  184. Gson gson = new Gson();
  185. result = gson.fromJson(jsonObj.toJSONString(), GoodsListResponse.class);
  186. log.info("///[getGoodsList] result: {}", result);
  187. }
  188. } catch (Exception e) {
  189. e.printStackTrace();
  190. }
  191. return result;
  192. }
  193. private String[] getStringArray (String[] arr){
  194. String[] arry = null;
  195. if(arr != null){
  196. List<String> lst = new ArrayList<String>(Arrays.asList(arr));
  197. arry = lst.toArray(new String[lst.size()]);
  198. }
  199. return arry;
  200. }
  201. /**
  202. * 기획전 목록
  203. * @param keyword - 검색어
  204. * @param pageNo - 페이지번호
  205. * @param pageSize - 페이지사이즈
  206. * @return
  207. * @author gagamel
  208. * @since 2021. 6. 7
  209. */
  210. public PlanningResponse getPlanningList(String keyword, int pageNo, int pageSize) {
  211. PlanningResponse result = new PlanningResponse();
  212. Map<String, Object> paramMap = new HashMap<String, Object>();
  213. paramMap.put("adminIp", ipAddr);
  214. paramMap.put("adminPort", port);
  215. paramMap.put("keyword", keyword);
  216. paramMap.put("pageNumber", String.valueOf(pageNo));
  217. paramMap.put("rowsPerPage", String.valueOf(pageSize));
  218. log.info("///[getPlanningList] paramMap: {}", paramMap);
  219. try {
  220. JSONObject jsonObj = PlanSearch.planSearchApi(paramMap);
  221. log.info("///[getPlanningList] jsonObj: {}", jsonObj.toJSONString());
  222. Gson gson = new Gson();
  223. result = gson.fromJson(jsonObj.toJSONString(), PlanningResponse.class);
  224. log.info("///[getPlanningList] result: {}", result);
  225. } catch (Exception e) {
  226. e.printStackTrace();
  227. }
  228. return result;
  229. }
  230. /**
  231. * 이벤트 목록
  232. * @param keyword - 검색어
  233. * @param pageNo - 페이지번호
  234. * @param pageSize - 페이지사이즈
  235. * @return
  236. * @author gagamel
  237. * @since 2021. 6. 7
  238. */
  239. public PlanningResponse getEventList(String keyword, int pageNo, int pageSize) {
  240. PlanningResponse result = new PlanningResponse();
  241. Map<String, Object> paramMap = new HashMap<String, Object>();
  242. paramMap.put("adminIp", ipAddr);
  243. paramMap.put("adminPort", port);
  244. paramMap.put("keyword", keyword);
  245. paramMap.put("pageNumber", String.valueOf(pageNo));
  246. paramMap.put("rowsPerPage", String.valueOf(pageSize));
  247. log.info("///[getEventList] paramMap: {}", paramMap);
  248. try {
  249. JSONObject jsonObj = PlanSearch.planSearchApi(paramMap);
  250. log.info("///[getEventList] jsonObj: {}", jsonObj.toJSONString());
  251. Gson gson = new Gson();
  252. result = gson.fromJson(jsonObj.toJSONString(), PlanningResponse.class);
  253. log.info("///[getEventList] result: {}", result);
  254. } catch (Exception e) {
  255. e.printStackTrace();
  256. }
  257. return result;
  258. }
  259. /**
  260. * Object를 Map으로 변환
  261. * @param obj - Object
  262. * @return
  263. */
  264. @SuppressWarnings("unchecked")
  265. private Map<String, Object> convertObjectToMap(Object obj) {
  266. ObjectMapper objectMapper = new ObjectMapper();
  267. return objectMapper.convertValue(obj, Map.class);
  268. }
  269. }