mirror of https://gitee.com/stylefeng/roses
【8.1.1】【db】更新数据范围
parent
a8d771a61f
commit
0ed0a01e77
|
@ -0,0 +1,43 @@
|
|||
package cn.stylefeng.roses.kernel.db.mp.datascope;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler;
|
||||
import net.sf.jsqlparser.expression.Expression;
|
||||
import net.sf.jsqlparser.expression.LongValue;
|
||||
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
|
||||
import net.sf.jsqlparser.expression.operators.relational.InExpression;
|
||||
import net.sf.jsqlparser.schema.Column;
|
||||
import net.sf.jsqlparser.schema.Table;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 项目数据权限的处理器
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024/2/28 21:16
|
||||
*/
|
||||
public class ProjectDataScopeHandler implements MultiDataPermissionHandler {
|
||||
|
||||
@Override
|
||||
public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) {
|
||||
|
||||
// 创建 org_id 列
|
||||
Column column = new Column("org_id");
|
||||
|
||||
// 创建 IN 表达式的值列表
|
||||
ExpressionList expressionList = new ExpressionList();
|
||||
expressionList.setExpressions(Arrays.asList(
|
||||
new LongValue(1),
|
||||
new LongValue(2),
|
||||
new LongValue(3)
|
||||
));
|
||||
|
||||
// 创建 IN 表达式
|
||||
InExpression inExpression = new InExpression();
|
||||
inExpression.setLeftExpression(column);
|
||||
inExpression.setRightItemsList(expressionList);
|
||||
|
||||
return inExpression;
|
||||
}
|
||||
|
||||
}
|
|
@ -25,6 +25,7 @@
|
|||
package cn.stylefeng.roses.kernel.db.starter;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.tenant.TenantTableProperties;
|
||||
import cn.stylefeng.roses.kernel.db.mp.datascope.ProjectDataScopeHandler;
|
||||
import cn.stylefeng.roses.kernel.db.mp.dbid.CustomDatabaseIdProvider;
|
||||
import cn.stylefeng.roses.kernel.db.mp.fieldfill.CustomMetaObjectHandler;
|
||||
import cn.stylefeng.roses.kernel.db.mp.injector.CustomInsertBatchSqlInjector;
|
||||
|
@ -32,6 +33,7 @@ import cn.stylefeng.roses.kernel.db.mp.tenant.ProjectTenantInterceptor;
|
|||
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
||||
|
@ -80,6 +82,9 @@ public class ProjectMyBatisPlusAutoConfiguration {
|
|||
// 使用分页插插件
|
||||
interceptor.addInnerInterceptor(paginationInterceptor());
|
||||
|
||||
// 使用数据权限插件
|
||||
interceptor.addInnerInterceptor(dataPermissionInterceptor());
|
||||
|
||||
// 使用乐观锁插件
|
||||
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
|
||||
|
||||
|
@ -153,4 +158,15 @@ public class ProjectMyBatisPlusAutoConfiguration {
|
|||
return new TenantLineInnerInterceptor(new ProjectTenantInterceptor(tenantTableProperties));
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据范围处理插件
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024/2/28 21:17
|
||||
*/
|
||||
@Bean
|
||||
public DataPermissionInterceptor dataPermissionInterceptor() {
|
||||
return new DataPermissionInterceptor(new ProjectDataScopeHandler());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue