mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
- 创建用户表(users)包含基本信息和认证字段 - 创建角色表(roles)用于权限控制 - 创建权限表(permissions)定义系统权限 - 创建用户角色关联表(user_roles)建立用户与角色关系 - 创建角色权限关联表(role_permissions)建立角色与权限关系 - 创建迁移记录表(migrations)追踪数据库变更 - 添加AdminController提供管理员面板功能 - 实现系统监控、配置管理、缓存清理等功能 - 添加AOP切面编程支持的各种通知类型 - 实现告警管理AlertManager支持多渠道告警 - 添加文档注解接口规范
221 lines
12 KiB
SQL
221 lines
12 KiB
SQL
-- FendxPHP 数据库初始化脚本
|
|
-- 创建数据库和基础表结构
|
|
|
|
-- 创建数据库
|
|
CREATE DATABASE IF NOT EXISTS `fendx_php`
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE `fendx_php`;
|
|
|
|
-- 创建用户表
|
|
CREATE TABLE IF NOT EXISTS `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 '手机号',
|
|
`gender` enum('male','female','other') DEFAULT NULL COMMENT '性别',
|
|
`birthday` date DEFAULT NULL COMMENT '生日',
|
|
`bio` text COMMENT '个人简介',
|
|
`status` varchar(20) DEFAULT 'active' COMMENT '状态: active, inactive, banned',
|
|
`email_verified` tinyint(1) DEFAULT 0 COMMENT '邮箱是否验证',
|
|
`phone_verified` tinyint(1) DEFAULT 0 COMMENT '手机是否验证',
|
|
`email_verified_at` timestamp NULL DEFAULT NULL COMMENT '邮箱验证时间',
|
|
`phone_verified_at` timestamp NULL DEFAULT NULL COMMENT '手机验证时间',
|
|
`last_login_at` timestamp NULL DEFAULT NULL COMMENT '最后登录时间',
|
|
`last_login_ip` varchar(45) DEFAULT NULL COMMENT '最后登录IP',
|
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `users_username_unique` (`username`),
|
|
UNIQUE KEY `users_email_unique` (`email`),
|
|
KEY `users_username_index` (`username`),
|
|
KEY `users_email_index` (`email`),
|
|
KEY `users_status_index` (`status`),
|
|
KEY `users_created_at_index` (`created_at`),
|
|
KEY `users_last_login_at_index` (`last_login_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
|
|
|
-- 创建角色表
|
|
CREATE TABLE IF NOT EXISTS `roles` (
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
|
`name` varchar(50) NOT NULL COMMENT '角色名称',
|
|
`display_name` varchar(100) NOT NULL COMMENT '显示名称',
|
|
`description` text COMMENT '角色描述',
|
|
`guard_name` varchar(50) DEFAULT 'web' COMMENT '守卫名称',
|
|
`is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活',
|
|
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `roles_name_unique` (`name`),
|
|
KEY `roles_name_index` (`name`),
|
|
KEY `roles_guard_name_index` (`guard_name`),
|
|
KEY `roles_is_active_index` (`is_active`),
|
|
KEY `roles_sort_order_index` (`sort_order`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
|
|
|
|
-- 创建权限表
|
|
CREATE TABLE IF NOT EXISTS `permissions` (
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '权限ID',
|
|
`name` varchar(100) NOT NULL COMMENT '权限名称',
|
|
`display_name` varchar(100) NOT NULL COMMENT '显示名称',
|
|
`description` text COMMENT '权限描述',
|
|
`guard_name` varchar(50) DEFAULT 'web' COMMENT '守卫名称',
|
|
`group_name` varchar(50) DEFAULT NULL COMMENT '权限分组',
|
|
`is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活',
|
|
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `permissions_name_unique` (`name`),
|
|
KEY `permissions_name_index` (`name`),
|
|
KEY `permissions_guard_name_index` (`guard_name`),
|
|
KEY `permissions_group_name_index` (`group_name`),
|
|
KEY `permissions_is_active_index` (`is_active`),
|
|
KEY `permissions_sort_order_index` (`sort_order`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';
|
|
|
|
-- 创建用户角色关联表
|
|
CREATE TABLE IF NOT EXISTS `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',
|
|
`guard_name` varchar(50) DEFAULT 'web' COMMENT '守卫名称',
|
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `user_roles_unique` (`user_id`,`role_id`,`guard_name`),
|
|
KEY `user_roles_user_id_index` (`user_id`),
|
|
KEY `user_roles_role_id_index` (`role_id`),
|
|
KEY `user_roles_guard_name_index` (`guard_name`),
|
|
CONSTRAINT `user_roles_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
|
|
CONSTRAINT `user_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
|
|
|
|
-- 创建角色权限关联表
|
|
CREATE TABLE IF NOT EXISTS `role_permissions` (
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
|
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色ID',
|
|
`permission_id` bigint(20) unsigned NOT NULL COMMENT '权限ID',
|
|
`guard_name` varchar(50) DEFAULT 'web' COMMENT '守卫名称',
|
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `role_permissions_unique` (`role_id`,`permission_id`,`guard_name`),
|
|
KEY `role_permissions_role_id_index` (`role_id`),
|
|
KEY `role_permissions_permission_id_index` (`permission_id`),
|
|
KEY `role_permissions_guard_name_index` (`guard_name`),
|
|
CONSTRAINT `role_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,
|
|
CONSTRAINT `role_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';
|
|
|
|
-- 创建迁移记录表
|
|
CREATE TABLE IF NOT EXISTS `migrations` (
|
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
|
`migration` varchar(255) NOT NULL COMMENT '迁移文件名',
|
|
`batch` int(11) NOT NULL COMMENT '批次号',
|
|
`ran_at` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间',
|
|
PRIMARY KEY (`id`),
|
|
KEY `migrations_migration_index` (`migration`),
|
|
KEY `migrations_batch_index` (`batch`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='迁移记录表';
|
|
|
|
-- 插入基础角色数据
|
|
INSERT INTO `roles` (`name`, `display_name`, `description`, `guard_name`, `is_active`, `sort_order`) VALUES
|
|
('super_admin', '超级管理员', '系统超级管理员,拥有所有权限', 'web', 1, 1),
|
|
('admin', '管理员', '系统管理员,拥有大部分管理权限', 'web', 1, 2),
|
|
('moderator', '版主', '内容管理员,负责内容审核和管理', 'web', 1, 3),
|
|
('user', '普通用户', '普通注册用户', 'web', 1, 4),
|
|
('guest', '访客', '未登录访客', 'web', 1, 5);
|
|
|
|
-- 插入基础权限数据
|
|
INSERT INTO `permissions` (`name`, `display_name`, `group_name`, `guard_name`, `is_active`, `sort_order`) VALUES
|
|
-- 用户管理权限
|
|
('user.list', '查看用户列表', '用户管理', 'web', 1, 1),
|
|
('user.create', '创建用户', '用户管理', 'web', 1, 2),
|
|
('user.edit', '编辑用户', '用户管理', 'web', 1, 3),
|
|
('user.delete', '删除用户', '用户管理', 'web', 1, 4),
|
|
('user.view', '查看用户详情', '用户管理', 'web', 1, 5),
|
|
|
|
-- 角色管理权限
|
|
('role.list', '查看角色列表', '角色管理', 'web', 1, 1),
|
|
('role.create', '创建角色', '角色管理', 'web', 1, 2),
|
|
('role.edit', '编辑角色', '角色管理', 'web', 1, 3),
|
|
('role.delete', '删除角色', '角色管理', 'web', 1, 4),
|
|
('role.assign', '分配角色', '角色管理', 'web', 1, 5),
|
|
|
|
-- 权限管理权限
|
|
('permission.list', '查看权限列表', '权限管理', 'web', 1, 1),
|
|
('permission.create', '创建权限', '权限管理', 'web', 1, 2),
|
|
('permission.edit', '编辑权限', '权限管理', 'web', 1, 3),
|
|
('permission.delete', '删除权限', '权限管理', 'web', 1, 4),
|
|
|
|
-- 内容管理权限
|
|
('content.list', '查看内容列表', '内容管理', 'web', 1, 1),
|
|
('content.create', '创建内容', '内容管理', 'web', 1, 2),
|
|
('content.edit', '编辑内容', '内容管理', 'web', 1, 3),
|
|
('content.delete', '删除内容', '内容管理', 'web', 1, 4),
|
|
('content.publish', '发布内容', '内容管理', 'web', 1, 5),
|
|
('content.audit', '审核内容', '内容管理', 'web', 1, 6),
|
|
|
|
-- 系统管理权限
|
|
('system.config', '系统配置', '系统管理', 'web', 1, 1),
|
|
('system.log', '查看系统日志', '系统管理', 'web', 1, 2),
|
|
('system.monitor', '系统监控', '系统管理', 'web', 1, 3),
|
|
('system.backup', '数据备份', '系统管理', 'web', 1, 4),
|
|
('system.restore', '数据恢复', '系统管理', 'web', 1, 5),
|
|
|
|
-- API权限
|
|
('api.access', 'API访问', 'API管理', 'web', 1, 1),
|
|
('api.create', 'API创建', 'API管理', 'web', 1, 2),
|
|
('api.update', 'API更新', 'API管理', 'web', 1, 3),
|
|
('api.delete', 'API删除', 'API管理', 'web', 1, 4);
|
|
|
|
-- 插入默认管理员用户
|
|
INSERT INTO `users` (`username`, `email`, `password`, `nickname`, `phone`, `gender`, `bio`, `status`, `email_verified`, `phone_verified`, `email_verified_at`, `phone_verified_at`, `last_login_at`, `last_login_ip`) VALUES
|
|
('admin', 'admin@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '系统管理员', '13800138000', 'other', '系统默认管理员账号', 'active', 1, 1, NOW(), NOW(), NOW(), '127.0.0.1');
|
|
|
|
-- 分配超级管理员角色给admin用户
|
|
INSERT INTO `user_roles` (`user_id`, `role_id`, `guard_name`)
|
|
SELECT u.id, r.id, 'web'
|
|
FROM users u, roles r
|
|
WHERE u.username = 'admin' AND r.name = 'super_admin';
|
|
|
|
-- 给超级管理员分配所有权限
|
|
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`)
|
|
SELECT r.id, p.id, 'web'
|
|
FROM roles r, permissions p
|
|
WHERE r.name = 'super_admin';
|
|
|
|
-- 插入迁移记录
|
|
INSERT INTO `migrations` (`migration`, `batch`) VALUES
|
|
('2024_01_15_000001_create_users_table', 1),
|
|
('2024_01_15_000002_create_roles_table', 1),
|
|
('2024_01_15_000003_create_permissions_table', 1),
|
|
('2024_01_15_000004_create_user_roles_table', 1),
|
|
('2024_01_15_000005_create_role_permissions_table', 1),
|
|
('2024_01_15_000006_create_migrations_table', 1);
|
|
|
|
-- 创建测试用户
|
|
INSERT INTO `users` (`username`, `email`, `password`, `nickname`, `phone`, `gender`, `bio`, `status`, `email_verified`, `phone_verified`, `email_verified_at`, `phone_verified_at`, `last_login_at`, `last_login_ip`) VALUES
|
|
('test_user', 'test@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '测试用户', '13800138001', 'male', '这是一个测试用户账号', 'active', 1, 0, NOW(), NULL, NOW(), '127.0.0.1');
|
|
|
|
-- 分配普通用户角色给测试用户
|
|
INSERT INTO `user_roles` (`user_id`, `role_id`, `guard_name`)
|
|
SELECT u.id, r.id, 'web'
|
|
FROM users u, roles r
|
|
WHERE u.username = 'test_user' AND r.name = 'user';
|
|
|
|
-- 给普通用户分配基础权限
|
|
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`)
|
|
SELECT r.id, p.id, 'web'
|
|
FROM roles r, permissions p
|
|
WHERE r.name = 'user' AND p.name IN ('user.view', 'content.list', 'content.create', 'content.edit', 'api.access');
|
|
|
|
-- 输出初始化完成信息
|
|
SELECT 'FendxPHP 数据库初始化完成!' as message;
|
|
SELECT '默认管理员账号: admin / password' as admin_info;
|
|
SELECT '测试用户账号: test_user / password' as test_info;
|