From aa4429a11d9b73bbcb1628090b6bafb75c4c6a00 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 27 九月 2023 14:51:07 +0800 Subject: [PATCH] 修改代理服务-2 --- src/main/java/com/moon/server/service/all/BaseQueryService.java | 54 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 39 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..41d19ad 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,36 @@ continue; } - String field = str.substring(0, start).trim(); + String field = convertFiled(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)); } + } + + /** + * 瀛楁杞崲 + */ + private String convertFiled(String field) { + StringBuilder sb = new StringBuilder(); + for (int i = 0, c = field.length(); i < c; i++) { + char ch = field.charAt(i); + if (Character.isUpperCase(ch)) { + sb.append('_'); + sb.append(Character.toLowerCase(ch)); + } else { + sb.append(ch); + } + } + + return sb.toString(); } /** @@ -97,7 +121,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 +215,7 @@ Integer srid = basicMapper.selectSrid(tab); if (null == srid) { - return StaticData.I4490; + return StaticData.I104903; } redisService.put(key, srid, 5, TimeUnit.MINUTES); @@ -206,8 +230,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 +252,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 +289,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