From a58f72868a5763d32c35742b254408eeb1b4ca61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 8 Jan 2025 14:47:57 +0800 Subject: [PATCH 1/5] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/core/utils/StringUtils.java | 17 +++++++++++++++++ .../generator/service/GenTableServiceImpl.java | 14 ++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java index dd6ebb119..897ab920a 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java @@ -320,4 +320,21 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { .collect(Collectors.toList()); } + /** + * 不区分大小写检查 CharSequence 是否以指定的前缀开头。 + * + * @param str 要检查的 CharSequence 可能为 null + * @param prefixs 要查找的前缀可能为 null + * @return 是否包含 + */ + public static boolean startWithAnyIgnoreCase(CharSequence str, CharSequence... prefixs) { + // 判断是否是以指定字符串开头 + for (CharSequence prefix : prefixs) { + if (StringUtils.startsWithIgnoreCase(str, prefix)) { + return true; + } + } + return false; + } + } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java index acf5bf820..37299804a 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java @@ -137,7 +137,7 @@ public class GenTableServiceImpl implements IGenTableService { } // 过滤并转换表格数据 List tables = tablesMap.values().stream() - .filter(x -> !startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) + .filter(x -> !StringUtils.startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) .filter(x -> { if (CollUtil.isEmpty(tableNames)) { return true; @@ -176,16 +176,6 @@ public class GenTableServiceImpl implements IGenTableService { return TableDataInfo.build(page); } - public static boolean startWithAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences) { - // 判断是否是以指定字符串开头 - for (CharSequence searchCharSequence : searchCharSequences) { - if (StringUtils.startsWithIgnoreCase(cs, searchCharSequence)) { - return true; - } - } - return false; - } - /** * 查询据库列表 * @@ -204,7 +194,7 @@ public class GenTableServiceImpl implements IGenTableService { } List> tableList = tablesMap.values().stream() - .filter(x -> !startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) + .filter(x -> !StringUtils.startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) .filter(x -> tableNameSet.contains(x.getName())).toList(); if (CollUtil.isEmpty(tableList)) { From 9a95c46578a7a6e805ef1d2b2688fda41e8457c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 8 Jan 2025 15:50:38 +0800 Subject: [PATCH 2/5] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B0=86serv?= =?UTF-8?q?let=E6=94=B9=E4=B8=BAsaholder=20=E5=85=BC=E5=AE=B9=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/tenant/helper/TenantHelper.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java index 74c31107d..4b6981a10 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java @@ -1,16 +1,16 @@ package org.dromara.common.tenant.helper; +import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.context.model.SaStorage; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; -import jakarta.servlet.http.HttpServletRequest; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.GlobalConstants; -import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; @@ -137,7 +137,7 @@ public class TenantHelper { } String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.setCacheObject(cacheKey, tenantId); - ServletUtils.getRequest().setAttribute(cacheKey, tenantId); + SaHolder.getStorage().set(cacheKey, tenantId); } /** @@ -157,15 +157,15 @@ public class TenantHelper { if (StringUtils.isNotBlank(tenantId)) { return tenantId; } - HttpServletRequest request = ServletUtils.getRequest(); + SaStorage storage = SaHolder.getStorage(); String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); - tenantId = (String) request.getAttribute(cacheKey); + tenantId = storage.getString(cacheKey); // 如果为 -1 说明已经查过redis并且不存在值 则直接返回null if (StringUtils.isNotBlank(tenantId)) { return tenantId.equals("-1") ? null : tenantId; } tenantId = RedisUtils.getCacheObject(cacheKey); - request.setAttribute(cacheKey, StringUtils.isBlank(tenantId) ? "-1" : tenantId); + storage.set(cacheKey, StringUtils.isBlank(tenantId) ? "-1" : tenantId); return tenantId; } @@ -183,7 +183,7 @@ public class TenantHelper { TEMP_DYNAMIC_TENANT.remove(); String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.deleteObject(cacheKey); - ServletUtils.getRequest().removeAttribute(cacheKey); + SaHolder.getStorage().delete(cacheKey); } /** From d2b9cd27970c754da35e951b4cb5f6e7a6fcdea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 9 Jan 2025 14:27:52 +0800 Subject: [PATCH 3/5] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90=20=E5=88=A4=E6=96=AD=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E6=B3=A8=E8=A7=A3=E4=B8=8D=E6=BB=A1=E8=B6=B3=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=99=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mybatis/handler/PlusDataPermissionHandler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java index 07baedb39..a3547075b 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java @@ -180,7 +180,10 @@ public class PlusDataPermissionHandler { if (!StringUtils.containsAny(type.getSqlTemplate(), keys.toArray(String[]::new))) { continue; } - + // 当前注解不满足模板 不处理 + if (!StringUtils.containsAny(type.getSqlTemplate(), dataColumn.key())) { + continue; + } // 忽略数据权限 防止spel表达式内有其他sql查询导致死循环调用 String sql = DataPermissionHelper.ignore(() -> parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class) From 55b1a67637cf63504ca207181a0df7753e2b030e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 12 Jan 2025 20:35:11 +0800 Subject: [PATCH 4/5] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E9=87=8D=E5=A4=8D=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/tenant/handle/TenantKeyPrefixHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java index fbf210df1..dcdef6e62 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java @@ -60,18 +60,18 @@ public class TenantKeyPrefixHandler extends KeyPrefixHandler { } try { if (InterceptorIgnoreHelper.willIgnoreTenantLine("")) { - return super.unmap(name); + return unmap; } } catch (NoClassDefFoundError ignore) { // 有些服务不需要mp导致类不存在 忽略即可 } if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) { - return super.unmap(name); + return unmap; } String tenantId = TenantHelper.getTenantId(); if (StringUtils.isBlank(tenantId)) { log.debug("无法获取有效的租户id -> Null"); - return super.unmap(name); + return unmap; } if (StringUtils.startsWith(unmap, tenantId + "")) { // 如果存在则删除 From b47798ef198d725ec63800f73d3e7a3a61f7fdcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 12 Jan 2025 20:35:39 +0800 Subject: [PATCH 5/5] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=97=A0?= =?UTF-8?q?=E9=9C=80=E5=A4=9A=E4=BD=99set=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/tenant/config/TenantConfig.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java index 2513aac92..3767fa2f1 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java @@ -55,14 +55,12 @@ public class TenantConfig { // 使用单机模式 // 设置多租户 redis key前缀 singleServerConfig.setNameMapper(nameMapper); - ReflectUtils.invokeSetter(config, "singleServerConfig", singleServerConfig); } ClusterServersConfig clusterServersConfig = ReflectUtils.invokeGetter(config, "clusterServersConfig"); // 集群配置方式 参考下方注释 if (ObjectUtil.isNotNull(clusterServersConfig)) { // 设置多租户 redis key前缀 clusterServersConfig.setNameMapper(nameMapper); - ReflectUtils.invokeSetter(config, "clusterServersConfig", clusterServersConfig); } }; }