package com.iailab.framework.datapermission.config; import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; import com.iailab.framework.datapermission.core.aop.DataPermissionAnnotationAdvisor; import com.iailab.framework.datapermission.core.db.DataPermissionRuleHandler; import com.iailab.framework.datapermission.core.rule.DataPermissionRule; import com.iailab.framework.datapermission.core.rule.DataPermissionRuleFactory; import com.iailab.framework.datapermission.core.rule.DataPermissionRuleFactoryImpl; import com.iailab.framework.mybatis.core.util.MyBatisUtils; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import java.util.List; /** * 数据权限的自动配置类 * * @author iailab */ @AutoConfiguration public class IailabDataPermissionAutoConfiguration { @Bean public DataPermissionRuleFactory dataPermissionRuleFactory(List rules) { return new DataPermissionRuleFactoryImpl(rules); } @Bean public DataPermissionRuleHandler dataPermissionRuleHandler(MybatisPlusInterceptor interceptor, DataPermissionRuleFactory ruleFactory) { // 创建 DataPermissionInterceptor 拦截器 DataPermissionRuleHandler handler = new DataPermissionRuleHandler(ruleFactory); DataPermissionInterceptor inner = new DataPermissionInterceptor(handler); // 添加到 interceptor 中 // 需要加在首个,主要是为了在分页插件前面。这个是 MyBatis Plus 的规定 MyBatisUtils.addInterceptor(interceptor, inner, 0); return handler; } @Bean public DataPermissionAnnotationAdvisor dataPermissionAnnotationAdvisor() { return new DataPermissionAnnotationAdvisor(); } }