Authored by hugufei

命中不了时,只召回skn,再查询skn信息

@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
24 import org.springframework.stereotype.Component; 24 import org.springframework.stereotype.Component;
25 25
26 import java.util.ArrayList; 26 import java.util.ArrayList;
  27 +import java.util.Arrays;
27 import java.util.List; 28 import java.util.List;
28 import java.util.Map; 29 import java.util.Map;
29 30
@@ -78,13 +79,14 @@ public class SceneRecallService { @@ -78,13 +79,14 @@ public class SceneRecallService {
78 //1、判断当前页码是否在召回的页码里 79 //1、判断当前页码是否在召回的页码里
79 int recallTotalPage = recallSknResult.getRecallTotalPage(); 80 int recallTotalPage = recallSknResult.getRecallTotalPage();
80 //2、在召回结果中则直接根据skn去查询 81 //2、在召回结果中则直接根据skn去查询
  82 + List<Integer> productSkns = null;
81 if(page<=recallTotalPage){ 83 if(page<=recallTotalPage){
82 - List<Integer> productSkns = CollectionUtils.safeSubList(recallSknResult.getSknList(),(page-1)*pageSize,page*pageSize);  
83 - return bacthSknInfoComponent.queryProductListBySkn(productSkns,productSkns.size());  
84 - } 84 + productSkns = CollectionUtils.safeSubList(recallSknResult.getSknList(),(page-1)*pageSize,page*pageSize);
  85 + }else{
85 //3、过滤召回的skn,修改真实页码,执行查询 86 //3、过滤召回的skn,修改真实页码,执行查询
86 - int realPage = page - recallTotalPage;  
87 - return this.queryProductByFilterSkn(recallSknParams, recallSknResult.getSknList(), realPage, pageSize); 87 + productSkns = this.queryProductSknByFilterSkn(recallSknParams, recallSknResult.getSknList(), recallTotalPage-page, pageSize);
  88 + }
  89 + return bacthSknInfoComponent.queryProductListBySkn(productSkns,productSkns.size());
88 } 90 }
89 91
90 /** 92 /**
@@ -94,7 +96,7 @@ public class SceneRecallService { @@ -94,7 +96,7 @@ public class SceneRecallService {
94 * @param pageSize 96 * @param pageSize
95 * @return 97 * @return
96 */ 98 */
97 - private List<Map<String, Object>> queryProductByFilterSkn(RecallSknParams recallSknParams,List<Integer> notProductSkns,int realPage,int pageSize){ 99 + private List<Integer> queryProductSknByFilterSkn(RecallSknParams recallSknParams,List<Integer> notProductSkns,int realPage,int pageSize){
98 SearchParam searchParam = new SearchParam(); 100 SearchParam searchParam = new SearchParam();
99 101
100 //1、设置query 102 //1、设置query
@@ -110,7 +112,7 @@ public class SceneRecallService { @@ -110,7 +112,7 @@ public class SceneRecallService {
110 searchParam.setSize(pageSize); 112 searchParam.setSize(pageSize);
111 113
112 //4、设置IncludeFields 114 //4、设置IncludeFields
113 - searchParam.setIncludeFields(productIndexBaseService.getProductIndexIncludeFields()); 115 + searchParam.setIncludeFields(Arrays.asList(ProductIndexEsField.productSkn));
114 116
115 //5、设置排序 117 //5、设置排序
116 List<SortBuilder<?>> sortBuilders = new ArrayList<>(); 118 List<SortBuilder<?>> sortBuilders = new ArrayList<>();
@@ -119,7 +121,12 @@ public class SceneRecallService { @@ -119,7 +121,12 @@ public class SceneRecallService {
119 sortBuilders.add(SortBuilderHelper.getIdDescSort()); 121 sortBuilders.add(SortBuilderHelper.getIdDescSort());
120 searchParam.setSortBuilders(sortBuilders); 122 searchParam.setSortBuilders(sortBuilders);
121 SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX,searchParam); 123 SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX,searchParam);
122 - return productIndexBaseService.getProductListWithPricePlan(searchResult.getResultList()); 124 +
  125 + List<Integer> results = new ArrayList<>();
  126 + for (Map<String, Object> product : searchResult.getResultList()) {
  127 + results.add(MapUtils.getIntValue(product,ProductIndexEsField.productSkn,0));
  128 + }
  129 + return results;
123 } 130 }
124 131
125 } 132 }