소스 검색

don't show components who has no goods if status is specified

sunyj 8 년 전
부모
커밋
f8afac09ff
1개의 변경된 파일17개의 추가작업 그리고 14개의 파일을 삭제
  1. 17 14
      mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

+ 17 - 14
mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -964,24 +964,27 @@ public class SearchServiceImpl implements SearchService {
         Object status;
         // 筛选状态
         if (!CollectionUtils.isEmpty(filters) && !StringUtils.isEmpty(filters.get(FilterField.GOODS_STATUS))) {
+            // 如果明确指定了状态,则直接过滤批次(结果中不包括没有批次的器件)
             status = filters.get(FilterField.GOODS_STATUS);
+            filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, query);
         } else {
+            // 如果未明确指定状态,则使用默认状态分情况进行过滤(结果中包括没有批次的器件)
             status = Arrays.asList(TradeGoods.VALID_STATUS);
+            // 批次 id 不为空时,对状态过滤
+            Query goIdNotNullQuery = SearchUtils.getNotNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
+            BooleanQuery q1 = new BooleanQuery();
+            q1.add(goIdNotNullQuery, Occur.MUST);
+            filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, q1);
+            // 或者批次 id 为空(此时是器件)
+            BooleanQuery q2 = new BooleanQuery();
+            q2.add(SearchUtils.getNotNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.SHOULD);
+            q2.add(goIdNotNullQuery, Occur.MUST_NOT);
+
+            BooleanQuery booleanQuery = new BooleanQuery();
+            booleanQuery.add(q1, Occur.SHOULD);
+            booleanQuery.add(q2, Occur.SHOULD);
+            query.add(booleanQuery, Occur.FILTER);
         }
-        // 批次 id 不为空时,对状态过滤
-        Query goIdNotNullQuery = SearchUtils.getNotNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
-        BooleanQuery q1 = new BooleanQuery();
-        q1.add(goIdNotNullQuery, Occur.MUST);
-        filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, q1);
-        // 或者批次 id 为空(此时是器件)
-        BooleanQuery q2 = new BooleanQuery();
-        q2.add(SearchUtils.getNotNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.SHOULD);
-        q2.add(goIdNotNullQuery, Occur.MUST_NOT);
-
-        BooleanQuery booleanQuery = new BooleanQuery();
-        booleanQuery.add(q1, Occur.SHOULD);
-        booleanQuery.add(q2, Occur.SHOULD);
-        query.add(booleanQuery, Occur.FILTER);
 
         if (CollectionUtils.isEmpty(filters)) {
             return;