mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	update 数据权限注解支持类标注
This commit is contained in:
		@@ -7,7 +7,7 @@ import java.lang.annotation.*;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 */
 | 
			
		||||
@Target(ElementType.METHOD)
 | 
			
		||||
@Target({ElementType.METHOD, ElementType.TYPE})
 | 
			
		||||
@Retention(RetentionPolicy.RUNTIME)
 | 
			
		||||
@Documented
 | 
			
		||||
public @interface DataPermission {
 | 
			
		||||
 
 | 
			
		||||
@@ -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 @@ import java.util.List;
 | 
			
		||||
 * @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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ import com.ruoyi.common.utils.spring.SpringUtils;
 | 
			
		||||
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 @@ public class PlusDataPermissionHandler {
 | 
			
		||||
        }
 | 
			
		||||
        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("数据权限解析异常 => " + e.getMessage());
 | 
			
		||||
@@ -126,12 +129,18 @@ public class PlusDataPermissionHandler {
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user