...
|
...
|
@@ -200,6 +200,7 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
public SearchApiResult searchShopsNew(Map<String, String> paramMap) {
|
|
|
try {
|
...
|
...
|
@@ -207,6 +208,7 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
|
|
|
// 1、参数校验
|
|
|
String keyword = paramMap.get(SearchRequestParams.PARAM_SEARCH_SHOPS_KEYWORD);
|
|
|
keyword = keyword.toLowerCase();
|
|
|
if (StringUtils.isBlank(keyword)) {
|
|
|
return new SearchApiResult().setCode(400).setMessage("keyword不能为空!");
|
|
|
}
|
...
|
...
|
@@ -223,6 +225,21 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
}
|
|
|
}
|
|
|
|
|
|
//tbl判断
|
|
|
SearchApiResult searchApiResult = searchTbl(paramMap,keyword);
|
|
|
JSONObject returnMap = new JSONObject();
|
|
|
if (searchApiResult.getData() != null) {
|
|
|
Map<String, Object> shopInfoMap = (Map<String, Object>) searchApiResult.getData();
|
|
|
JSONObject shopDataMap = new JSONObject();
|
|
|
Integer shopIdNumber = Integer.valueOf(shopInfoMap.get("shopsId").toString());
|
|
|
shopDataMap.put("brand_id", shopIdNumber * (-1));
|
|
|
shopDataMap.put("brand_name", shopInfoMap.get("shopName") == null ? "" : shopInfoMap.get("shopName"));
|
|
|
shopDataMap.put("brand_logo", shopInfoMap.get("shopLogo") == null ? "" : shopInfoMap.get("shopLogo"));
|
|
|
returnMap.put("tblBrand", shopDataMap);
|
|
|
return searchApiResult.setData(returnMap);
|
|
|
}
|
|
|
|
|
|
|
|
|
// 2、配置keyword的查询字段以及权重设置
|
|
|
MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(keyword);
|
|
|
queryBuilder.operator(MatchQueryBuilder.Operator.OR);
|
...
|
...
|
@@ -236,12 +253,10 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
searchParam.setFiter(boolFilterForShops);
|
|
|
searchParam.setQuery(queryBuilder);
|
|
|
searchParam.setSize(5);
|
|
|
|
|
|
final String indexName = ISearchConstants.INDEX_NAME_SHOPS;
|
|
|
SearchApiResult searchApiResult = new SearchApiResult().setMessage("shops info");
|
|
|
|
|
|
// 4、先从缓存里取数据
|
|
|
JSONObject returnMap = searchCacheService.getJSONObjectFromCache(indexName, searchParam);
|
|
|
returnMap = searchCacheService.getJSONObjectFromCache(indexName, searchParam);
|
|
|
if (returnMap != null) {
|
|
|
CACHE_MATCH_REQUEST.info("match cache , url is :/shops.json?" + HttpServletRequestUtils.genParamString(paramMap));
|
|
|
return searchApiResult.setData(returnMap);
|
...
|
...
|
@@ -249,6 +264,9 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
|
|
|
// 5、根据searchParam查询ES
|
|
|
returnMap = new JSONObject();
|
|
|
returnMap.put("shop", null);
|
|
|
returnMap.put("brand", null);
|
|
|
returnMap.put("tblBrand", null);
|
|
|
SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_SHOPS, searchParam);
|
|
|
List<String> shopIds = new ArrayList<String>();
|
|
|
Map<String, Map<String, Object>> shopInfoMap = new HashMap<String, Map<String, Object>>();
|
...
|
...
|
@@ -266,13 +284,21 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
if (!StringUtils.isBlank(shopId)) {
|
|
|
JSONObject shopDataMap = new JSONObject();
|
|
|
Map<String, Object> map = shopInfoMap.get(shopId);
|
|
|
shopDataMap.put("shop_id", map.get("shopsId"));
|
|
|
shopDataMap.put("shop_name", map.get("shopName") == null ? "" : map.get("shopName"));
|
|
|
shopDataMap.put("shop_logo", map.get("shopLogo") == null ? "" : map.get("shopLogo"));
|
|
|
shopDataMap.put("shop_domain", map.get("shopDomain") == null ? "" : map.get("shopDomain"));
|
|
|
shopDataMap.put("shop_type", map.get("shopsType") == null ? "" : map.get("shopsType"));
|
|
|
returnMap.put("shop", shopDataMap);
|
|
|
returnMap.put("brand", null);
|
|
|
Integer shopIdNumber = Integer.valueOf(map.get("shopsId").toString());
|
|
|
//全球购店铺的id是负数
|
|
|
if (shopIdNumber < 0) {
|
|
|
shopDataMap.put("brand_id", shopIdNumber * (-1));
|
|
|
shopDataMap.put("brand_name", map.get("shopName") == null ? "" : map.get("shopName"));
|
|
|
shopDataMap.put("brand_logo", map.get("shopLogo") == null ? "" : map.get("shopLogo"));
|
|
|
returnMap.put("tblBrand", shopDataMap);
|
|
|
} else {
|
|
|
shopDataMap.put("shop_id", map.get("shopsId"));
|
|
|
shopDataMap.put("shop_name", map.get("shopName") == null ? "" : map.get("shopName"));
|
|
|
shopDataMap.put("shop_logo", map.get("shopLogo") == null ? "" : map.get("shopLogo"));
|
|
|
shopDataMap.put("shop_domain", map.get("shopDomain") == null ? "" : map.get("shopDomain"));
|
|
|
shopDataMap.put("shop_type", map.get("shopsType") == null ? "" : map.get("shopsType"));
|
|
|
returnMap.put("shop", shopDataMap);
|
|
|
}
|
|
|
} else {
|
|
|
// 再去查品牌
|
|
|
returnMap = searchBrand(paramMap);
|
...
|
...
|
@@ -284,6 +310,44 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* shopsNew中搜索是否有匹配的全球购店铺,如果有直接返回。
|
|
|
* @param paramMap
|
|
|
* @param keyword
|
|
|
* @return
|
|
|
*/
|
|
|
private SearchApiResult searchTbl(Map<String, String> paramMap, String keyword) {
|
|
|
try {
|
|
|
SearchApiResult searchApiResult = new SearchApiResult().setMessage("shops info");
|
|
|
// 1、配置keyword的查询字段以及权重设置
|
|
|
MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(keyword);
|
|
|
queryBuilder.operator(MatchQueryBuilder.Operator.AND);
|
|
|
queryBuilder.field("shopName.shopName_fullMatch");
|
|
|
// 2、构建SearchParam
|
|
|
SearchParam searchParam = new SearchParam();
|
|
|
BoolQueryBuilder boolFilterForShops = this.constructShopsFilterBuilder(paramMap);
|
|
|
searchParam.setFiter(boolFilterForShops);
|
|
|
searchParam.setQuery(queryBuilder);
|
|
|
searchParam.setSize(5);
|
|
|
//3、配置sort
|
|
|
List<SortBuilder> sortBuilders = new ArrayList<SortBuilder>();
|
|
|
sortBuilders.add(SortBuilders.fieldSort("isGlobal").order(SortOrder.ASC));
|
|
|
searchParam.setSortBuilders(sortBuilders);
|
|
|
SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_SHOPS, searchParam);
|
|
|
if (searchResult != null && searchResult.getResultList() != null && !searchResult.getResultList().isEmpty()) {
|
|
|
List<Map<String, Object>> result = searchResult.getResultList();
|
|
|
Map<String, Object> shopInfo = result.get(0);
|
|
|
String isGlobal = shopInfo.get("isGlobal").toString();
|
|
|
if (isGlobal.equals("Y")) {
|
|
|
return searchApiResult.setData(shopInfo);
|
|
|
}
|
|
|
}
|
|
|
return new SearchApiResult();
|
|
|
} catch (Exception e) {
|
|
|
return SearchApiResultUtils.errorSearchApiResult("searchTbl", paramMap, e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private Map<String, Object> getGroupShopResponseMap(MultiBucketsAggregation aggregation, int size) {
|
|
|
Iterator<? extends Bucket> itAgg = aggregation.getBuckets().iterator();
|
|
|
Map<String, Object> dataMap = new HashMap<String, Object>();
|
...
|
...
|
@@ -336,20 +400,18 @@ public class ShopsServiceImpl extends BaseService implements IShopsService, Appl |
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
|
|
|
private JSONObject searchBrand(Map<String, String> paramMap) {
|
|
|
SearchApiResult searchApiResult = this.searchShops(paramMap);
|
|
|
JSONObject returnMap = new JSONObject();
|
|
|
returnMap.put("shop", null);
|
|
|
returnMap.put("brand", null);
|
|
|
returnMap.put("tblBrand", null);
|
|
|
if (searchApiResult != null && searchApiResult.getData() != null) {
|
|
|
JSONObject brandDataMap = (JSONObject) searchApiResult.getData();
|
|
|
returnMap.put("shop", null);
|
|
|
if (!brandDataMap.isEmpty()) {
|
|
|
returnMap.put("brand", brandDataMap);
|
|
|
} else {
|
|
|
returnMap.put("brand", null);
|
|
|
}
|
|
|
} else {// 店铺和品牌都没有结果
|
|
|
returnMap.put("shop", null);
|
|
|
returnMap.put("brand", null);
|
|
|
}
|
|
|
return returnMap;
|
|
|
}
|
...
|
...
|
|