feat: 新增统一数据空间与联邦查询能力
- 提供数据连接、元数据、逻辑表与关联编排能力 - 接入联邦查询、执行分析、统计估算和 SQL 补全接口 - 增加查询预算、凭据保护、租户隔离和 V61 初始化迁移
This commit is contained in:
@@ -4,8 +4,16 @@ import com.mybatisflex.core.FlexGlobalConfig;
|
||||
import com.mybatisflex.core.audit.AuditManager;
|
||||
import com.mybatisflex.core.audit.ConsoleMessageCollector;
|
||||
import com.mybatisflex.core.audit.MessageCollector;
|
||||
import com.mybatisflex.core.tenant.TenantManager;
|
||||
import com.mybatisflex.spring.boot.MyBatisFlexCustomizer;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.exception.NotWebContextException;
|
||||
import cn.dev33.satoken.exception.SaTokenContextException;
|
||||
import cn.dev33.satoken.context.SaHolder;
|
||||
import java.math.BigInteger;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import tech.easyflow.common.entity.LoginAccount;
|
||||
import tech.easyflow.common.satoken.util.SaTokenUtil;
|
||||
|
||||
@Configuration
|
||||
public class MybatisConfig implements MyBatisFlexCustomizer {
|
||||
@@ -20,6 +28,9 @@ public class MybatisConfig implements MyBatisFlexCustomizer {
|
||||
flexGlobalConfig.setNormalValueOfLogicDelete(0);
|
||||
flexGlobalConfig.setDeletedValueOfLogicDelete(1);
|
||||
|
||||
// 登录请求自动追加 tenant_id 条件;系统任务没有登录上下文时保持显式全局语义。
|
||||
TenantManager.setTenantFactory(this::currentTenantIds);
|
||||
|
||||
//取消控制台的 Banner 打印
|
||||
flexGlobalConfig.setPrintBanner(false);
|
||||
|
||||
@@ -27,4 +38,24 @@ public class MybatisConfig implements MyBatisFlexCustomizer {
|
||||
MessageCollector collector = new ConsoleMessageCollector();
|
||||
AuditManager.setMessageCollector(collector);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回当前请求的租户条件;启动与调度线程没有 Sa-Token 上下文时保留系统级查询语义。
|
||||
*
|
||||
* @return 当前租户 ID 数组;没有请求登录上下文时返回 {@code null}
|
||||
*/
|
||||
private Object[] currentTenantIds() {
|
||||
try {
|
||||
if (!SaHolder.getContext().isValid() || !StpUtil.isLogin()) {
|
||||
return null;
|
||||
}
|
||||
LoginAccount account = SaTokenUtil.getLoginAccount();
|
||||
BigInteger tenantId = account == null || account.getTenantId() == null
|
||||
? BigInteger.ZERO : account.getTenantId();
|
||||
return new Object[]{tenantId};
|
||||
} catch (NotWebContextException | SaTokenContextException ignored) {
|
||||
// Bean 初始化与调度线程没有 Web 上下文,必须允许显式系统任务读取全局状态。
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user