-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdatabase.sql
More file actions
156 lines (142 loc) · 8.05 KB
/
database.sql
File metadata and controls
156 lines (142 loc) · 8.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
-- =============================================
-- Webman Starter 数据库初始化脚本
-- 基于README.md架构设计的核心表结构
-- =============================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =============================================
-- 用户表 (users)
-- =============================================
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`email` varchar(100) NOT NULL COMMENT '邮箱',
`password` varchar(255) NOT NULL COMMENT '密码',
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1=启用,0=禁用',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(45) DEFAULT NULL COMMENT '最后登录IP',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- =============================================
-- 角色表 (roles)
-- =============================================
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`name` varchar(50) NOT NULL COMMENT '角色名称',
`code` varchar(50) NOT NULL COMMENT '角色编码',
`description` varchar(255) DEFAULT NULL COMMENT '角色描述',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1=启用,0=禁用',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_status` (`status`),
KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
-- =============================================
-- 菜单表 (menus)
-- =============================================
DROP TABLE IF EXISTS `menus`;
CREATE TABLE `menus` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
`parent_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '父级菜单ID,0为顶级菜单',
`name` varchar(50) NOT NULL COMMENT '菜单名称',
`code` varchar(50) NOT NULL COMMENT '菜单编码',
`type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '菜单类型:1=目录,2=菜单,3=按钮',
`path` varchar(255) DEFAULT NULL COMMENT '路由路径',
`component` varchar(255) DEFAULT NULL COMMENT '组件路径',
`permission` varchar(100) DEFAULT NULL COMMENT '权限标识',
`icon` varchar(50) DEFAULT NULL COMMENT '图标',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1=启用,0=禁用',
`is_hidden` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否隐藏:1=隐藏,0=显示',
`is_cache` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否缓存:1=缓存,0=不缓存',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_type` (`type`),
KEY `idx_status` (`status`),
KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表';
-- =============================================
-- 用户角色关联表 (user_roles)
-- =============================================
DROP TABLE IF EXISTS `user_roles`;
CREATE TABLE `user_roles` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_role` (`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='用户角色关联表';
-- =============================================
-- 角色菜单关联表 (role_menus)
-- =============================================
DROP TABLE IF EXISTS `role_menus`;
CREATE TABLE `role_menus` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色ID',
`menu_id` bigint(20) unsigned NOT NULL COMMENT '菜单ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_menu` (`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='角色菜单关联表';
-- =============================================
-- 初始化数据
-- =============================================
-- 插入默认角色
INSERT INTO `roles` (`id`, `name`, `code`, `description`, `sort`, `status`) VALUES
(1, '超级管理员', 'super_admin', '系统超级管理员,拥有所有权限', 1, 1),
(2, '管理员', 'admin', '系统管理员', 2, 1),
(3, '普通用户', 'user', '普通用户', 3, 1);
-- 插入默认用户(密码为123456的bcrypt加密)
INSERT INTO `users` (`id`, `username`, `email`, `password`, `nickname`, `status`) VALUES
(1, 'admin', 'admin@example.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '超级管理员', 1);
-- 分配超级管理员角色给admin用户
INSERT INTO `user_roles` (`user_id`, `role_id`) VALUES (1, 1);
-- 插入系统菜单
INSERT INTO `menus` (`id`, `parent_id`, `name`, `code`, `type`, `path`, `component`, `permission`, `icon`, `sort`, `status`) VALUES
(1, 0, '系统管理', 'system', 1, '/system', NULL, 'system', 'system', 1, 1),
(2, 1, '用户管理', 'system:user', 2, '/system/user', 'system/user/index', 'system:user:list', 'user', 1, 1),
(3, 2, '新增用户', 'system:user:create', 3, NULL, NULL, 'system:user:create', NULL, 1, 1),
(4, 2, '编辑用户', 'system:user:update', 3, NULL, NULL, 'system:user:update', NULL, 2, 1),
(5, 2, '删除用户', 'system:user:delete', 3, NULL, NULL, 'system:user:delete', NULL, 3, 1),
(6, 1, '角色管理', 'system:role', 2, '/system/role', 'system/role/index', 'system:role:list', 'role', 2, 1),
(7, 6, '新增角色', 'system:role:create', 3, NULL, NULL, 'system:role:create', NULL, 1, 1),
(8, 6, '编辑角色', 'system:role:update', 3, NULL, NULL, 'system:role:update', NULL, 2, 1),
(9, 6, '删除角色', 'system:role:delete', 3, NULL, NULL, 'system:role:delete', NULL, 3, 1),
(10, 1, '菜单管理', 'system:menu', 2, '/system/menu', 'system/menu/index', 'system:menu:list', 'menu', 3, 1),
(11, 10, '新增菜单', 'system:menu:create', 3, NULL, NULL, 'system:menu:create', NULL, 1, 1),
(12, 10, '编辑菜单', 'system:menu:update', 3, NULL, NULL, 'system:menu:update', NULL, 2, 1),
(13, 10, '删除菜单', 'system:menu:delete', 3, NULL, NULL, 'system:menu:delete', NULL, 3, 1);
-- 给超级管理员角色分配所有菜单权限
INSERT INTO `role_menus` (`role_id`, `menu_id`)
SELECT 1, id FROM `menus` WHERE `deleted_at` IS NULL;
-- 恢复外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- =============================================
-- 完成数据库初始化
-- =============================================