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

This commit is contained in:
疯狂的狮子Li 2021-12-17 21:50:14 +08:00
parent d40b9324ca
commit 3fce90dbb9
5 changed files with 16 additions and 7 deletions

View File

@ -6,6 +6,7 @@ import java.lang.annotation.*;
* 数据权限
*
* @author Lion Li
* @version 3.5.0
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

View File

@ -6,6 +6,7 @@ import java.lang.annotation.*;
* 数据权限组
*
* @author Lion Li
* @version 3.5.0
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)

View File

@ -15,6 +15,7 @@ import lombok.Getter;
* 如需扩展更多自定义服务 可以参考 sdss 自行编写
*
* @author Lion Li
* @version 3.5.0
*/
@Getter
@AllArgsConstructor

View File

@ -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;

View File

@ -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();