From 0ccc9a0dcadfb32aa8c63b718518ec0d216fae8f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 05 九月 2024 17:06:16 +0800
Subject: [PATCH] 保存到mongo时设置标签信息

---
 ycl-server/src/main/java/com/ycl/utils/MongoUtil.java |   71 ++++++++++++++++++++++++++++++++---
 1 files changed, 64 insertions(+), 7 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 4f88595..316516c 100644
--- a/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java
+++ b/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java
@@ -1,12 +1,20 @@
 package com.ycl.utils;
 
+import com.ycl.platform.domain.query.DataCenterQuery;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.TextCriteria;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * mongo宸ュ叿绫�
@@ -17,16 +25,65 @@
 public class MongoUtil {
 
     /**
-     * 鏋勯�犲叏鏂囩储寮曠殑鏉′欢
+     * 鏋勯�犳暟鎹腑蹇冩悳绱㈢殑鏉′欢
      *
-     * @param query
-     * @param keyword
+     * @param params 鏁版嵁涓績璇锋眰鍙傛暟
+     * @param gbFiled 鍥芥爣鐮佸瓧娈垫槸鍝竴涓�
+     * @param timeFiled 鏃堕棿瀛楁鏄摢涓�涓�
+     * @param gbList 鍥芥爣鐮�
+     * @param likeFileds 浣跨敤like鏌ヨ鐨勫瓧娈�
      */
-    public static void fullText(Query query, String keyword) {
-        if (StringUtils.hasText(keyword)) {
-            TextCriteria criteria = TextCriteria.forDefaultLanguage().matching(keyword);
-            query.addCriteria(criteria);
+    public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> likeFileds, List<String> gbList) {
+        // 鍏抽敭瀛�
+        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;
+        // in
+        if (! CollectionUtils.isEmpty(gbList)) {
+            in = Criteria.where(gbFiled).in(gbList);
+        }
+
+        // 鏃堕棿
+        Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime());
+
+        // 灏嗘煡璇㈡潯浠禷nd璧锋潵
+        Criteria and = new Criteria();
+        List<Criteria> qList = new ArrayList<>(3);
+        qList.add(time);
+        if (Objects.nonNull(in)) {
+            qList.add(in);
+        }
+        if (Objects.nonNull(or)) {
+            qList.add(or);
+        }
+        and.andOperator(qList);
+        // 杩斿洖鏌ヨ
+        return Query.query(and);
+    }
+
+    /**
+     * 鏋勯�犳暟鎹腑蹇冩悳绱㈢殑鏉′欢
+     *
+     * @param query 鏌ヨ鏉′欢
+     * @param timeFiled 鏃堕棿瀛楁鏄摢涓�涓�
+     * @param params 璇锋眰鍙傛暟
+     */
+    public static void setPage(Query query,DataCenterQuery params, String timeFiled) {
+        // 鎺掑簭鍒嗛〉
+        query.with(Sort.by(Sort.Order.desc(timeFiled))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize()));
     }
 
 }

--
Gitblit v1.8.0