From 3fce90dbb923fe56c7c579c195060f78d81ae774 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: Fri, 17 Dec 2021 21:50:14 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E7=BC=93=E5=AD=98=E5=90=88=E5=B9=B6=E4=B8=BA?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=20=E6=A0=87=E6=B3=A8=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/annotation/DataColumn.java | 1 + .../ruoyi/common/annotation/DataPermission.java | 1 + .../java/com/ruoyi/common/enums/DataScopeType.java | 1 + .../handler/PlusDataPermissionHandler.java | 14 +++++++------- .../interceptor/PlusDataPermissionInterceptor.java | 6 ++++++ 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java index 936466697..bd2ddece1 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java @@ -6,6 +6,7 @@ import java.lang.annotation.*; * 数据权限 * * @author Lion Li + * @version 3.5.0 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java index 128a1f4e9..73d9c039c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java @@ -6,6 +6,7 @@ import java.lang.annotation.*; * 数据权限组 * * @author Lion Li + * @version 3.5.0 */ @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java index 5ae69ecfa..3deeecffc 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java @@ -15,6 +15,7 @@ import lombok.Getter; * 如需扩展更多自定义服务 可以参考 sdss 自行编写 * * @author Lion Li + * @version 3.5.0 */ @Getter @AllArgsConstructor diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java index c1ac605bc..6cec14061 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java @@ -41,15 +41,15 @@ import java.util.stream.Collectors; * 数据权限过滤 * * @author Lion Li + * @version 3.5.0 */ @Slf4j public class PlusDataPermissionHandler { /** - * 方法或类 与 注解的映射关系缓存 + * 方法或类(名称) 与 注解的映射关系缓存 */ - private final Map methodCacheMap = new ConcurrentHashMap<>(); - private final Map, DataPermission> classCacheMap = new ConcurrentHashMap<>(); + private final Map dataPermissionCacheMap = new ConcurrentHashMap<>(); /** * 无效注解方法缓存用于快速返回 @@ -154,24 +154,24 @@ public class PlusDataPermissionHandler { DataPermission dataPermission; // 获取方法注解 for (Method method : methods) { - dataPermission = methodCacheMap.get(method); + dataPermission = dataPermissionCacheMap.get(method.getName()); if (ObjectUtil.isNotNull(dataPermission)) { return dataPermission.value(); } if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) { dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class); - methodCacheMap.put(method, dataPermission); + dataPermissionCacheMap.put(method.getName(), dataPermission); return dataPermission.value(); } } - dataPermission = classCacheMap.get(clazz); + dataPermission = dataPermissionCacheMap.get(clazz.getName()); if (ObjectUtil.isNotNull(dataPermission)) { return dataPermission.value(); } // 获取类注解 if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) { dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class); - classCacheMap.put(clazz, dataPermission); + dataPermissionCacheMap.put(clazz.getName(), dataPermission); return dataPermission.value(); } return null; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java index 6f4d4b7b3..508f42167 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java @@ -24,6 +24,12 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.List; +/** + * 数据权限拦截器 + * + * @author Lion Li + * @version 3.5.0 + */ public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor { private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler();