Showing
3 changed files
with
26 additions
and
23 deletions
@@ -153,6 +153,7 @@ public class SearchRequestParams { | @@ -153,6 +153,7 @@ public class SearchRequestParams { | ||
153 | //ufo | 153 | //ufo |
154 | public static final String UFOPRODUCTINDEX_SEARCH_QUERY = "query"; | 154 | public static final String UFOPRODUCTINDEX_SEARCH_QUERY = "query"; |
155 | public static final String UFOPRODUCTINDEX_PARAM_ID = "id"; | 155 | public static final String UFOPRODUCTINDEX_PARAM_ID = "id"; |
156 | + public static final String UFOPRODUCTINDEX_PARAM_NOT_ID = "not_id"; | ||
156 | public static final String UFOPRODUCTINDEX_PARAM_MAXSORT = "maxSort"; | 157 | public static final String UFOPRODUCTINDEX_PARAM_MAXSORT = "maxSort"; |
157 | public static final String UFOPRODUCTINDEX_PARAM_MIDSORT = "midSort"; | 158 | public static final String UFOPRODUCTINDEX_PARAM_MIDSORT = "midSort"; |
158 | public static final String UFOPRODUCTINDEX_PARAM_GENDER = "gender"; | 159 | public static final String UFOPRODUCTINDEX_PARAM_GENDER = "gender"; |
@@ -61,17 +61,21 @@ public class UfoSearchQueryHelper extends BaseService { | @@ -61,17 +61,21 @@ public class UfoSearchQueryHelper extends BaseService { | ||
61 | 61 | ||
62 | public BoolQueryBuilder constructFilterBuilder(Map<String, String> paramMap, String filterParamName) throws Exception { | 62 | public BoolQueryBuilder constructFilterBuilder(Map<String, String> paramMap, String filterParamName) throws Exception { |
63 | BoolQueryBuilder boolFilter = QueryBuilders.boolQuery(); | 63 | BoolQueryBuilder boolFilter = QueryBuilders.boolQuery(); |
64 | + //只id过滤 | ||
65 | + if ("Y".equals(paramMap.get(SearchRequestParams.UFOPRODUCTINDEX_PARAM_IS_ID_FILTER))) { | ||
66 | + this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_ID, UfoProductIndexEsField.id); | ||
67 | + return boolFilter; | ||
68 | + } | ||
64 | //硬过滤 | 69 | //硬过滤 |
65 | - if (!"Y".equals(paramMap.get(SearchRequestParams.UFOPRODUCTINDEX_PARAM_IS_ID_FILTER))) { | ||
66 | - boolFilter.must(QueryBuilders.termQuery(UfoProductIndexEsField.delStatus, 0)); | ||
67 | - boolFilter.must(QueryBuilders.termQuery(UfoProductIndexEsField.shelveStatus, 1)); | ||
68 | - long now = DateUtil.getCurrentTimeSecond(); | ||
69 | - if ("Y".equals(paramMap.get(SearchRequestParams.UFOPRODUCTINDEX_PARAM_IS_SOON_SALE))) { | ||
70 | - boolFilter.must(QueryBuilders.rangeQuery(UfoProductIndexEsField.saleTime).gt(now)); | ||
71 | - paramMap.put("order", "saleTime:asc"); | ||
72 | - } else { | ||
73 | - boolFilter.must(QueryBuilders.rangeQuery(UfoProductIndexEsField.saleTime).lte(now)); | ||
74 | - } | 70 | + boolFilter.must(QueryBuilders.termQuery(UfoProductIndexEsField.delStatus, 0)); |
71 | + boolFilter.must(QueryBuilders.termQuery(UfoProductIndexEsField.shelveStatus, 1)); | ||
72 | + //是否是即将发售列表 | ||
73 | + long now = DateUtil.getCurrentTimeSecond(); | ||
74 | + if ("Y".equals(paramMap.get(SearchRequestParams.UFOPRODUCTINDEX_PARAM_IS_SOON_SALE))) { | ||
75 | + boolFilter.must(QueryBuilders.rangeQuery(UfoProductIndexEsField.saleTime).gt(now)); | ||
76 | + paramMap.put("order", "saleTime:asc"); | ||
77 | + } else { | ||
78 | + boolFilter.must(QueryBuilders.rangeQuery(UfoProductIndexEsField.saleTime).lte(now)); | ||
75 | } | 79 | } |
76 | //参数过滤 | 80 | //参数过滤 |
77 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_ID, UfoProductIndexEsField.id); | 81 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_ID, UfoProductIndexEsField.id); |
@@ -83,6 +87,11 @@ public class UfoSearchQueryHelper extends BaseService { | @@ -83,6 +87,11 @@ public class UfoSearchQueryHelper extends BaseService { | ||
83 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_SIZE, UfoProductIndexEsField.sizeIds); | 87 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_SIZE, UfoProductIndexEsField.sizeIds); |
84 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_COLOR, UfoProductIndexEsField.colorIds); | 88 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_COLOR, UfoProductIndexEsField.colorIds); |
85 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_POOL, UfoProductIndexEsField.poolIds); | 89 | this.addMustIntTermsQuery(boolFilter, paramMap, filterParamName, SearchRequestParams.UFOPRODUCTINDEX_PARAM_POOL, UfoProductIndexEsField.poolIds); |
90 | + //推荐列表中去掉自身 | ||
91 | + String not_id = paramMap.get(SearchRequestParams.UFOPRODUCTINDEX_PARAM_NOT_ID); | ||
92 | + if (StringUtils.isNotBlank(not_id)) { | ||
93 | + boolFilter.mustNot(QueryBuilders.termQuery(UfoProductIndexEsField.id, not_id)); | ||
94 | + } | ||
86 | return boolFilter; | 95 | return boolFilter; |
87 | } | 96 | } |
88 | 97 |
@@ -110,7 +110,7 @@ public class UfoProductListService { | @@ -110,7 +110,7 @@ public class UfoProductListService { | ||
110 | return new SearchApiResult().setCode(400).setMessage("参数不合法,缺少必传参数"); | 110 | return new SearchApiResult().setCode(400).setMessage("参数不合法,缺少必传参数"); |
111 | } | 111 | } |
112 | //第一次查询 | 112 | //第一次查询 |
113 | - paramMap.put("viewNum", "1000"); | 113 | + paramMap.put("viewNum", "100"); |
114 | SearchApiResult searchApiResult = this.productList(paramMap); | 114 | SearchApiResult searchApiResult = this.productList(paramMap); |
115 | if (searchApiResult.getData() == null) { | 115 | if (searchApiResult.getData() == null) { |
116 | return new SearchApiResult().setData(null).setCode(500); | 116 | return new SearchApiResult().setData(null).setCode(500); |
@@ -123,20 +123,13 @@ public class UfoProductListService { | @@ -123,20 +123,13 @@ public class UfoProductListService { | ||
123 | Set<Integer> idList = new HashSet<>(); | 123 | Set<Integer> idList = new HashSet<>(); |
124 | if (returnInfoList.size() < RECOMMEND_LIMIT) { | 124 | if (returnInfoList.size() < RECOMMEND_LIMIT) { |
125 | returnInfoList.stream().map(p -> MapUtils.getIntValue(p, "id")).forEach(id -> idList.add(id)); | 125 | returnInfoList.stream().map(p -> MapUtils.getIntValue(p, "id")).forEach(id -> idList.add(id)); |
126 | - //可能的第二次查询 | ||
127 | - paramMap = new HashMap<>(); | ||
128 | - paramMap.put("brand", brandId.toString()); | ||
129 | - paramMap.put("midSort", midSortId.toString()); | ||
130 | - paramMap.put("not_id", not_id.toString()); | ||
131 | - paramMap.put("viewNum", "1000"); | 126 | + //可能的第二次查询,去掉query去查 |
127 | + paramMap.remove("query"); | ||
132 | this.addReturnInfoList(paramMap, idList, returnInfoList); | 128 | this.addReturnInfoList(paramMap, idList, returnInfoList); |
133 | } | 129 | } |
134 | if (returnInfoList.size() < RECOMMEND_LIMIT) { | 130 | if (returnInfoList.size() < RECOMMEND_LIMIT) { |
135 | - //可能的第三次查询 | ||
136 | - paramMap = new HashMap<>(); | ||
137 | - paramMap.put("brand", brandId.toString()); | ||
138 | - paramMap.put("viewNum", "1000"); | ||
139 | - paramMap.put("not_id", not_id.toString()); | 131 | + //可能的第三次查询,去掉中分类去查 |
132 | + paramMap.remove("midSort"); | ||
140 | this.addReturnInfoList(paramMap, idList, returnInfoList); | 133 | this.addReturnInfoList(paramMap, idList, returnInfoList); |
141 | } | 134 | } |
142 | dataMap.put("total", returnInfoList.size()); | 135 | dataMap.put("total", returnInfoList.size()); |
@@ -168,7 +161,7 @@ public class UfoProductListService { | @@ -168,7 +161,7 @@ public class UfoProductListService { | ||
168 | 161 | ||
169 | public SearchApiResult productListForPlatform(Map<String, String> paramMap) { | 162 | public SearchApiResult productListForPlatform(Map<String, String> paramMap) { |
170 | try { | 163 | try { |
171 | - // 2. 构建SearchParam | 164 | + // 构建SearchParam |
172 | SearchParam searchParam = new SearchParam(); | 165 | SearchParam searchParam = new SearchParam(); |
173 | searchParam.setQuery(QueryBuilders.matchAllQuery()); | 166 | searchParam.setQuery(QueryBuilders.matchAllQuery()); |
174 | BoolQueryBuilder boolFilter = ufoSearchQueryHelper.constructFilterBuilderForPlatform(paramMap, null); | 167 | BoolQueryBuilder boolFilter = ufoSearchQueryHelper.constructFilterBuilderForPlatform(paramMap, null); |
-
Please register or login to post a comment