From fa2b9250bd671cb61f363c24d6fa2d0d0ab7d9f8 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 22 一月 2024 15:36:04 +0800
Subject: [PATCH] 添加 驼峰转换为下划线

---
 src/main/java/com/moon/server/service/all/BaseQueryService.java |   77 +++++++++++++++++++++++++++++++-------
 1 files changed, 62 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/moon/server/service/all/BaseQueryService.java b/src/main/java/com/moon/server/service/all/BaseQueryService.java
index cba44ef..bbef592 100644
--- a/src/main/java/com/moon/server/service/all/BaseQueryService.java
+++ b/src/main/java/com/moon/server/service/all/BaseQueryService.java
@@ -37,20 +37,20 @@
     /**
      * 琛ㄥ悕Map
      */
-    private static Map<String, String> tabMap = new HashMap<>(3);
+    private static final Map<String, String> TAB_MAP = new HashMap<>(3);
 
     /**
-     * 娣诲姞杩囨护鏉′欢
+     * 娣诲姞杩囨护鏉′欢锛�(?i)and
      *
      * @param wrapper QueryWrapper
      * @param filter  鍘熷杩囨护鏉′欢瀛楃涓�
      */
-    public void addFilterWrapper(QueryWrapper wrapper, String filter) {
+    public <T> void addFilterWrapper(QueryWrapper<T> wrapper, String filter) {
         if (StringHelper.isEmpty(filter)) {
             return;
         }
 
-        String[] strs = filter.trim().split(" (?i)and ");
+        String[] strs = filter.trim().split(" and | or ");
         for (String str : strs) {
             int start = str.indexOf(" ");
             if (start == -1) {
@@ -61,12 +61,59 @@
                 continue;
             }
 
-            String field = str.substring(0, start).trim();
+            String field = camelToUnderline(str.substring(0, start).trim());
             String express = str.substring(start + 1, end).trim().toLowerCase();
             String value = str.substring(end + 1).trim();
 
+            start = filter.indexOf(str) - StaticData.I4;
+            end = filter.indexOf(" or ", start);
+            if (start == end && start > -1) {
+                wrapper = wrapper.or();
+            }
+
             addWrapper(wrapper, field, express, getObjectVal(express, value));
         }
+    }
+
+    /**
+     * 椹煎嘲杞崲涓轰笅鍒掔嚎
+     */
+    public static String camelToUnderline(String str) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0, c = str.length(); i < c; i++) {
+            char ch = str.charAt(i);
+            if (Character.isUpperCase(ch)) {
+                sb.append('_').append(Character.toLowerCase(ch));
+            } else {
+                sb.append(ch);
+            }
+        }
+
+        return sb.toString().replaceAll("_+", "_");
+    }
+
+    /**
+     * 涓嬪垝绾胯浆鎹负椹煎嘲
+     */
+    public static String underlineToCamel(String str) {
+        StringBuilder sb = new StringBuilder();
+
+        boolean nextIsCapitalized = false;
+        for (int i = 0, c = str.length(); i < c; i++) {
+            char ch = str.charAt(i);
+            if (ch == '_') {
+                nextIsCapitalized = true;
+                continue;
+            }
+            if (nextIsCapitalized) {
+                sb.append(Character.toUpperCase(ch));
+                nextIsCapitalized = false;
+            } else {
+                sb.append(Character.toLowerCase(c));
+            }
+        }
+
+        return sb.toString();
     }
 
     /**
@@ -97,7 +144,7 @@
      * @param express 琛ㄨ揪寮�
      * @param val     鍊�
      */
-    private void addWrapper(QueryWrapper wrapper, String field, String express, Object val) {
+    private <T> void addWrapper(QueryWrapper<T> wrapper, String field, String express, Object val) {
         if (StringHelper.isDate(val.toString())) {
             wrapper.apply(String.format("%s %s '%s'", field, express, val));
             return;
@@ -191,7 +238,7 @@
 
         Integer srid = basicMapper.selectSrid(tab);
         if (null == srid) {
-            return StaticData.I4490;
+            return StaticData.I104903;
         }
         redisService.put(key, srid, 5, TimeUnit.MINUTES);
 
@@ -206,8 +253,8 @@
      */
     public static String getTabName(BasicMapper basicMapper) {
         String className = ClassHelper.getClassName(basicMapper);
-        if (tabMap.containsKey(className)) {
-            return tabMap.get(className);
+        if (TAB_MAP.containsKey(className)) {
+            return TAB_MAP.get(className);
         }
 
         return getTabName(className);
@@ -228,8 +275,8 @@
         TableName annotation = (TableName) clazz.getAnnotation(TableName.class);
 
         String tabName = annotation.value();
-        if (tabName != null && !tabMap.containsKey(className)) {
-            tabMap.put(className, tabName);
+        if (tabName != null && !TAB_MAP.containsKey(className)) {
+            TAB_MAP.put(className, tabName);
         }
 
         return tabName;
@@ -265,17 +312,17 @@
     }
 
     @Override
-    public Integer selectTabsForCount(String tab, String field) {
+    public Integer selectTabsForCount(String tab, String typesFilter, String field) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsForCount(tab, field);
+        return baseQueryMapper.selectTabsForCount(tab, typesFilter, field);
     }
 
     @Override
-    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) {
+    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset);
+        return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset);
     }
 
     @Override

--
Gitblit v1.9.3