实现登录权限底座

This commit is contained in:
andy
2026-07-09 19:31:20 +08:00
parent a5a251a3f3
commit 666fb41328
77 changed files with 3946 additions and 19 deletions

View File

@@ -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='平台菜单定义表,决定当前用户可见导航入口';