43 lines
3.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
USE hyapp_user;
-- 管理员封禁与经理中心封禁保持独立事实,解封时在 user-service 内同时检查两种来源。
CREATE TABLE IF NOT EXISTS admin_user_bans (
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
ban_id VARCHAR(96) NOT NULL COMMENT '管理员封禁事实 ID',
command_id VARCHAR(128) NOT NULL COMMENT '后台请求幂等命令 ID',
target_user_id BIGINT NOT NULL COMMENT '被封禁用户 ID',
target_old_status VARCHAR(32) NOT NULL COMMENT '创建事实前的用户状态,仅供审计',
expires_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '到期时间UTC epoch ms0 表示永久',
status VARCHAR(32) NOT NULL COMMENT 'active/released/expired',
reason VARCHAR(255) NOT NULL DEFAULT '' COMMENT '封禁原因',
operator_admin_id BIGINT NOT NULL COMMENT '创建封禁的后台管理员 ID',
released_by_admin_id BIGINT NOT NULL DEFAULT 0 COMMENT '手动解封管理员 ID系统到期为 0',
released_reason VARCHAR(255) NOT NULL DEFAULT '' COMMENT '释放原因',
released_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '释放时间UTC epoch ms',
created_at_ms BIGINT NOT NULL COMMENT '创建时间UTC epoch ms',
updated_at_ms BIGINT NOT NULL COMMENT '更新时间UTC epoch ms',
PRIMARY KEY (app_code, ban_id),
UNIQUE KEY uk_admin_user_bans_command (app_code, command_id),
KEY idx_admin_user_bans_target (app_code, target_user_id, status, created_at_ms),
KEY idx_admin_user_bans_expire (app_code, status, expires_at_ms)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='后台管理员用户封禁事实表';
-- 解封命令必须独立保存幂等事实:后台在合并摘要只看到经理封禁时会按用户释放最新管理员封禁,
-- 若 HTTP/gRPC 超时后重试,不能继续释放下一条重叠的管理员封禁。
CREATE TABLE IF NOT EXISTS admin_user_ban_release_commands (
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
command_id VARCHAR(128) NOT NULL COMMENT '稳定解封命令 ID通常取 request_id',
target_user_id BIGINT NOT NULL COMMENT '目标用户 ID',
requested_ban_id VARCHAR(96) NOT NULL DEFAULT '' COMMENT '调用方指定 ban_id空表示选择最新 active 管理员封禁',
resolved_ban_id VARCHAR(96) NOT NULL DEFAULT '' COMMENT '本命令实际释放的 ban_id',
release_status VARCHAR(32) NOT NULL COMMENT 'released/expired',
operator_admin_id BIGINT NOT NULL DEFAULT 0 COMMENT '手动操作管理员 ID系统到期为 0',
reason VARCHAR(255) NOT NULL DEFAULT '' COMMENT '释放原因快照,用于校验幂等载荷',
created_at_ms BIGINT NOT NULL COMMENT '创建时间UTC epoch ms',
updated_at_ms BIGINT NOT NULL COMMENT '更新时间UTC epoch ms',
PRIMARY KEY (app_code, command_id),
KEY idx_admin_ban_release_resolved (app_code, resolved_ban_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='后台管理员解封命令幂等事实表';