← 返回文档中心

安全合规

多租户隔离

平台支持多租户(多运营主体)共用一套系统,租户之间在数据、API 和配置层面完全隔离。每个租户有独立的数据视图、API 额度和自定义配置。

数据模型

CREATE TABLE tenants (
    id          SERIAL PRIMARY KEY,
    name        VARCHAR(128) NOT NULL,
    domain      VARCHAR(128) UNIQUE,            -- 租户域名,如 hotel.example.com
    config      JSONB DEFAULT '{}',             -- 租户自定义配置
    status      VARCHAR(16) DEFAULT 'active',
    created_at  TIMESTAMPTZ DEFAULT NOW()
);

-- 所有业务表新增租户字段(示例)
ALTER TABLE hotels ADD COLUMN tenant_id BIGINT REFERENCES tenants(id);
ALTER TABLE agents ADD COLUMN tenant_id BIGINT REFERENCES tenants(id);
ALTER TABLE suppliers ADD COLUMN tenant_id BIGINT REFERENCES tenants(id);

接口设计

GET    /api/admin/tenants                     # 租户列表
POST   /api/admin/tenants                     # 创建租户
PUT    /api/admin/tenants/{id}                # 更新租户配置
DELETE /api/admin/tenants/{id}                # 停用租户

业务逻辑

所有 API 请求通过中间件从请求头 X-Tenant-Id 或子域名解析出租户 ID,在数据库查询层面自动注入 WHERE tenant_id = ? 条件(基于 GORM/MyBatis 拦截器实现)。租户的 API 额度、功能开关等存储在 config JSONB 字段中,启动时加载到内存缓存。