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;
|
package cn.stylefeng.roses.kernel.db.starter;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.tenant.TenantTableProperties;
|
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.dbid.CustomDatabaseIdProvider;
|
||||||
import cn.stylefeng.roses.kernel.db.mp.fieldfill.CustomMetaObjectHandler;
|
import cn.stylefeng.roses.kernel.db.mp.fieldfill.CustomMetaObjectHandler;
|
||||||
import cn.stylefeng.roses.kernel.db.mp.injector.CustomInsertBatchSqlInjector;
|
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.autoconfigure.MybatisPlusAutoConfiguration;
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
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.OptimisticLockerInnerInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
||||||
|
@ -80,6 +82,9 @@ public class ProjectMyBatisPlusAutoConfiguration {
|
||||||
// 使用分页插插件
|
// 使用分页插插件
|
||||||
interceptor.addInnerInterceptor(paginationInterceptor());
|
interceptor.addInnerInterceptor(paginationInterceptor());
|
||||||
|
|
||||||
|
// 使用数据权限插件
|
||||||
|
interceptor.addInnerInterceptor(dataPermissionInterceptor());
|
||||||
|
|
||||||
// 使用乐观锁插件
|
// 使用乐观锁插件
|
||||||
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
|
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
|
||||||
|
|
||||||
|
@ -153,4 +158,15 @@ public class ProjectMyBatisPlusAutoConfiguration {
|
||||||
return new TenantLineInnerInterceptor(new ProjectTenantInterceptor(tenantTableProperties));
|
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