Bladeren bron

filter by status for goods

sunyj 8 jaren geleden
bovenliggende
commit
901fba692e

+ 5 - 0
src/main/java/com/uas/search/constant/model/PageParams.java

@@ -176,6 +176,11 @@ public class PageParams implements Serializable {
 		 */
 		GOODS_CRNAME,
 
+		/**
+		 * 状态
+		 */
+		GOODS_STATUS,
+
 		/**
 		 * 价格区间过滤:人民币最低价格
 		 */

+ 1 - 1
src/main/java/com/uas/search/controller/SearchController.java

@@ -300,7 +300,7 @@ public class SearchController {
 
 	@RequestMapping("/collectBySearchGoods")
 	@ResponseBody
-	public List<Map<String, Object>> collectBySearchGoods(String keyword, String collectedField, String filters, HttpServletRequest request) {
+	public List<Map<String, Object>> collectBySearchGoods(String keyword, @RequestParam String collectedField, String filters, HttpServletRequest request) {
         Map<FilterField, Object> filtersMap = new HashMap<>();
         if(!StringUtils.isEmpty(filters)){
             JSONObject json = JSONObject.parseObject(filters);

+ 19 - 12
src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -866,29 +866,32 @@ public class SearchServiceImpl implements SearchService {
 		try {
 			BooleanQuery booleanQuery = queryGoods(keyword, keywordFields, tokenized);
 			Map<FilterField, Object> filters = pageParams.getFilters();
+            // 筛选状态
+            if (!CollectionUtils.isEmpty(filters) && !StringUtils.isEmpty(filters.get(FilterField.GOODS_STATUS))) {
+                filter(filters.get(FilterField.GOODS_STATUS), SearchConstants.GOODS_GO_STATUS_FIELD, booleanQuery);
+            } else {
+                // 未指定时,过滤默认状态
+                filter(Arrays.asList(TradeGoods.VALID_STATUS), SearchConstants.GOODS_GO_STATUS_FIELD, booleanQuery);
+            }
 			if (!CollectionUtils.isEmpty(filters)) {
 				// 筛选类目
 				if (!StringUtils.isEmpty(filters.get(FilterField.GOODS_KINDID))) {
-					Object kindIds = filters.get(FilterField.GOODS_KINDID);
-					filter(kindIds, SearchConstants.GOODS_KI_ID_FIELD, booleanQuery);
+					filter(filters.get(FilterField.GOODS_KINDID), SearchConstants.GOODS_KI_ID_FIELD, booleanQuery);
 				}
 
 				// 筛选品牌
 				if (!StringUtils.isEmpty(filters.get(FilterField.GOODS_BRANDID))) {
-					Object brandIds = filters.get(FilterField.GOODS_BRANDID);
-					filter(brandIds, SearchConstants.GOODS_BR_ID_FIELD, booleanQuery);
+					filter(filters.get(FilterField.GOODS_BRANDID), SearchConstants.GOODS_BR_ID_FIELD, booleanQuery);
 				}
 
 				// 筛选货源
 				if (!StringUtils.isEmpty(filters.get(FilterField.GOODS_STORE_TYPE))) {
-					Object storeTypes = filters.get(FilterField.GOODS_STORE_TYPE);
-					filter(storeTypes, SearchConstants.GOODS_ST_TYPE_FIELD, booleanQuery);
+					filter(filters.get(FilterField.GOODS_STORE_TYPE), SearchConstants.GOODS_ST_TYPE_FIELD, booleanQuery);
 				}
 
 				// 筛选货币
 				if (!StringUtils.isEmpty(filters.get(FilterField.GOODS_CRNAME))) {
-					Object crNames = filters.get(FilterField.GOODS_CRNAME);
-					filter(crNames, SearchConstants.GOODS_CRNAME_FIELD, booleanQuery);
+					filter(filters.get(FilterField.GOODS_CRNAME), SearchConstants.GOODS_CRNAME_FIELD, booleanQuery);
 				}
 
 				// 价格筛选
@@ -1084,6 +1087,13 @@ public class SearchServiceImpl implements SearchService {
 		List<Map<String, Object>> result = new ArrayList<>();
 		try {
 			BooleanQuery booleanQuery = queryGoods(keyword, keywordFields, tokenized);
+            // 筛选状态
+            if (!CollectionUtils.isEmpty(filters) && !StringUtils.isEmpty(filters.get(FilterField.GOODS_STATUS))) {
+                filter(filters.get(FilterField.GOODS_STATUS), SearchConstants.GOODS_GO_STATUS_FIELD, booleanQuery);
+            } else {
+                // 未指定时,过滤默认状态
+                filter(Arrays.asList(TradeGoods.VALID_STATUS), SearchConstants.GOODS_GO_STATUS_FIELD, booleanQuery);
+            }
 			// 过滤
 			Set<Entry<FilterField, Object>> entrySet = filters.entrySet();
 			for (Entry<FilterField, Object> entry : entrySet) {
@@ -1165,15 +1175,12 @@ public class SearchServiceImpl implements SearchService {
 					if (tokenized == null || !tokenized.booleanValue()) {
 						booleanQuery2.add(new TermQuery(new Term(keywordField, keyword.toLowerCase())), BooleanClause.Occur.SHOULD);
 					} else {
-						booleanQuery2.add(SearchUtils.getBooleanQuery(keywordField, keyword),
-								BooleanClause.Occur.SHOULD);
+						booleanQuery2.add(SearchUtils.getBooleanQuery(keywordField, keyword), BooleanClause.Occur.SHOULD);
 					}
 				}
 				booleanQuery.add(booleanQuery2, BooleanClause.Occur.MUST);
 			}
 		}
-		// 过滤状态
-		filter(Arrays.asList(TradeGoods.VALID_STATUS), SearchConstants.GOODS_GO_STATUS_FIELD, booleanQuery);
 		return booleanQuery;
 	}