-- 资金服务平台 - MySQL 初始化脚本 -- 执行顺序: 01 -- 设置字符集 SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; -- 创建 Nacos 配置数据库 CREATE DATABASE IF NOT EXISTS `nacos_config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建业务数据库 CREATE DATABASE IF NOT EXISTS `fund_platform` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 授权(如果需要创建专用用户) -- CREATE USER 'fund_user'@'%' IDENTIFIED BY 'fund123'; -- GRANT ALL PRIVILEGES ON fund_platform.* TO 'fund_user'@'%'; -- FLUSH PRIVILEGES; USE `fund_platform`; -- 用户表 CREATE TABLE IF NOT EXISTS `sys_user` ( `id` BIGINT NOT NULL COMMENT '用户ID', `username` VARCHAR(50) NOT NULL COMMENT '用户名', `password` VARCHAR(100) NOT NULL COMMENT '密码', `real_name` VARCHAR(50) COMMENT '真实姓名', `phone` VARCHAR(20) COMMENT '手机号', `email` VARCHAR(100) COMMENT '邮箱', `dept_id` BIGINT COMMENT '部门ID', `tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID', `status` TINYINT DEFAULT 1 COMMENT '状态:0禁用 1启用', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` TINYINT DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`, `tenant_id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_dept_id` (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- 角色表 CREATE TABLE IF NOT EXISTS `sys_role` ( `id` BIGINT NOT NULL COMMENT '角色ID', `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称', `role_code` VARCHAR(50) NOT NULL COMMENT '角色编码', `tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID', `status` TINYINT DEFAULT 1 COMMENT '状态', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` TINYINT DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; -- 菜单表 CREATE TABLE IF NOT EXISTS `sys_menu` ( `id` BIGINT NOT NULL COMMENT '菜单ID', `parent_id` BIGINT DEFAULT 0 COMMENT '父菜单ID', `menu_name` VARCHAR(50) NOT NULL COMMENT '菜单名称', `menu_type` TINYINT DEFAULT 1 COMMENT '类型:1目录 2菜单 3按钮', `path` VARCHAR(200) COMMENT '路由路径', `component` VARCHAR(200) COMMENT '组件路径', `perms` VARCHAR(100) COMMENT '权限标识', `sort` INT DEFAULT 0 COMMENT '排序', `icon` VARCHAR(100) COMMENT '图标', `status` TINYINT DEFAULT 1 COMMENT '状态', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` TINYINT DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表'; -- 用户角色关联表 CREATE TABLE IF NOT EXISTS `sys_user_role` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `user_id` BIGINT NOT NULL, `role_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_user_role` (`user_id`, `role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表'; -- 角色菜单关联表 CREATE TABLE IF NOT EXISTS `sys_role_menu` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `role_id` BIGINT NOT NULL, `menu_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表'; -- 部门表 CREATE TABLE IF NOT EXISTS `sys_dept` ( `id` BIGINT NOT NULL COMMENT '部门ID', `parent_id` BIGINT DEFAULT 0 COMMENT '父部门ID', `dept_name` VARCHAR(50) NOT NULL COMMENT '部门名称', `tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID', `sort` INT DEFAULT 0, `status` TINYINT DEFAULT 1, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` TINYINT DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表'; -- 租户表 CREATE TABLE IF NOT EXISTS `sys_tenant` ( `id` BIGINT NOT NULL COMMENT '租户ID', `tenant_name` VARCHAR(100) NOT NULL COMMENT '租户名称', `tenant_code` VARCHAR(50) NOT NULL COMMENT '租户编码', `contact_name` VARCHAR(50) COMMENT '联系人', `contact_phone` VARCHAR(20) COMMENT '联系电话', `status` TINYINT DEFAULT 1 COMMENT '状态', `expire_time` DATETIME COMMENT '过期时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` TINYINT DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_code` (`tenant_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表'; -- 插入默认租户 INSERT INTO `sys_tenant` (`id`, `tenant_name`, `tenant_code`, `contact_name`, `status`) VALUES (1, '默认租户', 'DEFAULT', '系统管理员', 1) ON DUPLICATE KEY UPDATE `tenant_name` = VALUES(`tenant_name`); -- 插入默认管理员用户 (密码: admin123,使用 BCrypt 加密) INSERT INTO `sys_user` (`id`, `username`, `password`, `real_name`, `tenant_id`, `status`) VALUES (1, 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '系统管理员', 1, 1) ON DUPLICATE KEY UPDATE `real_name` = VALUES(`real_name`); -- 插入默认角色 INSERT INTO `sys_role` (`id`, `role_name`, `role_code`, `tenant_id`) VALUES (1, '管理员', 'ADMIN', 1), (2, '普通用户', 'USER', 1) ON DUPLICATE KEY UPDATE `role_name` = VALUES(`role_name`); -- 分配管理员角色 INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1) ON DUPLICATE KEY UPDATE `role_id` = VALUES(`role_id`);