a7f3ee3565
同步仓库名称变更,涉及 16 个文件 66 处引用: - ai-skills: 菜单配置 - backend/guides: AI操作手册、环境配置、部署、gitnexus、opencode 工作流 - backend: 模块创建规则、通信规范、协作工作流、实施规范 - frontend: 收银设计、管理后台实施计划 - standards: 数据库设计规范
27 KiB
27 KiB
通用平台框架 — 数据库表结构规划
基于当前项目分析和通用平台框架最佳实践,列出平台运行所需的全量表结构及归属服务。 注意:本规划仅做设计,不做任何代码实施。
一、表结构总览
| 服务归属 | 表数量 | 表名前缀 | 说明 |
|---|---|---|---|
| rui-service-system | 11 | sys_ |
系统基础服务(租户/菜单/角色/字典/配置/部门/岗位) |
| rui-service-user | 7 | uc_ |
用户中心服务(用户/详情/等级/角色/部门/岗位/权限) |
| rui-auth | 3 | auth_ |
认证中心(OAuth2客户端/登录日志/操作日志) |
| rui-gateway | 2 | gw_ |
网关服务(路由配置/限流规则) |
| 公共表 | 2 | — | 跨服务使用(文件/消息) |
| 合计 | 25 |
命名调整建议:当前
rui_xxx前缀过长,建议简化为服务简称前缀,如sys_、uc_、auth_、gw_,更简洁专业。
二、rui-service-system 系统基础服务(11张表)
2.1 租户管理
-- sys_tenant — 租户(原 rui_system_tenant 改进)
CREATE TABLE sys_tenant (
id BIGINT NOT NULL,
tenant_code VARCHAR(50) NOT NULL COMMENT '租户编码',
tenant_name VARCHAR(200) NOT NULL COMMENT '租户名称',
tenant_type TINYINT NOT NULL DEFAULT 1 COMMENT '类型 1:企业 2:个人 3:试用',
tenant_level TINYINT NOT NULL DEFAULT 1 COMMENT '等级 1:基础版 2:专业版 3:旗舰版',
logo_url VARCHAR(500) DEFAULT NULL COMMENT 'Logo',
contact_name VARCHAR(100) DEFAULT NULL,
contact_phone VARCHAR(20) DEFAULT NULL,
contact_email VARCHAR(100) DEFAULT NULL,
domains VARCHAR(500) DEFAULT NULL COMMENT '绑定域名(逗号分隔)',
max_user_count INT NOT NULL DEFAULT 100 COMMENT '最大用户数',
expire_time DATETIME DEFAULT NULL COMMENT '过期时间 NULL:永久',
super_admin_id BIGINT DEFAULT NULL COMMENT '超管用户ID',
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_code (tenant_code),
INDEX idx_status (status)
) COMMENT='租户';
-- sys_tenant_package — 租户套餐(新增)
CREATE TABLE sys_tenant_package (
id BIGINT NOT NULL,
package_code VARCHAR(100) NOT NULL COMMENT '套餐编码',
package_name VARCHAR(200) NOT NULL COMMENT '套餐名称',
max_user_count INT NOT NULL DEFAULT 100,
max_dept_count INT NOT NULL DEFAULT 50,
max_menu_count INT NOT NULL DEFAULT 100,
price DECIMAL(19,4) NOT NULL DEFAULT 0 COMMENT '价格',
duration_days INT NOT NULL DEFAULT 365 COMMENT '时长(天)',
remark VARCHAR(500) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_package_code (package_code)
) COMMENT='租户套餐';
2.2 组织架构
-- sys_dept — 部门(新增)
CREATE TABLE sys_dept (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
parent_id BIGINT NOT NULL DEFAULT 0,
ancestors VARCHAR(500) DEFAULT '' COMMENT '祖级ID列表 如: 0,1,5,',
dept_code VARCHAR(100) NOT NULL COMMENT '部门编码',
dept_name VARCHAR(100) NOT NULL COMMENT '部门名称',
leader_id BIGINT DEFAULT NULL COMMENT '负责人ID',
phone VARCHAR(20) DEFAULT NULL,
email VARCHAR(100) DEFAULT NULL,
sort_no INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_dept_code (tenant_id, dept_code),
INDEX idx_parent (parent_id),
INDEX idx_tenant (tenant_id)
) COMMENT='部门';
-- sys_post — 岗位(新增)
CREATE TABLE sys_post (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
post_code VARCHAR(100) NOT NULL COMMENT '岗位编码',
post_name VARCHAR(100) NOT NULL COMMENT '岗位名称',
sort_no INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_post_code (tenant_id, post_code),
INDEX idx_tenant (tenant_id)
) COMMENT='岗位';
2.3 菜单与权限
-- sys_menu — 菜单(原 rui_system_menu 改进)
CREATE TABLE sys_menu (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
parent_id BIGINT NOT NULL DEFAULT 0 COMMENT '父菜单ID 0:顶级',
ancestors VARCHAR(500) DEFAULT '' COMMENT '祖级ID列表',
menu_code VARCHAR(100) NOT NULL COMMENT '菜单编码(唯一标识)',
menu_name VARCHAR(100) NOT NULL COMMENT '菜单名称',
menu_type TINYINT NOT NULL DEFAULT 1 COMMENT '类型 1:目录 2:菜单 3:按钮',
icon VARCHAR(100) DEFAULT NULL COMMENT '图标',
path VARCHAR(200) DEFAULT NULL COMMENT '路由路径',
component VARCHAR(200) DEFAULT NULL COMMENT '组件路径',
permission VARCHAR(200) DEFAULT NULL COMMENT '权限标识 如: user:list',
is_external TINYINT NOT NULL DEFAULT 0 COMMENT '是否外链 0:否 1:是',
target VARCHAR(20) DEFAULT '_self' COMMENT '打开方式 _self/_blank',
keep_alive TINYINT NOT NULL DEFAULT 0 COMMENT '是否缓存 0:否 1:是',
visible TINYINT NOT NULL DEFAULT 1 COMMENT '是否显示 0:隐藏 1:显示',
status TINYINT NOT NULL DEFAULT 1,
sort_no INT NOT NULL DEFAULT 0,
remark VARCHAR(500) DEFAULT NULL,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_menu_code (tenant_id, menu_code),
INDEX idx_parent (parent_id),
INDEX idx_ancestors (ancestors(100)),
INDEX idx_tenant (tenant_id)
) COMMENT='菜单';
2.4 角色管理
-- sys_role — 角色(原 rui_system_role 改进)
CREATE TABLE sys_role (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
parent_id BIGINT NOT NULL DEFAULT 0,
ancestors VARCHAR(500) DEFAULT '' COMMENT '祖级ID列表',
role_code VARCHAR(100) NOT NULL COMMENT '角色编码',
role_name VARCHAR(100) NOT NULL COMMENT '角色名称',
role_type TINYINT NOT NULL DEFAULT 1 COMMENT '类型 1:系统角色 2:租户角色 3:自定义',
data_scope TINYINT NOT NULL DEFAULT 1 COMMENT '数据范围 1:全部 2:本部门 3:本部门及子部门 4:仅本人 5:自定义',
description VARCHAR(500) DEFAULT NULL,
sort_no INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_role_code (tenant_id, role_code),
INDEX idx_parent (parent_id),
INDEX idx_tenant (tenant_id)
) COMMENT='角色';
-- sys_role_menu — 角色菜单关联(原 rui_system_role_menu 改进)
CREATE TABLE sys_role_menu (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
role_id BIGINT NOT NULL,
menu_id BIGINT NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_role_menu (tenant_id, role_id, menu_id),
INDEX idx_role (role_id),
INDEX idx_menu (menu_id),
INDEX idx_tenant (tenant_id)
) COMMENT='角色菜单关联';
2.5 数据字典
-- sys_dict_type — 字典类型(新增,拆分原字典表)
CREATE TABLE sys_dict_type (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
dict_code VARCHAR(100) NOT NULL COMMENT '字典编码(唯一标识)',
dict_name VARCHAR(200) NOT NULL COMMENT '字典名称',
description VARCHAR(500) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_dict_code (tenant_id, dict_code),
INDEX idx_tenant (tenant_id)
) COMMENT='字典类型';
-- sys_dict_item — 字典项(新增,拆分原字典表)
CREATE TABLE sys_dict_item (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
dict_type_id BIGINT NOT NULL COMMENT '字典类型ID',
item_code VARCHAR(100) NOT NULL COMMENT '项编码',
item_label VARCHAR(200) NOT NULL COMMENT '项标签',
item_value VARCHAR(200) NOT NULL COMMENT '项值',
sort_no INT NOT NULL DEFAULT 0,
remark VARCHAR(500) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_dict_type_code (tenant_id, dict_type_id, item_code),
INDEX idx_dict_type (dict_type_id),
INDEX idx_tenant (tenant_id)
) COMMENT='字典项';
2.6 系统配置
-- sys_config — 系统配置(原 rui_system_config 改进)
CREATE TABLE sys_config (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
config_group VARCHAR(100) NOT NULL DEFAULT 'default' COMMENT '配置分组(oss/sms/email)',
config_key VARCHAR(200) NOT NULL COMMENT '配置键',
config_value VARCHAR(2000) NOT NULL COMMENT '配置值',
config_type VARCHAR(20) NOT NULL DEFAULT 'STRING' COMMENT '值类型 STRING/JSON/NUMBER/BOOLEAN/ENCRYPTED',
is_system TINYINT NOT NULL DEFAULT 0 COMMENT '是否系统级 0:租户 1:系统',
is_encrypted TINYINT NOT NULL DEFAULT 0 COMMENT '是否加密 0:明文 1:密文',
description VARCHAR(500) DEFAULT NULL,
sort_no INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_config_key (tenant_id, config_key),
INDEX idx_group (config_group),
INDEX idx_tenant (tenant_id)
) COMMENT='系统配置';
三、rui-service-user 用户中心服务(7张表)
3.1 用户主体
-- uc_user — 用户主表(原 rui_user_credential + rui_user_info 合并改进)
CREATE TABLE uc_user (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
username VARCHAR(100) NOT NULL COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码(BCrypt加密)',
user_type TINYINT NOT NULL DEFAULT 1 COMMENT '用户类型 1:普通用户 2:管理员 3:系统用户',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_username (tenant_id, username),
INDEX idx_tenant (tenant_id)
) COMMENT='用户';
-- uc_user_detail — 用户详情表(原 rui_user_info 拆分)
CREATE TABLE uc_user_detail (
id BIGINT NOT NULL,
user_id BIGINT NOT NULL COMMENT '用户ID',
tenant_id BIGINT NOT NULL DEFAULT 0,
nickname VARCHAR(100) DEFAULT NULL COMMENT '昵称',
real_name VARCHAR(100) DEFAULT NULL COMMENT '真实姓名',
email VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',
avatar VARCHAR(1000) DEFAULT NULL COMMENT '头像URL',
gender TINYINT DEFAULT 0 COMMENT '性别 0:未知 1:男 2:女',
birthday DATE DEFAULT NULL,
id_card VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
address VARCHAR(500) DEFAULT NULL COMMENT '地址',
extra JSON DEFAULT NULL COMMENT '扩展字段(JSON格式)',
remark VARCHAR(500) DEFAULT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_id (user_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户详情';
3.2 用户等级
-- uc_user_level — 用户等级定义(原 rui_user_level 改进)
CREATE TABLE uc_user_level (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
level_code VARCHAR(100) NOT NULL COMMENT '等级编码',
level_name VARCHAR(100) NOT NULL COMMENT '等级名称',
level_no INT NOT NULL DEFAULT 1 COMMENT '等级序号(数字越大等级越高)',
min_score INT NOT NULL DEFAULT 0 COMMENT '最低积分要求',
icon VARCHAR(500) DEFAULT NULL COMMENT '等级图标',
benefits JSON DEFAULT NULL COMMENT '权益配置(JSON)',
upgrade_type TINYINT NOT NULL DEFAULT 1 COMMENT '升级方式 1:自动 2:手动审核',
expire_days INT DEFAULT 0 COMMENT '有效期(天) 0:永久',
status TINYINT NOT NULL DEFAULT 1,
sort_no INT NOT NULL DEFAULT 0,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_level_code (tenant_id, level_code),
INDEX idx_tenant (tenant_id)
) COMMENT='用户等级';
-- uc_user_level_log — 用户等级变更记录(原 rui_user_level_log 改进)
CREATE TABLE uc_user_level_log (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL COMMENT '用户ID',
change_type TINYINT NOT NULL DEFAULT 1 COMMENT '变更类型 1:升级 2:降级 3:手动调整 4:过期',
from_level_id BIGINT DEFAULT NULL COMMENT '原等级ID NULL:初始',
to_level_id BIGINT NOT NULL COMMENT '新等级ID',
score_before INT DEFAULT NULL COMMENT '变更前积分',
score_after INT DEFAULT NULL COMMENT '变更后积分',
reason VARCHAR(500) DEFAULT NULL COMMENT '变更原因',
operator_id BIGINT DEFAULT NULL COMMENT '操作人ID',
operator_type TINYINT NOT NULL DEFAULT 1 COMMENT '操作人类型 1:系统 2:管理员 3:用户',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_user (user_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户等级变更记录';
3.3 用户关联
-- uc_user_role — 用户角色关联(原 rui_user_role 改进)
CREATE TABLE uc_user_role (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL,
role_id BIGINT NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_role (tenant_id, user_id, role_id),
INDEX idx_user (user_id),
INDEX idx_role (role_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户角色关联';
-- uc_user_dept — 用户部门关联(新增)
CREATE TABLE uc_user_dept (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL,
dept_id BIGINT NOT NULL,
is_main TINYINT NOT NULL DEFAULT 1 COMMENT '是否主部门 0:否 1:是',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_dept (tenant_id, user_id, dept_id),
INDEX idx_user (user_id),
INDEX idx_dept (dept_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户部门关联';
-- uc_user_post — 用户岗位关联(新增)
CREATE TABLE uc_user_post (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL,
post_id BIGINT NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_post (tenant_id, user_id, post_id),
INDEX idx_user (user_id),
INDEX idx_post (post_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户岗位关联';
-- uc_user_permission — 用户权限关联(新增,支持直接授权)
CREATE TABLE uc_user_permission (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL,
permission VARCHAR(200) NOT NULL COMMENT '权限标识 如: user:list',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_permission (tenant_id, user_id, permission),
INDEX idx_user (user_id),
INDEX idx_tenant (tenant_id)
) COMMENT='用户权限关联(直接授权)';
四、rui-auth 认证中心(3张表)
4.1 OAuth2 客户端
-- auth_oauth2_client — OAuth2客户端(原 rui_system_oauth2_client 改进)
CREATE TABLE auth_oauth2_client (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
client_id VARCHAR(100) NOT NULL COMMENT '客户端ID',
client_secret VARCHAR(255) DEFAULT NULL COMMENT '客户端密钥',
client_name VARCHAR(200) NOT NULL COMMENT '客户端名称',
client_type TINYINT NOT NULL DEFAULT 1 COMMENT '客户端类型 1:Web 2:App 3:小程序',
logo_url VARCHAR(500) DEFAULT NULL COMMENT 'Logo',
description VARCHAR(500) DEFAULT NULL,
authentication_methods VARCHAR(500) NOT NULL COMMENT '认证方式',
grant_types VARCHAR(500) NOT NULL COMMENT '授权类型',
redirect_uris TEXT DEFAULT NULL COMMENT '回调地址(逗号分隔)',
scopes VARCHAR(500) NOT NULL COMMENT '授权范围',
access_token_ttl INT NOT NULL DEFAULT 7200 COMMENT '访问令牌有效期(秒)',
refresh_token_ttl INT NOT NULL DEFAULT 604800 COMMENT '刷新令牌有效期(秒)',
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_client_id (tenant_id, client_id),
INDEX idx_tenant (tenant_id)
) COMMENT='OAuth2客户端';
4.2 日志审计
-- auth_login_log — 登录日志(新增)
CREATE TABLE auth_login_log (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT DEFAULT NULL,
username VARCHAR(100) DEFAULT NULL,
login_type TINYINT NOT NULL DEFAULT 1 COMMENT '登录类型 1:密码 2:短信 3:微信 4:支付宝',
client_id VARCHAR(100) DEFAULT NULL COMMENT '客户端ID',
ip VARCHAR(128) DEFAULT NULL,
location VARCHAR(255) DEFAULT NULL,
browser VARCHAR(200) DEFAULT NULL,
os VARCHAR(200) DEFAULT NULL,
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0:失败 1:成功',
msg VARCHAR(500) DEFAULT NULL COMMENT '消息',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_user (user_id),
INDEX idx_tenant (tenant_id),
INDEX idx_created (created_at)
) COMMENT='登录日志';
-- auth_oper_log — 操作日志(新增)
CREATE TABLE auth_oper_log (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
oper_type TINYINT NOT NULL DEFAULT 1 COMMENT '操作类型 1:新增 2:修改 3:删除 4:查询 5:导出 6:登录 7:登出',
title VARCHAR(200) NOT NULL COMMENT '操作模块',
method VARCHAR(500) DEFAULT NULL COMMENT '请求方法',
request_url VARCHAR(500) DEFAULT NULL COMMENT '请求URL',
request_method VARCHAR(10) DEFAULT NULL COMMENT '请求方式 GET/POST/PUT/DELETE',
request_params TEXT DEFAULT NULL COMMENT '请求参数',
response_data TEXT DEFAULT NULL COMMENT '响应数据',
user_id BIGINT DEFAULT NULL COMMENT '操作用户ID',
user_name VARCHAR(100) DEFAULT NULL COMMENT '操作用户名',
oper_ip VARCHAR(128) DEFAULT NULL COMMENT '操作IP',
oper_location VARCHAR(255) DEFAULT NULL COMMENT '操作地点',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0:失败 1:成功',
error_msg TEXT DEFAULT NULL COMMENT '错误消息',
cost_time BIGINT DEFAULT 0 COMMENT '耗时(ms)',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_user (user_id),
INDEX idx_tenant (tenant_id),
INDEX idx_created (created_at)
) COMMENT='操作日志';
五、rui-gateway 网关服务(2张表)
-- gw_route — 路由配置(新增)
CREATE TABLE gw_route (
id BIGINT NOT NULL,
route_id VARCHAR(100) NOT NULL COMMENT '路由ID',
route_name VARCHAR(200) NOT NULL COMMENT '路由名称',
uri VARCHAR(500) NOT NULL COMMENT '目标URI',
predicates VARCHAR(1000) NOT NULL COMMENT '断言条件(JSON)',
filters VARCHAR(1000) DEFAULT NULL COMMENT '过滤器(JSON)',
sort_no INT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_route_id (route_id)
) COMMENT='网关路由配置';
-- gw_rate_limit — 限流规则(新增)
CREATE TABLE gw_rate_limit (
id BIGINT NOT NULL,
route_id VARCHAR(100) NOT NULL COMMENT '路由ID',
limit_type TINYINT NOT NULL DEFAULT 1 COMMENT '限流类型 1:IP 2:用户 3:接口',
limit_key VARCHAR(200) NOT NULL COMMENT '限流键',
limit_count INT NOT NULL DEFAULT 100 COMMENT '限流次数',
limit_window INT NOT NULL DEFAULT 60 COMMENT '时间窗口(秒)',
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_route (route_id)
) COMMENT='网关限流规则';
六、公共表(跨服务使用,2张表)
-- pub_file — 文件记录(新增)
CREATE TABLE pub_file (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
file_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
file_url VARCHAR(1000) NOT NULL COMMENT '文件访问URL',
file_path VARCHAR(1000) NOT NULL COMMENT '文件存储路径',
file_size BIGINT NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
file_type VARCHAR(100) DEFAULT NULL COMMENT '文件类型',
storage_type TINYINT NOT NULL DEFAULT 1 COMMENT '存储类型 1:本地 2:OSS 3:MinIO',
module VARCHAR(100) DEFAULT NULL COMMENT '所属模块',
biz_id BIGINT DEFAULT NULL COMMENT '业务ID',
status TINYINT NOT NULL DEFAULT 1,
deleted TINYINT NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_tenant (tenant_id),
INDEX idx_module_biz (module, biz_id)
) COMMENT='文件记录';
-- pub_message — 消息记录(新增)
CREATE TABLE pub_message (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL DEFAULT 0,
msg_type TINYINT NOT NULL DEFAULT 1 COMMENT '消息类型 1:短信 2:邮件 3:站内信 4:App推送',
template_code VARCHAR(100) DEFAULT NULL COMMENT '模板编码',
sender VARCHAR(200) DEFAULT NULL COMMENT '发送方',
receiver VARCHAR(500) NOT NULL COMMENT '接收方',
subject VARCHAR(500) DEFAULT NULL COMMENT '主题',
content TEXT NOT NULL COMMENT '内容',
params JSON DEFAULT NULL COMMENT '模板参数(JSON)',
send_status TINYINT NOT NULL DEFAULT 0 COMMENT '发送状态 0:待发送 1:发送中 2:成功 3:失败',
retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数',
send_time DATETIME DEFAULT NULL COMMENT '发送时间',
result_msg VARCHAR(500) DEFAULT NULL COMMENT '发送结果',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
INDEX idx_tenant (tenant_id),
INDEX idx_status (send_status),
INDEX idx_created (created_at)
) COMMENT='消息记录';
七、表结构变更对照(当前 → 规划)
| 当前表名 | 规划表名 | 归属服务 | 变更类型 |
|---|---|---|---|
| rui_system_oauth2_client | auth_oauth2_client | rui-auth | 🔴 迁移 + 重构 |
| rui_system_tenant | sys_tenant | rui-service-system | 🟡 重构 |
| rui_user_credential | uc_user | rui-service-user | 🔴 合并拆分 |
| rui_user_info | uc_user_detail | rui-service-user | 🔴 合并拆分 |
| rui_user_level | uc_user_level | rui-service-user | 🟡 重构 |
| rui_user_level_log | uc_user_level_log | rui-service-user | 🟡 重构 |
| rui_user_role | uc_user_role | rui-service-user | 🟡 重构 |
| rui_system_menu | sys_menu | rui-service-system | 🟡 重构 |
| rui_system_role | sys_role | rui-service-system | 🟡 重构 |
| rui_system_role_menu | sys_role_menu | rui-service-system | 🟡 重构 |
| rui_system_dict | sys_dict_type + sys_dict_item | rui-service-system | 🔴 拆分 |
| rui_system_config | sys_config | rui-service-system | 🟡 重构 |
| — | sys_tenant_package | rui-service-system | 🟢 新增 |
| — | sys_dept | rui-service-system | 🟢 新增 |
| — | sys_post | rui-service-system | 🟢 新增 |
| — | uc_user_dept | rui-service-user | 🟢 新增 |
| — | uc_user_post | rui-service-user | 🟢 新增 |
| — | uc_user_permission | rui-service-user | 🟢 新增 |
| — | auth_login_log | rui-auth | 🟢 新增 |
| — | auth_oper_log | rui-auth | 🟢 新增 |
| — | gw_route | rui-gateway | 🟢 新增 |
| — | gw_rate_limit | rui-gateway | 🟢 新增 |
| — | pub_file | 公共 | 🟢 新增 |
| — | pub_message | 公共 | 🟢 新增 |
八、表前缀规则(新增)
| 前缀 | 归属服务 | 说明 |
|---|---|---|
sys_ |
rui-service-system | 系统基础表(租户/部门/岗位/菜单/角色/字典/配置) |
uc_ |
rui-service-user | 用户中心表(用户/详情/等级/角色/部门/岗位关联) |
auth_ |
rui-auth | 认证授权表(OAuth2客户端/登录日志/操作日志) |
gw_ |
rui-gateway | 网关表(路由/限流) |
pub_ |
公共 | 跨服务公共表(文件/消息) |
biz_ |
业务服务 | 业务应用模块表(如 biz_order, biz_pay) |
九、Entity 设计规则(新增)
9.1 必须继承 BaseEntity
@Data
@EqualsAndHashCode(callSuper = true)
public class User extends BaseEntity {
// 业务字段
}
9.2 @TableName 命名规则
// ✅ 正确:不包含前缀,与全局配置 table-prefix 配合
@TableName(value = "user", keepGlobalPrefix = true)
// 实际表名: rui_user(当前)或 uc_user(建议调整后)
// ❌ 错误:硬编码前缀,或前缀与配置不一致
@TableName(value = "auth_user", keepGlobalPrefix = true)
// 实际表名: rui_auth_user(与 SQL 不一致)
9.3 主键策略统一
// ✅ 统一使用 ASSIGN_ID(雪花算法)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
// ❌ 不要混用 AUTO
@TableId(type = IdType.AUTO) // 错误!
文档版本: v1.0 创建日期: 2026-05-28 适用范围: rui-framework 项目数据库设计 状态: 仅规划,未实施