fundplatform/doc/sql/fund_sys_init.sql
zhangjf a17307a96e feat: 完成资金服务平台六步实施 - 数据库初始化+服务启动+网关配置
本次提交包含:
1. 11个Maven模块全部创建并编译通过
2. 4个数据库初始化脚本(14张表)
3. fund-sys服务启动验证
4. Gateway路由配置完成
5. API端到端测试通过

核心能力:
- 多租户数据隔离(MyBatis-Plus)
- JWT认证+BCrypt密码
- 统一返回结构
- 参数校验
- OpenFeign示例
- API网关统一入口

修复:
- MyBatis-Plus与Spring Boot 3兼容性问题
- BaseEntity字段类型统一(Long)
- Gateway版本兼容性
2026-02-17 12:53:55 +08:00

248 lines
12 KiB
SQL

-- =============================================
-- 资金服务平台 - 系统服务数据库初始化脚本
-- Database: fund_sys
-- Version: 1.0
-- Author: fundplatform team
-- Created: 2026-02-17
-- =============================================
-- 创建数据库
CREATE DATABASE IF NOT EXISTS fund_sys DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE fund_sys;
-- =============================================
-- 1. 用户表 (sys_user)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_user (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
username VARCHAR(64) NOT NULL COMMENT '用户名',
password VARCHAR(128) NOT NULL COMMENT '密码(BCrypt)',
real_name VARCHAR(64) COMMENT '真实姓名',
phone VARCHAR(20) COMMENT '手机号',
email VARCHAR(128) COMMENT '邮箱',
dept_id BIGINT COMMENT '部门ID',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
avatar VARCHAR(255) COMMENT '头像URL',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_username (tenant_id, username, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_dept_id (dept_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户表';
-- =============================================
-- 2. 角色表 (sys_role)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_role (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
role_code VARCHAR(64) NOT NULL COMMENT '角色编码',
role_name VARCHAR(128) NOT NULL COMMENT '角色名称',
data_scope TINYINT NOT NULL DEFAULT 1 COMMENT '数据权限: 1-全部, 2-本部门及子部门, 3-仅本部门, 4-仅本人',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
sort_order INT DEFAULT 0 COMMENT '排序号',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_code (tenant_id, role_code, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统角色表';
-- =============================================
-- 3. 用户角色关联表 (sys_user_role)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_user_role (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
role_id BIGINT NOT NULL COMMENT '角色ID',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_user_role (tenant_id, user_id, role_id),
KEY idx_user_id (user_id),
KEY idx_role_id (role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
-- =============================================
-- 4. 菜单表 (sys_menu)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_menu (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
parent_id BIGINT NOT NULL DEFAULT 0 COMMENT '父菜单ID, 0表示根菜单',
menu_name VARCHAR(128) NOT NULL COMMENT '菜单名称',
menu_type TINYINT NOT NULL DEFAULT 1 COMMENT '菜单类型: 1-目录, 2-菜单, 3-按钮',
menu_path VARCHAR(255) COMMENT '路由路径',
menu_icon VARCHAR(128) COMMENT '菜单图标',
component VARCHAR(255) COMMENT '组件路径',
permission VARCHAR(128) COMMENT '权限标识',
sort_order INT DEFAULT 0 COMMENT '排序号',
visible TINYINT NOT NULL DEFAULT 1 COMMENT '是否可见: 0-隐藏, 1-显示',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
KEY idx_tenant_id (tenant_id),
KEY idx_parent_id (parent_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统菜单表';
-- =============================================
-- 5. 角色菜单关联表 (sys_role_menu)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_role_menu (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
role_id BIGINT NOT NULL COMMENT '角色ID',
menu_id BIGINT NOT NULL COMMENT '菜单ID',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_role_menu (tenant_id, role_id, menu_id),
KEY idx_role_id (role_id),
KEY idx_menu_id (menu_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色菜单关联表';
-- =============================================
-- 6. 部门表 (sys_dept)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_dept (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '部门ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
parent_id BIGINT NOT NULL DEFAULT 0 COMMENT '父部门ID, 0表示根部门',
dept_code VARCHAR(64) NOT NULL COMMENT '部门编码',
dept_name VARCHAR(128) NOT NULL COMMENT '部门名称',
dept_leader VARCHAR(64) COMMENT '部门负责人',
phone VARCHAR(20) COMMENT '联系电话',
email VARCHAR(128) COMMENT '邮箱',
sort_order INT DEFAULT 0 COMMENT '排序号',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_code (tenant_id, dept_code, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_parent_id (parent_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统部门表';
-- =============================================
-- 7. 数据字典表 (sys_dict)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_dict (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '字典ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
dict_type VARCHAR(64) NOT NULL COMMENT '字典类型',
dict_label VARCHAR(128) NOT NULL COMMENT '字典标签',
dict_value VARCHAR(128) NOT NULL COMMENT '字典值',
sort_order INT DEFAULT 0 COMMENT '排序号',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_type_value (tenant_id, dict_type, dict_value, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_dict_type (dict_type),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统字典表';
-- =============================================
-- 8. 系统配置表 (sys_config)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_config (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '配置ID',
config_key VARCHAR(128) NOT NULL COMMENT '配置键',
config_value TEXT COMMENT '配置值',
config_type VARCHAR(64) DEFAULT 'string' COMMENT '配置类型: string/number/boolean/json',
description VARCHAR(500) COMMENT '配置描述',
is_system TINYINT NOT NULL DEFAULT 0 COMMENT '是否系统配置: 0-否, 1-是(系统配置不参与多租户隔离)',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_config_key (config_key, deleted),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表(不参与租户隔离)';
-- =============================================
-- 9. 操作日志表 (sys_log)
-- =============================================
CREATE TABLE IF NOT EXISTS sys_log (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '日志ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
user_id BIGINT COMMENT '操作用户ID',
username VARCHAR(64) COMMENT '操作用户名',
operation VARCHAR(128) COMMENT '操作描述',
method VARCHAR(255) COMMENT '请求方法',
params TEXT COMMENT '请求参数',
ip VARCHAR(64) COMMENT '请求IP',
location VARCHAR(255) COMMENT 'IP归属地',
execute_time INT COMMENT '执行时长(ms)',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-失败, 1-成功',
error_msg TEXT COMMENT '错误信息',
trace_id VARCHAR(64) COMMENT '链路追踪ID',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (id),
KEY idx_tenant_id (tenant_id),
KEY idx_user_id (user_id),
KEY idx_created_time (created_time),
KEY idx_trace_id (trace_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统操作日志表';
-- =============================================
-- 初始化数据
-- =============================================
-- 插入超级管理员用户 (租户ID=1, 密码: admin123)
INSERT INTO sys_user (id, tenant_id, username, password, real_name, phone, status, created_by, created_time)
VALUES (1, 1, 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5E', '超级管理员', '13800138000', 1, 1, NOW())
ON DUPLICATE KEY UPDATE username=username;
-- 插入超级管理员角色
INSERT INTO sys_role (id, tenant_id, role_code, role_name, data_scope, status, created_by, created_time)
VALUES (1, 1, 'admin', '超级管理员', 1, 1, 1, NOW())
ON DUPLICATE KEY UPDATE role_code=role_code;
-- 关联超级管理员用户和角色
INSERT INTO sys_user_role (tenant_id, user_id, role_id, created_by, created_time)
VALUES (1, 1, 1, 1, NOW())
ON DUPLICATE KEY UPDATE user_id=user_id;
-- 插入根部门
INSERT INTO sys_dept (id, tenant_id, parent_id, dept_code, dept_name, status, created_by, created_time)
VALUES (1, 1, 0, 'ROOT', '根部门', 1, 1, NOW())
ON DUPLICATE KEY UPDATE dept_code=dept_code;
-- =============================================
-- 脚本执行完成
-- =============================================