zhijiezhao il y a 3 ans
Parent
commit
0b9a760cfc

+ 57 - 64
src/main/java/com/caimei365/commodity/service/impl/SearchProductServiceImpl.java

@@ -67,57 +67,54 @@ public class SearchProductServiceImpl implements SearchProductService {
     public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag,
                                                       int pageNum, int pageSize, String sortField, Integer sortType) {
         String queryStr = "product:'" + keyword + "'";
-        StringBuilder filter = new StringBuilder();
         if (StringUtils.isEmpty(keyword)) {
             queryStr = "p_all:'1'";
         }
+        List<String> filterList = new ArrayList<>();
+        if (newFlag == 1) {
+            Calendar c = Calendar.getInstance();
+            c.setTime(new Date());
+            c.add(Calendar.YEAR, -1);
+            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
+            filterList.add("p_time > " + time);
+        }
+        if (promotionFlag == 1) {
+            filterList.add("p_promotions_id > 0");
+        }
         if (!StringUtils.isEmpty(brandIds)) {
+            StringBuffer brandBuilder = new StringBuffer();
             if (brandIds.contains(",")) {
                 String[] split = brandIds.split(",");
                 for (int i = 0; i < split.length; i++) {
                     if (i == 0) {
-                        filter.append("p_brand:'").append(split[i]).append("'");
+                        brandBuilder.append("p_brand_id=").append(split[i]);
                     } else {
-                        filter.append(" OR p_brand:'").append(split[i]).append("'");
+                        brandBuilder.append(" OR p_brand_id=").append(split[i]);
                     }
                 }
             } else {
-                filter.append("p_brand:'").append(brandIds).append("'");
-            }
-        }
-        if (!StringUtils.isEmpty(brandIds)) {
-            if (newFlag == 1) {
-                Calendar c = Calendar.getInstance();
-                c.setTime(new Date());
-                c.add(Calendar.YEAR, -1);
-                String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-                filter.append(" AND p_time > ").append(time);
+                brandBuilder.append("p_brand_id=").append(brandIds);
             }
-            if (promotionFlag == 1) {
-                if (newFlag == 1) {
-                    filter.append(" AND p_promotions_id > 0");
-                } else {
-                    filter.append("p_promotions_id > 0");
-                }
+            String brandFilter = brandBuilder.toString();
+            if (brandFilter.contains("OR")) {
+                brandFilter = "(" + brandFilter + ")";
             }
-        }else{
-            if (newFlag == 1) {
-                Calendar c = Calendar.getInstance();
-                c.setTime(new Date());
-                c.add(Calendar.YEAR, -1);
-                String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-                filter.append("p_time > ").append(time);
-            }
-            if (promotionFlag == 1) {
-                if (newFlag == 1) {
-                    filter.append(" AND p_promotions_id > 0");
+            filterList.add(brandFilter);
+        }
+        String filter = "";
+        StringBuffer filterBuffer = new StringBuffer();
+        if (filterList.size() > 0) {
+            for (int i = 0; i < filterList.size(); i++) {
+                if (i == 0) {
+                    filterBuffer.append(filterList.get(i));
                 } else {
-                    filter.append("p_promotions_id > 0");
+                    filterBuffer.append(" AND ").append(filterList.get(i));
                 }
             }
+            filter = "(" + filterBuffer.toString() + ")";
         }
         // 阿里云搜索
-        ResponseJson<String> result = queryProduct(queryStr, filter.toString(), identity, pageNum, pageSize, sortField, sortType);
+        ResponseJson<String> result = queryProduct(queryStr, filter, identity, pageNum, pageSize, sortField, sortType);
         if (0 == result.getCode()) {
             return result;
         } else {
@@ -155,7 +152,6 @@ public class SearchProductServiceImpl implements SearchProductService {
             queryStr = "p_all:'1'";
         }
         if (newFlag == 1) {
-//            p_time=20201105
             Calendar c = Calendar.getInstance();
             c.setTime(new Date());
             c.add(Calendar.YEAR, -1);
@@ -219,7 +215,6 @@ public class SearchProductServiceImpl implements SearchProductService {
     @Override
     public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType) {
         String queryStr = "";
-        StringBuilder filter = new StringBuilder();
         if (idType == 1) {
             queryStr = "p_bigtype:'" + id + "'";
         } else if (idType == 2) {
@@ -234,50 +229,48 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (requestSize > SEARCH_MAX_NUM) {
             requestPageSize = (int) Math.floor(SEARCH_MAX_NUM / pageSize) * pageSize;
         }
+        List<String> filterList = new ArrayList<>();
+        if (newFlag == 1) {
+            Calendar c = Calendar.getInstance();
+            c.setTime(new Date());
+            c.add(Calendar.YEAR, -1);
+            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
+            filterList.add("p_time > " + time);
+        }
+        if (promotionFlag == 1) {
+            filterList.add("p_promotions_id > 0");
+        }
         if (!StringUtils.isEmpty(brandIds)) {
+            StringBuffer brandBuilder = new StringBuffer();
             if (brandIds.contains(",")) {
                 String[] split = brandIds.split(",");
                 for (int i = 0; i < split.length; i++) {
                     if (i == 0) {
-                        filter.append("p_brand:'").append(split[i]).append("'");
+                        brandBuilder.append("p_brand_id=").append(split[i]);
                     } else {
-                        filter.append(" OR p_brand:'").append(split[i]).append("'");
+                        brandBuilder.append(" OR p_brand_id=").append(split[i]);
                     }
                 }
             } else {
-                filter.append("p_brand:'").append(brandIds).append("'");
-            }
-        }
-        if (!StringUtils.isEmpty(brandIds)) {
-            if (newFlag == 1) {
-                Calendar c = Calendar.getInstance();
-                c.setTime(new Date());
-                c.add(Calendar.YEAR, -1);
-                String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-                filter.append(" AND p_time > ").append(time);
+                brandBuilder.append("p_brand_id=").append(brandIds);
             }
-            if (promotionFlag == 1) {
-                if (newFlag == 1) {
-                    filter.append(" AND p_promotions_id > 0");
-                } else {
-                    filter.append("p_promotions_id > 0");
-                }
+            String brandFilter = brandBuilder.toString();
+            if (brandFilter.contains("OR")) {
+                brandFilter = "(" + brandFilter + ")";
             }
-        }else{
-            if (newFlag == 1) {
-                Calendar c = Calendar.getInstance();
-                c.setTime(new Date());
-                c.add(Calendar.YEAR, -1);
-                String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-                filter.append("p_time > ").append(time);
-            }
-            if (promotionFlag == 1) {
-                if (newFlag == 1) {
-                    filter.append(" AND p_promotions_id > 0");
+            filterList.add(brandFilter);
+        }
+        String filter = "";
+        StringBuffer filterBuffer = new StringBuffer();
+        if (filterList.size() > 0) {
+            for (int i = 0; i < filterList.size(); i++) {
+                if (i == 0) {
+                    filterBuffer.append(filterList.get(i));
                 } else {
-                    filter.append("p_promotions_id > 0");
+                    filterBuffer.append(" AND ").append(filterList.get(i));
                 }
             }
+            filter = "(" + filterBuffer.toString() + ")";
         }
         SearchParams searchParams = searchOpenService.getScrollProductParams(queryStr, identity, requestPageSize, sortField, sortType);
         String thisFilter = searchParams.getFilter();