315 lines
10 KiB
SQL
315 lines
10 KiB
SQL
-- -----------------------------------------------------------------------------
|
||
-- TMS 最终库结构初始化脚本
|
||
-- 适用范围:新库初始化
|
||
-- 数据库:TiDB / MySQL 8+
|
||
--
|
||
-- 说明:
|
||
-- 1. 本文件按当前项目最终表结构整理,适合“空库初始化”。
|
||
-- 2. 不再按 V1-V11 逐步执行 ALTER / RENAME,避免初始化时出现兼容性问题。
|
||
-- 3. 若用于已有库升级,请继续使用 Flyway migration,而不是本文件。
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE DATABASE IF NOT EXISTS tms
|
||
DEFAULT CHARACTER SET utf8mb4
|
||
COLLATE utf8mb4_general_ci;
|
||
|
||
USE tms;
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 初始化任务
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_init_task (
|
||
id BIGINT PRIMARY KEY,
|
||
task_id VARCHAR(64) NOT NULL,
|
||
task_type VARCHAR(32) NOT NULL DEFAULT 'INIT' COMMENT '任务类型:INIT/RESET',
|
||
version VARCHAR(32) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
product_type VARCHAR(16) NULL,
|
||
org_code VARCHAR(32) NULL,
|
||
mq_type VARCHAR(32) NULL,
|
||
deploy_mode VARCHAR(16) NULL,
|
||
init_plan_json LONGTEXT NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_init_task_task_id (task_id)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_init_task_step (
|
||
id BIGINT PRIMARY KEY,
|
||
task_id VARCHAR(64) NOT NULL,
|
||
step_no INT NOT NULL,
|
||
step_code VARCHAR(64) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
message VARCHAR(512) NULL,
|
||
command_line VARCHAR(2048) NULL,
|
||
log_path VARCHAR(512) NULL,
|
||
exit_code INT NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_init_task_step_task_no (task_id, step_no),
|
||
KEY idx_tms_init_task_step_task_id (task_id)
|
||
);
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 认证与设备基础表
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_auth_user (
|
||
id BIGINT PRIMARY KEY,
|
||
username VARCHAR(64) NOT NULL,
|
||
display_name VARCHAR(128) NOT NULL,
|
||
role VARCHAR(64) NOT NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_auth_user_username (username)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_device_node (
|
||
id BIGINT PRIMARY KEY,
|
||
node_id VARCHAR(64) NOT NULL,
|
||
host VARCHAR(128) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_device_node_node_id (node_id)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_file_record (
|
||
id BIGINT PRIMARY KEY,
|
||
file_id VARCHAR(64) NOT NULL,
|
||
original_filename VARCHAR(255) NOT NULL,
|
||
storage_path VARCHAR(1024) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_file_record_file_id (file_id)
|
||
);
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 设备软件版本
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_device_software_version (
|
||
id BIGINT PRIMARY KEY,
|
||
component_code VARCHAR(64) NOT NULL,
|
||
component_name VARCHAR(128) NOT NULL,
|
||
current_version VARCHAR(128) NOT NULL,
|
||
source_type VARCHAR(32) NOT NULL,
|
||
detected_at DATETIME NULL,
|
||
remarks VARCHAR(255) NULL,
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
UNIQUE KEY uk_tms_device_software_version_component_code (component_code)
|
||
);
|
||
|
||
INSERT INTO tms_device_software_version
|
||
(id, component_code, component_name, current_version, source_type, detected_at, remarks)
|
||
VALUES
|
||
(1001, 'RABBITMQ', '消息队列', 'RabbitMQ V3.8.21', 'MANUAL', NOW(), '出厂预置'),
|
||
(1002, 'TLQ', '消息队列', 'tonglink/Q V8.1.11', 'MANUAL', NOW(), '出厂预置'),
|
||
(1003, 'TIDB', '数据库', 'TiDB V8.1.0', 'MANUAL', NOW(), '出厂预置'),
|
||
(1004, 'NGINX', 'Nginx', 'Nginx V1.20', 'MANUAL', NOW(), '出厂预置'),
|
||
(1005, 'APP', '标准收发器企业版', '标准收发器企业版 V1.3.2', 'MANUAL', NOW(), '出厂预置'),
|
||
(1006, 'TMS', 'CISD终端管理服务', 'CISD终端管理服务 V1.0.0', 'MANUAL', NOW(), '出厂预置')
|
||
ON DUPLICATE KEY UPDATE
|
||
component_name = VALUES(component_name),
|
||
current_version = VALUES(current_version),
|
||
source_type = VALUES(source_type),
|
||
detected_at = VALUES(detected_at),
|
||
remarks = VALUES(remarks),
|
||
update_time = CURRENT_TIMESTAMP;
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 升级任务
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE TABLE IF NOT EXISTS t_upgrade_task (
|
||
id BIGINT PRIMARY KEY,
|
||
task_id VARCHAR(64) NOT NULL,
|
||
upgrade_mode VARCHAR(16) NOT NULL,
|
||
target_component VARCHAR(32) NOT NULL,
|
||
package_file_id VARCHAR(64) NOT NULL,
|
||
package_name VARCHAR(255) NOT NULL,
|
||
package_hash VARCHAR(128) NOT NULL,
|
||
current_version VARCHAR(64) NOT NULL,
|
||
target_version VARCHAR(64) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
verify_passed TINYINT(1) NOT NULL DEFAULT 0,
|
||
verify_message VARCHAR(1024) NULL,
|
||
manifest_json TEXT NULL,
|
||
detail_log_path VARCHAR(1024) NULL,
|
||
error_message VARCHAR(1024) NULL,
|
||
operator VARCHAR(64) NULL,
|
||
started_at DATETIME(3) NULL,
|
||
finished_at DATETIME(3) NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_t_upgrade_task_task_id (task_id),
|
||
KEY idx_t_upgrade_task_status (status),
|
||
KEY idx_t_upgrade_task_component (target_component),
|
||
KEY idx_t_upgrade_task_create_time (create_time)
|
||
);
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 新认证体系
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_role_account (
|
||
id BIGINT PRIMARY KEY,
|
||
role_code VARCHAR(64) NOT NULL,
|
||
display_name VARCHAR(128) NOT NULL,
|
||
required_ukey_count INT NOT NULL,
|
||
password_hash VARCHAR(256) NOT NULL,
|
||
password_salt VARCHAR(128) NOT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
need_change_password TINYINT(1) NOT NULL DEFAULT 1,
|
||
failed_count INT NOT NULL DEFAULT 0,
|
||
locked_until DATETIME(3) NULL,
|
||
last_login_at DATETIME(3) NULL,
|
||
last_active_at DATETIME(3) NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_role_account_role_code (role_code)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_role_ukey_binding (
|
||
id BIGINT PRIMARY KEY,
|
||
role_code VARCHAR(64) NOT NULL,
|
||
slot_no INT NOT NULL,
|
||
ukey_serial VARCHAR(128) NOT NULL,
|
||
ukey_pubkey TEXT NOT NULL,
|
||
issuer_sign TEXT NULL,
|
||
status VARCHAR(32) NOT NULL,
|
||
bound_at DATETIME(3) NOT NULL,
|
||
unbound_at DATETIME(3) NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_role_ukey_binding_role_slot (role_code, slot_no),
|
||
KEY idx_tms_role_ukey_binding_role_status (role_code, status)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_auth_session (
|
||
id BIGINT PRIMARY KEY,
|
||
session_token VARCHAR(128) NOT NULL,
|
||
role_code VARCHAR(64) NOT NULL,
|
||
auth_level VARCHAR(32) NOT NULL,
|
||
issued_at DATETIME(3) NOT NULL,
|
||
last_active_at DATETIME(3) NOT NULL,
|
||
expires_at DATETIME(3) NOT NULL,
|
||
logout_at DATETIME(3) NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_auth_session_token (session_token),
|
||
KEY idx_tms_auth_session_role_code (role_code)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_auth_challenge (
|
||
id BIGINT PRIMARY KEY,
|
||
challenge_id VARCHAR(128) NOT NULL,
|
||
role_code VARCHAR(64) NOT NULL,
|
||
purpose VARCHAR(32) NOT NULL,
|
||
nonce VARCHAR(256) NOT NULL,
|
||
expires_at DATETIME(3) NOT NULL,
|
||
used TINYINT(1) NOT NULL DEFAULT 0,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
UNIQUE KEY uk_tms_auth_challenge_challenge_id (challenge_id)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS tms_auth_audit_log (
|
||
id BIGINT PRIMARY KEY,
|
||
event_type VARCHAR(64) NOT NULL,
|
||
role_code VARCHAR(64) NULL,
|
||
operator_role_code VARCHAR(64) NULL,
|
||
result VARCHAR(32) NOT NULL,
|
||
detail_json JSON NULL,
|
||
remote_ip VARCHAR(64) NULL,
|
||
create_time DATETIME(3) NOT NULL,
|
||
update_time DATETIME(3) NOT NULL,
|
||
KEY idx_tms_auth_audit_log_event_type (event_type),
|
||
KEY idx_tms_auth_audit_log_role_code (role_code)
|
||
);
|
||
|
||
INSERT IGNORE INTO tms_role_account (
|
||
id,
|
||
role_code,
|
||
display_name,
|
||
required_ukey_count,
|
||
password_hash,
|
||
password_salt,
|
||
status,
|
||
need_change_password,
|
||
failed_count,
|
||
locked_until,
|
||
last_login_at,
|
||
last_active_at,
|
||
create_time,
|
||
update_time
|
||
)
|
||
VALUES
|
||
(
|
||
11001,
|
||
'SUPER_ADMIN',
|
||
'超级管理员',
|
||
3,
|
||
'Viuew8WE+qziUZwGGU0x25cUpzsTF+QvQFU0uhb+yVA=',
|
||
'init-super-admin-salt-20260325',
|
||
'UNENABLED',
|
||
1,
|
||
0,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
CURRENT_TIMESTAMP(3),
|
||
CURRENT_TIMESTAMP(3)
|
||
),
|
||
(
|
||
11002,
|
||
'KEY_ADMIN',
|
||
'密钥管理员',
|
||
2,
|
||
'/xqmDy3A/q9X5p7XWznIPSBabQ6bxTLAPgtHQ6Be33c=',
|
||
'init-key-admin-salt-20260325',
|
||
'ACTIVE',
|
||
1,
|
||
0,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
CURRENT_TIMESTAMP(3),
|
||
CURRENT_TIMESTAMP(3)
|
||
),
|
||
(
|
||
11003,
|
||
'AUDIT_ADMIN',
|
||
'审计管理员',
|
||
1,
|
||
'j/J1LKyUOzVEJfbbHe2dwKBKNdabRk502olk/LWIwhg=',
|
||
'init-audit-admin-salt-20260325',
|
||
'UNENABLED',
|
||
1,
|
||
0,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
CURRENT_TIMESTAMP(3),
|
||
CURRENT_TIMESTAMP(3)
|
||
),
|
||
(
|
||
11004,
|
||
'OPS_ADMIN',
|
||
'运维管理员',
|
||
1,
|
||
'2e9F4aCgsDb+AuD1LrBEqEg8yjy3ODo27UHtx06vj/A=',
|
||
'init-ops-admin-salt-20260325',
|
||
'UNENABLED',
|
||
1,
|
||
0,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
CURRENT_TIMESTAMP(3),
|
||
CURRENT_TIMESTAMP(3)
|
||
);
|