Authored by zhaojun2

search brand

@@ -49,6 +49,19 @@ public class BrandController { @@ -49,6 +49,19 @@ public class BrandController {
49 return brandService.brands(paramMap); 49 return brandService.brands(paramMap);
50 } 50 }
51 51
  52 +
  53 + /**
  54 + * 关键字查询品牌id
  55 + * @param request
  56 + * @return
  57 + */
  58 + @RequestMapping(method = RequestMethod.GET, value = "/brand/searchBrand")
  59 + @ResponseBody
  60 + public SearchApiResult searchBrand(HttpServletRequest request) {
  61 + Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
  62 + return brandService.searchBrand(paramMap);
  63 + }
  64 +
52 /** 65 /**
53 * 批量获取brandIds对应的商品数量和商品列表[我收藏的品牌-支持个性化] 66 * 批量获取brandIds对应的商品数量和商品列表[我收藏的品牌-支持个性化]
54 * 67 *
@@ -55,4 +55,7 @@ public interface IBrandService { @@ -55,4 +55,7 @@ public interface IBrandService {
55 * @return 55 * @return
56 */ 56 */
57 public SearchApiResult aggProductsByBrandIdInParam(Map<String, String> paramMap); 57 public SearchApiResult aggProductsByBrandIdInParam(Map<String, String> paramMap);
  58 +
  59 + SearchApiResult searchBrand(Map<String, String> paramMap);
  60 +
58 } 61 }
@@ -9,7 +9,6 @@ import java.util.Iterator; @@ -9,7 +9,6 @@ import java.util.Iterator;
9 import java.util.LinkedHashMap; 9 import java.util.LinkedHashMap;
10 import java.util.List; 10 import java.util.List;
11 import java.util.Map; 11 import java.util.Map;
12 -import java.util.Map.Entry;  
13 12
14 import com.yoho.search.base.utils.ConvertUtils; 13 import com.yoho.search.base.utils.ConvertUtils;
15 import com.yoho.search.service.helper.ProductListHelper; 14 import com.yoho.search.service.helper.ProductListHelper;
@@ -56,7 +55,6 @@ import com.yoho.search.service.aggregations.impls.AggregationFactoryService; @@ -56,7 +55,6 @@ import com.yoho.search.service.aggregations.impls.AggregationFactoryService;
56 import com.yoho.search.service.base.SearchCommonService; 55 import com.yoho.search.service.base.SearchCommonService;
57 import com.yoho.search.service.base.SearchRequestParams; 56 import com.yoho.search.service.base.SearchRequestParams;
58 import com.yoho.search.service.base.index.BrandIndexBaseService; 57 import com.yoho.search.service.base.index.BrandIndexBaseService;
59 -import com.yoho.search.service.base.index.ProductIndexBaseService;  
60 import com.yoho.search.service.helper.SearchCommonHelper; 58 import com.yoho.search.service.helper.SearchCommonHelper;
61 import com.yoho.search.service.helper.SearchParamHelper; 59 import com.yoho.search.service.helper.SearchParamHelper;
62 import com.yoho.search.service.helper.SearchSortHelper; 60 import com.yoho.search.service.helper.SearchSortHelper;
@@ -390,6 +388,31 @@ public class BrandServiceImpl extends AbstractCacheAbleService implements IBrand @@ -390,6 +388,31 @@ public class BrandServiceImpl extends AbstractCacheAbleService implements IBrand
390 } 388 }
391 } 389 }
392 390
  391 +
  392 + @Override
  393 + public SearchApiResult searchBrand(Map<String, String> paramMap) {
  394 + // 1、参数校验
  395 + if (StringUtils.isBlank(paramMap.get(SearchRequestParams.PARAM_SEARCH_QUERY))) {
  396 + return new SearchApiResult().setCode(400).setMessage("请传query参数");
  397 + }
  398 + // 1)构建参数
  399 + SearchParam searchParam = new SearchParam();
  400 + searchParam.setSize(10);
  401 + searchParam.setQuery(QueryBuilders.matchQuery("brandName", paramMap.get(SearchRequestParams.PARAM_SEARCH_QUERY)));
  402 +
  403 + // 2、brand数据量比较大,走本地缓存。guavacache缓存中获取result,没有到es中获取
  404 + final String brandIndexName = ISearchConstants.INDEX_NAME_BRAND;
  405 + // 3、执行搜索
  406 + SearchResult searchResult = searchCommonService.doSearch(brandIndexName, searchParam);
  407 + if (searchResult == null || searchResult.getResultList().isEmpty()) {
  408 + return new SearchApiResult().setCode(400).setMessage("empty result");
  409 + }
  410 + Map<String, List> data = new HashMap<>();
  411 + data.put("brands", searchResult.getResultList());
  412 + return new SearchApiResult().setCode(200).setData(data);
  413 + }
  414 +
  415 +
393 private JSONArray getNewBrandResponseMap(MultiBucketsAggregation aggregation, int size, List<Integer> brandIds, final String realSortField, final SortOrder realSortOrder) { 416 private JSONArray getNewBrandResponseMap(MultiBucketsAggregation aggregation, int size, List<Integer> brandIds, final String realSortField, final SortOrder realSortOrder) {
394 // 1、首先获取全部品牌的商品列表 417 // 1、首先获取全部品牌的商品列表
395 Iterator<? extends Bucket> itAgg = aggregation.getBuckets().iterator(); 418 Iterator<? extends Bucket> itAgg = aggregation.getBuckets().iterator();