【8.1.1】【db】更新数据范围

pull/60/head
fengshuonan 2024-02-28 23:40:10 +08:00
parent a8d771a61f
commit 0ed0a01e77
2 changed files with 59 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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());
}
} }