@@ -0,0 +1,138 @@
-- M003 登录权限底座:本系统用户账号表,密码只保存单向哈希。
CREATE TABLE platform_user (
id BIGINT NOT NULL COMMENT ' 用户内部 ID ' ,
username VARCHAR ( 128 ) NOT NULL COMMENT ' 登录用户名,全局唯一 ' ,
password_hash VARCHAR ( 128 ) NOT NULL COMMENT ' 密码单向哈希,禁止保存明文密码 ' ,
display_name VARCHAR ( 128 ) NOT NULL COMMENT ' 用户展示名称 ' ,
email VARCHAR ( 256 ) NULL COMMENT ' 用户邮箱,第一版可为空 ' ,
phone VARCHAR ( 64 ) NULL COMMENT ' 用户手机号,第一版可为空 ' ,
user_status VARCHAR ( 32 ) NOT NULL COMMENT ' 用户状态: ACTIVE、DISABLED ' ,
super_admin TINYINT ( 1 ) NOT NULL DEFAULT 0 COMMENT ' 是否超级管理员,超级管理员默认可访问全部启用酒店 ' ,
password_changed_at DATETIME ( 6 ) NULL COMMENT ' 最近密码变更 UTC 时间 ' ,
last_login_at DATETIME ( 6 ) NULL COMMENT ' 最近登录 UTC 时间 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_user_username ( username ) ,
KEY idx_platform_user_status ( user_status )
) COMMENT = ' 平台用户账号表,保存本系统登录用户基础信息 ' ;
-- M003 登录权限底座:数据库 session 表,只保存 token_hash。
CREATE TABLE platform_user_session (
id BIGINT NOT NULL COMMENT ' 用户 session 内部 ID ' ,
user_id BIGINT NOT NULL COMMENT ' 所属用户 ID ' ,
token_hash CHAR ( 64 ) NOT NULL COMMENT ' access token 的 SHA-256 哈希,数据库不保存明文 token ' ,
session_status VARCHAR ( 32 ) NOT NULL COMMENT ' session 状态: ACTIVE、REVOKED、EXPIRED ' ,
issued_at DATETIME ( 6 ) NOT NULL COMMENT ' token 签发 UTC 时间 ' ,
expires_at DATETIME ( 6 ) NOT NULL COMMENT ' token 过期 UTC 时间 ' ,
revoked_at DATETIME ( 6 ) NULL COMMENT ' 注销或撤销 UTC 时间 ' ,
last_seen_at DATETIME ( 6 ) NULL COMMENT ' 最近使用 UTC 时间 ' ,
client_ip VARCHAR ( 64 ) NULL COMMENT ' 登录或最近请求 IP, 第一版可为空 ' ,
user_agent_summary VARCHAR ( 256 ) NULL COMMENT ' User-Agent 摘要,第一版可为空 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_user_session_token_hash ( token_hash ) ,
KEY idx_platform_user_session_user_status ( user_id , session_status ) ,
KEY idx_platform_user_session_expires_at ( expires_at )
) COMMENT = ' 平台用户登录 session 表,用于数据库 session token 登录态 ' ;
-- M003 登录权限底座:角色表。
CREATE TABLE platform_role (
id BIGINT NOT NULL COMMENT ' 角色内部 ID ' ,
role_code VARCHAR ( 128 ) NOT NULL COMMENT ' 稳定角色代码,例如 SYSTEM_ADMIN ' ,
role_name VARCHAR ( 128 ) NOT NULL COMMENT ' 角色展示名称 ' ,
role_status VARCHAR ( 32 ) NOT NULL COMMENT ' 角色状态: ACTIVE、DISABLED ' ,
system_builtin TINYINT ( 1 ) NOT NULL DEFAULT 0 COMMENT ' 是否系统内置角色 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_role_code ( role_code ) ,
KEY idx_platform_role_status ( role_status )
) COMMENT = ' 平台角色表,保存本系统稳定角色定义 ' ;
-- M003 登录权限底座:权限码表。
CREATE TABLE platform_permission (
id BIGINT NOT NULL COMMENT ' 权限内部 ID ' ,
permission_code VARCHAR ( 128 ) NOT NULL COMMENT ' 稳定权限代码,业务判断只能使用该字段 ' ,
permission_name VARCHAR ( 128 ) NOT NULL COMMENT ' 权限展示名称 ' ,
permission_group VARCHAR ( 64 ) NOT NULL COMMENT ' 权限分组,例如 RESERVATION、SOURCE_MESSAGE、SYSTEM ' ,
permission_status VARCHAR ( 32 ) NOT NULL COMMENT ' 权限状态: ACTIVE、DISABLED ' ,
system_builtin TINYINT ( 1 ) NOT NULL DEFAULT 0 COMMENT ' 是否系统内置权限 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_permission_code ( permission_code ) ,
KEY idx_platform_permission_group ( permission_group , permission_status )
) COMMENT = ' 平台权限码表,保存后端和前端共同使用的稳定权限代码 ' ;
-- M003 登录权限底座:用户角色关系。
CREATE TABLE platform_user_role (
id BIGINT NOT NULL COMMENT ' 用户角色关系 ID ' ,
user_id BIGINT NOT NULL COMMENT ' 用户 ID ' ,
role_id BIGINT NOT NULL COMMENT ' 角色 ID ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_user_role_user_role ( user_id , role_id ) ,
KEY idx_platform_user_role_role ( role_id )
) COMMENT = ' 平台用户角色关系表 ' ;
-- M003 登录权限底座:角色权限关系。
CREATE TABLE platform_role_permission (
id BIGINT NOT NULL COMMENT ' 角色权限关系 ID ' ,
role_id BIGINT NOT NULL COMMENT ' 角色 ID ' ,
permission_id BIGINT NOT NULL COMMENT ' 权限 ID ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_role_permission_role_perm ( role_id , permission_id ) ,
KEY idx_platform_role_permission_perm ( permission_id )
) COMMENT = ' 平台角色权限关系表 ' ;
-- M003 登录权限底座:酒店基础信息。
CREATE TABLE platform_hotel (
id BIGINT NOT NULL COMMENT ' 酒店内部 ID ' ,
hotel_id VARCHAR ( 64 ) NOT NULL COMMENT ' 业务酒店 ID, 例如 HOTEL-TEST ' ,
hotel_name VARCHAR ( 128 ) NOT NULL COMMENT ' 酒店展示名称 ' ,
hotel_status VARCHAR ( 32 ) NOT NULL COMMENT ' 酒店状态: ACTIVE、DISABLED ' ,
time_zone VARCHAR ( 64 ) NOT NULL COMMENT ' 酒店本地时区,例如 Asia/Bangkok ' ,
sort_order INT NOT NULL DEFAULT 0 COMMENT ' 菜单或选择器排序号 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_hotel_business_id ( hotel_id ) ,
KEY idx_platform_hotel_status_sort ( hotel_status , sort_order )
) COMMENT = ' 平台酒店基础信息表,用于登录态和业务酒店上下文授权 ' ;
-- M003 登录权限底座:普通用户酒店授权关系。
CREATE TABLE platform_user_hotel (
id BIGINT NOT NULL COMMENT ' 用户酒店授权关系 ID ' ,
user_id BIGINT NOT NULL COMMENT ' 用户 ID ' ,
hotel_id VARCHAR ( 64 ) NOT NULL COMMENT ' 酒店业务 ID ' ,
default_hotel TINYINT ( 1 ) NOT NULL DEFAULT 0 COMMENT ' 是否该用户默认酒店 ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_user_hotel_user_hotel ( user_id , hotel_id ) ,
KEY idx_platform_user_hotel_default ( user_id , default_hotel )
) COMMENT = ' 平台用户酒店授权关系表,普通用户只可访问授权酒店 ' ;
-- M003 登录权限底座:菜单定义表。
CREATE TABLE platform_menu (
id BIGINT NOT NULL COMMENT ' 菜单内部 ID ' ,
parent_id BIGINT NULL COMMENT ' 父菜单 ID, 根菜单为空 ' ,
menu_code VARCHAR ( 128 ) NOT NULL COMMENT ' 稳定菜单代码 ' ,
menu_name VARCHAR ( 128 ) NOT NULL COMMENT ' 菜单展示名称 ' ,
menu_type VARCHAR ( 32 ) NOT NULL COMMENT ' 菜单类型: GROUP、PAGE、ACTION ' ,
route_path VARCHAR ( 256 ) NULL COMMENT ' 前端路由路径 ' ,
component_key VARCHAR ( 128 ) NULL COMMENT ' 前端组件标识,第一版可为空 ' ,
icon_key VARCHAR ( 128 ) NULL COMMENT ' 前端图标标识,第一版兼容 PrimeIcons class ' ,
permission_code VARCHAR ( 128 ) NULL COMMENT ' 访问该菜单需要的权限码,可为空 ' ,
sort_order INT NOT NULL DEFAULT 0 COMMENT ' 菜单排序号 ' ,
visible TINYINT ( 1 ) NOT NULL DEFAULT 1 COMMENT ' 是否作为菜单入口可见 ' ,
menu_status VARCHAR ( 32 ) NOT NULL COMMENT ' 菜单状态: ACTIVE、DISABLED ' ,
created_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录创建 UTC 时间 ' ,
updated_at DATETIME ( 6 ) NOT NULL COMMENT ' 记录更新 UTC 时间 ' ,
PRIMARY KEY ( id ) ,
UNIQUE KEY uk_platform_menu_code ( menu_code ) ,
KEY idx_platform_menu_parent_sort ( parent_id , sort_order ) ,
KEY idx_platform_menu_visible_status ( visible , menu_status )
) COMMENT = ' 平台菜单定义表,决定当前用户可见导航入口 ' ;