Files
mokeegateway/sql/qa_ddl.sql
2026-07-15 16:13:27 +08:00

227 lines
10 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.
-- ============================================
-- QA 数据库 DDL (UUID 版本, 12张表)
-- 所有主键和外键均为 VARCHAR(64)
-- ============================================
USE mokeegatewayqa;
CREATE TABLE IF NOT EXISTS sys_system (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_code VARCHAR(64) NOT NULL,
system_name VARCHAR(128) NOT NULL,
front_url VARCHAR(256) NOT NULL,
backend_url VARCHAR(256) NOT NULL,
gateway_url VARCHAR(256) NOT NULL,
icon VARCHAR(512) DEFAULT NULL,
sort_order INT DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
description VARCHAR(512) DEFAULT NULL,
doc_token VARCHAR(128) DEFAULT NULL,
created_by VARCHAR(64) DEFAULT NULL,
updated_by VARCHAR(64) DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_deleted TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (id),
-- uk_system_code/uk_gateway_url 唯一性由应用层代码校验
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='业务系统表';
CREATE TABLE IF NOT EXISTS sys_api (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_id VARCHAR(64) NOT NULL,
api_path VARCHAR(256) NOT NULL,
api_method VARCHAR(10) NOT NULL,
api_name VARCHAR(128) DEFAULT NULL,
api_desc VARCHAR(512) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_system_id (system_id),
UNIQUE KEY uk_system_path_method (system_id, api_path, api_method)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统放行接口表';
CREATE TABLE IF NOT EXISTS sys_user (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
username VARCHAR(64) NOT NULL,
password VARCHAR(256) NOT NULL,
real_name VARCHAR(64) DEFAULT NULL,
email VARCHAR(128) DEFAULT NULL,
phone VARCHAR(32) DEFAULT NULL,
avatar VARCHAR(512) DEFAULT NULL,
post VARCHAR(64) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1 COMMENT '0-禁用 1-正常 2-锁定',
lock_until DATETIME DEFAULT NULL,
login_fail_count INT NOT NULL DEFAULT 0,
last_login_ip VARCHAR(64) DEFAULT NULL,
last_login_time DATETIME DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_deleted TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (id),
-- 用户名/邮箱唯一性由应用层代码校验MyBatis-Plus @TableLogic 自动过滤已删除记录)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
CREATE TABLE IF NOT EXISTS sys_user_system (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
user_id VARCHAR(64) NOT NULL,
system_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_user_system (user_id, system_id),
KEY idx_system_id (system_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户系统绑定表';
CREATE TABLE IF NOT EXISTS sys_role (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_id VARCHAR(64) NOT NULL,
role_name VARCHAR(64) NOT NULL,
role_code VARCHAR(64) NOT NULL,
description VARCHAR(256) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1,
created_by VARCHAR(64) DEFAULT NULL,
updated_by VARCHAR(64) DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_deleted TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (id),
-- uk_system_role_code 唯一性由应用层代码校验
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
CREATE TABLE IF NOT EXISTS sys_user_role (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
user_id VARCHAR(64) NOT NULL,
role_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_user_role (user_id, role_id),
KEY idx_role_id (role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色表';
CREATE TABLE IF NOT EXISTS sys_menu (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_id VARCHAR(64) NOT NULL,
parent_id VARCHAR(64) NOT NULL DEFAULT '0',
menu_name VARCHAR(64) NOT NULL,
menu_path VARCHAR(256) DEFAULT NULL,
component VARCHAR(256) DEFAULT NULL,
icon VARCHAR(128) DEFAULT NULL,
menu_type TINYINT NOT NULL COMMENT '1-目录 2-菜单 3-按钮',
permission VARCHAR(128) DEFAULT NULL COMMENT '权限标识',
sort_order INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_system_id (system_id),
KEY idx_parent_id (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表';
CREATE TABLE IF NOT EXISTS sys_role_menu (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
role_id VARCHAR(64) NOT NULL,
menu_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_role_menu (role_id, menu_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色菜单表';
CREATE TABLE IF NOT EXISTS sys_login_log (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
user_id VARCHAR(64) DEFAULT NULL,
username VARCHAR(64) NOT NULL,
real_name VARCHAR(64) DEFAULT NULL COMMENT '用户真实姓名',
system_id VARCHAR(64) DEFAULT NULL,
login_ip VARCHAR(64) DEFAULT NULL,
user_agent VARCHAR(512) DEFAULT NULL,
browser VARCHAR(64) DEFAULT NULL,
os VARCHAR(64) DEFAULT NULL,
status TINYINT NOT NULL COMMENT '0-失败 1-成功',
fail_reason VARCHAR(256) DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_user_id (user_id),
KEY idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登录日志表';
CREATE TABLE IF NOT EXISTS sys_operation_log (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
user_id VARCHAR(64) DEFAULT NULL,
username VARCHAR(64) DEFAULT NULL,
system_id VARCHAR(64) DEFAULT NULL,
module VARCHAR(64) DEFAULT NULL,
action VARCHAR(32) DEFAULT NULL,
request_url VARCHAR(256) DEFAULT NULL,
request_method VARCHAR(10) DEFAULT NULL,
request_body TEXT DEFAULT NULL,
response_status INT DEFAULT NULL,
response_body TEXT DEFAULT NULL COMMENT '接口返回报文截断至2000字符',
error_msg TEXT DEFAULT NULL,
cost_time INT DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_user_id (user_id),
KEY idx_created_at (created_at),
KEY idx_system_id (system_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
CREATE TABLE IF NOT EXISTS sys_dict (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
dict_type VARCHAR(64) NOT NULL,
dict_label VARCHAR(128) NOT NULL,
dict_value VARCHAR(128) NOT NULL,
sort_order INT DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_type_value (dict_type, dict_value)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典表';
CREATE TABLE IF NOT EXISTS sys_file (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_id VARCHAR(64) DEFAULT NULL COMMENT '所属系统ID',
file_name VARCHAR(256) NOT NULL COMMENT '原始文件名',
file_type VARCHAR(64) DEFAULT 'other' COMMENT '文件类型(icon/avatar/doc/other)',
file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)',
mime_type VARCHAR(128) DEFAULT NULL COMMENT 'MIME类型',
md5 VARCHAR(64) DEFAULT NULL COMMENT '文件MD5摘要',
upload_user_id VARCHAR(64) DEFAULT NULL COMMENT '上传用户ID',
file_data LONGBLOB COMMENT '文件二进制数据',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
PRIMARY KEY (id),
INDEX idx_system_id (system_id),
INDEX idx_file_type (file_type),
INDEX idx_upload_user_id (upload_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';
CREATE TABLE IF NOT EXISTS sys_email_log (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
to_address VARCHAR(256) NOT NULL COMMENT '收件人',
subject VARCHAR(512) NOT NULL COMMENT '主题',
content TEXT COMMENT '邮件内容',
content_type VARCHAR(16) NOT NULL DEFAULT 'html' COMMENT '格式 html/text',
status TINYINT NOT NULL DEFAULT 0 COMMENT '0-失败 1-成功',
error_msg VARCHAR(1024) DEFAULT NULL COMMENT '错误信息',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
PRIMARY KEY (id),
KEY idx_created_at (created_at),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邮件发送记录表';
CREATE TABLE IF NOT EXISTS sys_open_token_log (
id VARCHAR(64) NOT NULL COMMENT 'UUID主键',
system_id VARCHAR(64) DEFAULT NULL COMMENT '系统ID',
system_code VARCHAR(64) NOT NULL COMMENT '系统编码',
token_id VARCHAR(64) NOT NULL COMMENT 'Token唯一ID',
token_preview VARCHAR(64) DEFAULT NULL COMMENT 'Token预览',
acquired_at DATETIME DEFAULT NULL COMMENT '获取时间',
consumed TINYINT NOT NULL DEFAULT 0 COMMENT '0-未消费 1-已消费',
consumed_at DATETIME DEFAULT NULL COMMENT '消费时间',
consume_api VARCHAR(256) DEFAULT NULL COMMENT '消费接口',
consume_ip VARCHAR(64) DEFAULT NULL COMMENT '消费IP',
PRIMARY KEY (id),
KEY idx_token_id (token_id),
KEY idx_system_code (system_code),
KEY idx_acquired_at (acquired_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='开放API Token日志表';