update 优化数据权限缓存合并为一个 标注版本注释
This commit is contained in:
parent
d40b9324ca
commit
3fce90dbb9
@ -6,6 +6,7 @@ import java.lang.annotation.*;
|
|||||||
* 数据权限
|
* 数据权限
|
||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
|
* @version 3.5.0
|
||||||
*/
|
*/
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@ -6,6 +6,7 @@ import java.lang.annotation.*;
|
|||||||
* 数据权限组
|
* 数据权限组
|
||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
|
* @version 3.5.0
|
||||||
*/
|
*/
|
||||||
@Target({ElementType.METHOD, ElementType.TYPE})
|
@Target({ElementType.METHOD, ElementType.TYPE})
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@ -15,6 +15,7 @@ import lombok.Getter;
|
|||||||
* 如需扩展更多自定义服务 可以参考 sdss 自行编写
|
* 如需扩展更多自定义服务 可以参考 sdss 自行编写
|
||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
|
* @version 3.5.0
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -41,15 +41,15 @@ import java.util.stream.Collectors;
|
|||||||
* 数据权限过滤
|
* 数据权限过滤
|
||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
|
* @version 3.5.0
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class PlusDataPermissionHandler {
|
public class PlusDataPermissionHandler {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 方法或类 与 注解的映射关系缓存
|
* 方法或类(名称) 与 注解的映射关系缓存
|
||||||
*/
|
*/
|
||||||
private final Map<Method, DataPermission> methodCacheMap = new ConcurrentHashMap<>();
|
private final Map<String, DataPermission> dataPermissionCacheMap = new ConcurrentHashMap<>();
|
||||||
private final Map<Class<?>, DataPermission> classCacheMap = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 无效注解方法缓存用于快速返回
|
* 无效注解方法缓存用于快速返回
|
||||||
@ -154,24 +154,24 @@ public class PlusDataPermissionHandler {
|
|||||||
DataPermission dataPermission;
|
DataPermission dataPermission;
|
||||||
// 获取方法注解
|
// 获取方法注解
|
||||||
for (Method method : methods) {
|
for (Method method : methods) {
|
||||||
dataPermission = methodCacheMap.get(method);
|
dataPermission = dataPermissionCacheMap.get(method.getName());
|
||||||
if (ObjectUtil.isNotNull(dataPermission)) {
|
if (ObjectUtil.isNotNull(dataPermission)) {
|
||||||
return dataPermission.value();
|
return dataPermission.value();
|
||||||
}
|
}
|
||||||
if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
|
if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
|
||||||
dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
|
dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
|
||||||
methodCacheMap.put(method, dataPermission);
|
dataPermissionCacheMap.put(method.getName(), dataPermission);
|
||||||
return dataPermission.value();
|
return dataPermission.value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dataPermission = classCacheMap.get(clazz);
|
dataPermission = dataPermissionCacheMap.get(clazz.getName());
|
||||||
if (ObjectUtil.isNotNull(dataPermission)) {
|
if (ObjectUtil.isNotNull(dataPermission)) {
|
||||||
return dataPermission.value();
|
return dataPermission.value();
|
||||||
}
|
}
|
||||||
// 获取类注解
|
// 获取类注解
|
||||||
if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
|
if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
|
||||||
dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
|
dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
|
||||||
classCacheMap.put(clazz, dataPermission);
|
dataPermissionCacheMap.put(clazz.getName(), dataPermission);
|
||||||
return dataPermission.value();
|
return dataPermission.value();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -24,6 +24,12 @@ import java.sql.Connection;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据权限拦截器
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @version 3.5.0
|
||||||
|
*/
|
||||||
public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor {
|
public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor {
|
||||||
|
|
||||||
private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler();
|
private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user