From d6e5a42f021b5e2612f970da21cccf386a4e6640 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 04 九月 2024 18:46:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/java/com/ycl/utils/MongoUtil.java |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java b/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java
index 0089c62..316516c 100644
--- a/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java
+++ b/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java
@@ -13,6 +13,8 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * mongo宸ュ叿绫�
@@ -29,12 +31,23 @@
      * @param gbFiled 鍥芥爣鐮佸瓧娈垫槸鍝竴涓�
      * @param timeFiled 鏃堕棿瀛楁鏄摢涓�涓�
      * @param gbList 鍥芥爣鐮�
+     * @param likeFileds 浣跨敤like鏌ヨ鐨勫瓧娈�
      */
-    public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> gbList) {
+    public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> likeFileds, List<String> gbList) {
         // 鍏抽敭瀛�
-        TextCriteria text = null;
-        if (StringUtils.hasText(params.getKeyword())) {
-            text = TextCriteria.forDefaultLanguage().matching(params.getKeyword());
+        List<Criteria> likeList = null;
+        if (StringUtils.hasText(params.getKeyword()) && !CollectionUtils.isEmpty(likeFileds)) {
+            // 杞箟
+            String keyword = Pattern.quote(params.getKeyword());
+            likeList = likeFileds.stream().map(filed -> {
+                return Criteria.where(filed).regex(".*?" + keyword + ".*");
+            }).collect(Collectors.toList());
+        }
+        // 灏唋ike瀛楁or璧锋潵
+        Criteria or = null;
+        if (! CollectionUtils.isEmpty(likeList)) {
+            or = new Criteria();
+            or.orOperator(likeList);
         }
 
         Criteria in = null;
@@ -49,13 +62,13 @@
         // 灏嗘煡璇㈡潯浠禷nd璧锋潵
         Criteria and = new Criteria();
         List<Criteria> qList = new ArrayList<>(3);
-        if (Objects.nonNull(text)) {
-            qList.add(Criteria.byExample(text));
-        }
+        qList.add(time);
         if (Objects.nonNull(in)) {
             qList.add(in);
         }
-        qList.add(time);
+        if (Objects.nonNull(or)) {
+            qList.add(or);
+        }
         and.andOperator(qList);
         // 杩斿洖鏌ヨ
         return Query.query(and);

--
Gitblit v1.8.0