|
|
@@ -0,0 +1,377 @@
|
|
|
+package com.uas.platform.b2c.common.search.rpc.service.Impl;
|
|
|
+
|
|
|
+
|
|
|
+import com.uas.platform.b2c.common.search.constant.SearchUrl;
|
|
|
+import com.uas.platform.b2c.common.search.rpc.service.SearchService;
|
|
|
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
|
|
|
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
|
|
|
+import com.uas.search.exception.SearchException;
|
|
|
+import com.uas.search.model.CollectField;
|
|
|
+import com.uas.search.model.PageParams;
|
|
|
+import com.uas.search.model.SPage;
|
|
|
+import org.apache.commons.collections.map.HashedMap;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 通过resttemplate调用搜索接口的实现方法
|
|
|
+ *
|
|
|
+ * @author yuj 2017-10-20 8:57
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SearchServiceImpl implements SearchService{
|
|
|
+
|
|
|
+ private final RestTemplate restTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public SearchServiceImpl(RestTemplate restTemplate) {
|
|
|
+ this.restTemplate = restTemplate;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SPage<Long> getKindIds(String keyword, Integer page, Integer size) throws SearchException {
|
|
|
+ Map<String, Object> map = initSearchMap(keyword, page, size);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.KIND_ID_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
|
|
|
+ return sPage;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) throws SearchException {
|
|
|
+ Map<String, Object> map = initSearchMap(keyword, page, size);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.KIND_INFO_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ SPage<Map<String, Object>> sPage = FastjsonUtils.fromJson(str, SPage.class);
|
|
|
+ return sPage;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException {
|
|
|
+ Map<String, Object> map = initSearchMap(keyword, page, size);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.BRAND_ID_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
|
|
|
+ return sPage;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SPage<Map<String, List<Integer>>> getBrands(String keyword, Integer page, Integer size) throws SearchException {
|
|
|
+ Map<String, Object> map = initSearchMap(keyword, page, size);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.BRAND_INFO_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ SPage<Map<String, List<Integer>>> sPage = FastjsonUtils.fromJson(str, SPage.class);
|
|
|
+ return sPage;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getComponentIds(String keyword, PageParams var2) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("params", FlexJsonUtils.toJsonDeep(var2));
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.COMPONENT_ID_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ Map<String, Object> reMap = FastjsonUtils.fromJson(str, Map.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Set<Long> getKindIdsBySearchComponent(String keyword, String brandId) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("brandId", brandId);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.KIND_ID_COMPONENT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ Set<Long> reMap = FastjsonUtils.fromJson(str, Set.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getKindsBySearchComponent(String keyword, String brandId) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("brandId", brandId);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.KIND_COMPONENT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Set<Long> getBrandIdsBySearchComponent(String keyword, String kindId) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("kindId", kindId);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.BREAND_ID_COMPONENT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ Set<Long> reMap = FastjsonUtils.fromJson(str, Set.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getBrandsBySearchComponent(String keyword, String kindId) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("kindId", kindId);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.BREAND_COMPONENT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> getSimilarKeywords(String keyword) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR_KEYWORD_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<String> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarComponents(String keyword) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR_COMPONENT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarBrands(String keyword) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR_BRAND_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarKinds(String keyword) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR_KIND_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarLeafKinds(String keyword) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR_LEAF_KIND_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarKindsByLevel(String kindName, Short level) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("kindName", kindName);
|
|
|
+ map.put("level", level);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.SIMILAR__KIND_LEVEL_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> getSimilarPropertyValues(Long kindId, Long propertyId, String keyword, Long topNum) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("kindId", kindId);
|
|
|
+ map.put("propertyId", propertyId);
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("topNum", topNum);
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.PROPERTYVALUES_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, String>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getGoodsIds(String keyword, PageParams var2) throws SearchException {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("params", FlexJsonUtils.toJsonDeep(var2));
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.GOODIS_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ Map<String, Object> reMap = FastjsonUtils.fromJson(str, Map.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> collectBySearchGoods(String keyword, CollectField collectField, Map<PageParams.FilterField, Object> filters) {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("collectedField", collectField);
|
|
|
+ map.put("filters", FastjsonUtils.toJson(filters));
|
|
|
+ String str = restTemplate.getForObject(SearchUrl.GOODS_COLLECT_URL, String.class, map);
|
|
|
+ if(StringUtils.isEmpty(str)) {
|
|
|
+ return null;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
|
|
|
+ return reMap;
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String , Object> initSearchMap(String keyword, Integer page, Integer size) {
|
|
|
+ Map<String, Object> map = new HashedMap();
|
|
|
+ map.put("keyword", keyword);
|
|
|
+ map.put("page", page);
|
|
|
+ map.put("size", size);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|