Ver código fonte

update 优化数据权限缓存合并为一个 标注版本注释

疯狂的狮子Li 3 anos atrás
pai
commit
3fce90dbb9

+ 1 - 0
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)

+ 1 - 0
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)

+ 1 - 0
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

+ 7 - 7
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<Method, DataPermission> methodCacheMap = new ConcurrentHashMap<>();
-    private final Map<Class<?>, DataPermission> classCacheMap = new ConcurrentHashMap<>();
+    private final Map<String, DataPermission> 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;

+ 6 - 0
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();