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