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