From e6b45d4cdbab85f26514911090420f1f39474b92 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 16 十二月 2021 10:54:44 +0800
Subject: [PATCH] update 数据权限注解支持类标注
---
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java | 2 +-
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java | 31 ++++---------------------------
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java | 13 +++++++++++--
3 files changed, 16 insertions(+), 30 deletions(-)
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 e04b236..128a1f4 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
@@ -7,7 +7,7 @@
*
* @author Lion Li
*/
-@Target(ElementType.METHOD)
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataPermission {
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
index 3880950..0a7936c 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
@@ -1,16 +1,9 @@
package com.ruoyi.demo.mapper;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ruoyi.common.annotation.DataColumn;
import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.demo.domain.TestTree;
-import org.apache.ibatis.annotations.Param;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
/**
* 娴嬭瘯鏍戣〃Mapper鎺ュ彛
@@ -18,26 +11,10 @@
* @author Lion Li
* @date 2021-07-26
*/
+@DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+})
public interface TestTreeMapper extends BaseMapperPlus<TestTree> {
- @Override
- @DataPermission({
- @DataColumn(key = "deptName", value = "dept_id"),
- @DataColumn(key = "userName", value = "user_id")
- })
- List<TestTree> selectList(@Param(Constants.WRAPPER) Wrapper<TestTree> queryWrapper);
-
- @Override
- @DataPermission({
- @DataColumn(key = "deptName", value = "dept_id"),
- @DataColumn(key = "userName", value = "user_id")
- })
- int updateById(@Param(Constants.ENTITY) TestTree entity);
-
- @Override
- @DataPermission({
- @DataColumn(key = "deptName", value = "dept_id"),
- @DataColumn(key = "userName", value = "user_id")
- })
- int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
}
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 f3e3207..5bcb868 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
@@ -17,6 +17,7 @@
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.Parenthesis;
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import org.springframework.context.expression.BeanFactoryResolver;
@@ -60,10 +61,12 @@
}
try {
Expression expression = CCJSqlParserUtil.parseExpression(dataFilterSql);
+ // 鏁版嵁鏉冮檺浣跨敤鍗曠嫭鐨勬嫭鍙� 闃叉涓庡叾浠栨潯浠跺啿绐�
+ Parenthesis parenthesis = new Parenthesis(expression);
if (ObjectUtil.isNotNull(where)) {
- return new AndExpression(where, expression);
+ return new AndExpression(where, parenthesis);
} else {
- return expression;
+ return parenthesis;
}
} catch (JSQLParserException e) {
throw new ServiceException("鏁版嵁鏉冮檺瑙f瀽寮傚父 => " + e.getMessage());
@@ -126,12 +129,18 @@
List<Method> methods = Arrays.stream(ClassUtil.getDeclaredMethods(clazz))
.filter(method -> method.getName().equals(methodName)).collect(Collectors.toList());
DataPermission dataPermission;
+ // 鑾峰彇鏂规硶娉ㄨВ
for (Method method : methods) {
if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
return dataPermission.value();
}
}
+ // 鑾峰彇绫绘敞瑙�
+ if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
+ dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
+ return dataPermission.value();
+ }
return null;
}
}
--
Gitblit v1.9.3