feat(database): 添加用户角色权限系统及相关监控功能

- 创建用户表(users)包含基本信息和认证字段
- 创建角色表(roles)用于权限控制
- 创建权限表(permissions)定义系统权限
- 创建用户角色关联表(user_roles)建立用户与角色关系
- 创建角色权限关联表(role_permissions)建立角色与权限关系
- 创建迁移记录表(migrations)追踪数据库变更
- 添加AdminController提供管理员面板功能
- 实现系统监控、配置管理、缓存清理等功能
- 添加AOP切面编程支持的各种通知类型
- 实现告警管理AlertManager支持多渠道告警
- 添加文档注解接口规范
This commit is contained in:
Lawson
2026-04-08 17:00:28 +08:00
commit 2782d765fb
270 changed files with 107192 additions and 0 deletions

395
fendx.sql Normal file
View File

@@ -0,0 +1,395 @@
-- FendxPHP 完整数据库脚本
-- 包含所有表结构、索引、约束和初始数据
-- 版本: 1.0
-- 创建时间: 2024-01-15
-- 创建数据库
CREATE DATABASE IF NOT EXISTS `fendx_php`
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE `fendx_php`;
-- 设置外键检查
SET FOREIGN_KEY_CHECKS = 0;
-- 删除已存在的表(按依赖关系倒序)
DROP TABLE IF EXISTS `role_permissions`;
DROP TABLE IF EXISTS `user_roles`;
DROP TABLE IF EXISTS `permissions`;
DROP TABLE IF EXISTS `roles`;
DROP TABLE IF EXISTS `users`;
DROP TABLE IF EXISTS `migrations`;
-- 1. 创建用户表
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 '手机号',
`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='用户表';
-- 2. 创建角色表
CREATE TABLE `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='角色表';
-- 3. 创建权限表
CREATE TABLE `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='权限表';
-- 4. 创建用户角色关联表
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',
`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='用户角色关联表';
-- 5. 创建角色权限关联表
CREATE TABLE `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='角色权限关联表';
-- 6. 创建迁移记录表
CREATE TABLE `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='迁移记录表';
-- 恢复外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- ================================
-- 插入基础数据
-- ================================
-- 1. 插入角色数据
INSERT INTO `roles` (`id`, `name`, `display_name`, `description`, `guard_name`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'super_admin', '超级管理员', '系统超级管理员,拥有所有权限', 'web', 1, 1, NOW(), NOW()),
(2, 'admin', '管理员', '系统管理员,拥有大部分管理权限', 'web', 1, 2, NOW(), NOW()),
(3, 'moderator', '版主', '内容管理员,负责内容审核和管理', 'web', 1, 3, NOW(), NOW()),
(4, 'user', '普通用户', '普通注册用户', 'web', 1, 4, NOW(), NOW()),
(5, 'guest', '访客', '未登录访客', 'web', 1, 5, NOW(), NOW());
-- 2. 插入权限数据
INSERT INTO `permissions` (`id`, `name`, `display_name`, `description`, `guard_name`, `group_name`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
-- 用户管理权限 (1-5)
(1, 'user.list', '查看用户列表', '查看系统用户列表', 'web', '用户管理', 1, 1, NOW(), NOW()),
(2, 'user.create', '创建用户', '创建新用户账号', 'web', '用户管理', 1, 2, NOW(), NOW()),
(3, 'user.edit', '编辑用户', '编辑用户信息', 'web', '用户管理', 1, 3, NOW(), NOW()),
(4, 'user.delete', '删除用户', '删除用户账号', 'web', '用户管理', 1, 4, NOW(), NOW()),
(5, 'user.view', '查看用户详情', '查看用户详细信息', 'web', '用户管理', 1, 5, NOW(), NOW()),
-- 角色管理权限 (6-10)
(6, 'role.list', '查看角色列表', '查看系统角色列表', 'web', '角色管理', 1, 1, NOW(), NOW()),
(7, 'role.create', '创建角色', '创建新角色', 'web', '角色管理', 1, 2, NOW(), NOW()),
(8, 'role.edit', '编辑角色', '编辑角色信息', 'web', '角色管理', 1, 3, NOW(), NOW()),
(9, 'role.delete', '删除角色', '删除角色', 'web', '角色管理', 1, 4, NOW(), NOW()),
(10, 'role.assign', '分配角色', '为用户分配角色', 'web', '角色管理', 1, 5, NOW(), NOW()),
-- 权限管理权限 (11-14)
(11, 'permission.list', '查看权限列表', '查看系统权限列表', 'web', '权限管理', 1, 1, NOW(), NOW()),
(12, 'permission.create', '创建权限', '创建新权限', 'web', '权限管理', 1, 2, NOW(), NOW()),
(13, 'permission.edit', '编辑权限', '编辑权限信息', 'web', '权限管理', 1, 3, NOW(), NOW()),
(14, 'permission.delete', '删除权限', '删除权限', 'web', '权限管理', 1, 4, NOW(), NOW()),
-- 内容管理权限 (15-20)
(15, 'content.list', '查看内容列表', '查看内容列表', 'web', '内容管理', 1, 1, NOW(), NOW()),
(16, 'content.create', '创建内容', '创建新内容', 'web', '内容管理', 1, 2, NOW(), NOW()),
(17, 'content.edit', '编辑内容', '编辑内容', 'web', '内容管理', 1, 3, NOW(), NOW()),
(18, 'content.delete', '删除内容', '删除内容', 'web', '内容管理', 1, 4, NOW(), NOW()),
(19, 'content.publish', '发布内容', '发布内容', 'web', '内容管理', 1, 5, NOW(), NOW()),
(20, 'content.audit', '审核内容', '审核内容', 'web', '内容管理', 1, 6, NOW(), NOW()),
-- 系统管理权限 (21-25)
(21, 'system.config', '系统配置', '系统配置管理', 'web', '系统管理', 1, 1, NOW(), NOW()),
(22, 'system.log', '查看系统日志', '查看系统操作日志', 'web', '系统管理', 1, 2, NOW(), NOW()),
(23, 'system.monitor', '系统监控', '系统运行监控', 'web', '系统管理', 1, 3, NOW(), NOW()),
(24, 'system.backup', '数据备份', '数据备份操作', 'web', '系统管理', 1, 4, NOW(), NOW()),
(25, 'system.restore', '数据恢复', '数据恢复操作', 'web', '系统管理', 1, 5, NOW(), NOW()),
-- API权限 (26-29)
(26, 'api.access', 'API访问', '访问API接口', 'web', 'API管理', 1, 1, NOW(), NOW()),
(27, 'api.create', 'API创建', '通过API创建资源', 'web', 'API管理', 1, 2, NOW(), NOW()),
(28, 'api.update', 'API更新', '通过API更新资源', 'web', 'API管理', 1, 3, NOW(), NOW()),
(29, 'api.delete', 'API删除', '通过API删除资源', 'web', 'API管理', 1, 4, NOW(), NOW());
-- 3. 插入用户数据
INSERT INTO `users` (`id`, `username`, `email`, `password`, `nickname`, `avatar`, `phone`, `gender`, `birthday`, `bio`, `status`, `email_verified`, `phone_verified`, `email_verified_at`, `phone_verified_at`, `last_login_at`, `last_login_ip`, `created_at`, `updated_at`) VALUES
(1, 'admin', 'admin@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '系统管理员', NULL, '13800138000', 'other', NULL, '系统默认管理员账号', 'active', 1, 1, NOW(), NOW(), NOW(), '127.0.0.1', NOW(), NOW()),
(2, 'test_user', 'test@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '测试用户', NULL, '13800138001', 'male', '1990-01-01', '这是一个测试用户账号', 'active', 1, 0, NOW(), NULL, NOW(), '127.0.0.1', NOW(), NOW()),
(3, 'developer', 'dev@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '开发者', NULL, '13800138002', 'male', '1985-05-15', '系统开发者账号', 'active', 1, 1, NOW(), NOW(), NOW(), '127.0.0.1', NOW(), NOW()),
(4, 'moderator', 'mod@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '内容管理员', NULL, '13800138003', 'female', '1992-08-20', '负责内容审核和管理的版主', 'active', 1, 0, NOW(), NULL, NOW(), '127.0.0.1', NOW(), NOW()),
(5, 'user001', 'user001@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '普通用户1', NULL, '13800138004', 'male', '1995-03-10', '普通注册用户', 'active', 1, 0, NOW(), NULL, NOW(), '127.0.0.1', NOW(), NOW()),
(6, 'user002', 'user002@fendx.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '普通用户2', NULL, '13800138005', 'female', '1993-11-25', '普通注册用户', 'active', 1, 0, NOW(), NULL, NOW(), '127.0.0.1', NOW(), NOW());
-- 4. 插入用户角色关联数据
INSERT INTO `user_roles` (`user_id`, `role_id`, `guard_name`, `created_at`) VALUES
(1, 1, 'web', NOW()), -- admin -> super_admin
(2, 4, 'web', NOW()), -- test_user -> user
(3, 2, 'web', NOW()), -- developer -> admin
(4, 3, 'web', NOW()), -- moderator -> moderator
(5, 4, 'web', NOW()), -- user001 -> user
(6, 4, 'web', NOW()); -- user002 -> user
-- 5. 插入角色权限关联数据
-- 超级管理员拥有所有权限 (role_id = 1)
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`, `created_at`)
SELECT 1, id, 'web', NOW() FROM permissions;
-- 管理员权限 (role_id = 2) - 除了系统管理中的敏感权限
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`, `created_at`) VALUES
(2, 1, 'web', NOW()), (2, 2, 'web', NOW()), (2, 3, 'web', NOW'), (2, 5, 'web', NOW()), -- 用户管理
(2, 6, 'web', NOW()), (2, 7, 'web', NOW()), (2, 8, 'web', NOW'), (2, 10, 'web', NOW()), -- 角色管理
(2, 11, 'web', NOW()), (2, 13, 'web', NOW()), -- 权限管理
(2, 15, 'web', NOW()), (2, 16, 'web', NOW()), (2, 17, 'web', NOW'), (2, 19, 'web', NOW()), (2, 20, 'web', NOW()), -- 内容管理
(2, 22, 'web', NOW'), (2, 23, 'web', NOW'), -- 系统管理(部分)
(2, 26, 'web', NOW'), (2, 27, 'web', NOW'), (2, 28, 'web', NOW'); -- API管理
-- 版主权限 (role_id = 3) - 内容管理相关
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`, `created_at`) VALUES
(3, 1, 'web', NOW'), (3, 5, 'web', NOW'), -- 用户查看
(3, 15, 'web', NOW'), (3, 16, 'web', NOW'), (3, 17, 'web', NOW'), (3, 20, 'web', NOW'), -- 内容管理
(3, 26, 'web', NOW'); -- API访问
-- 普通用户权限 (role_id = 4) - 基础权限
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`, `created_at`) VALUES
(4, 5, 'web', NOW'), -- 查看自己的信息
(4, 15, 'web', NOW'), (4, 16, 'web', NOW'), (4, 17, 'web', NOW'), -- 内容管理
(4, 26, 'web', NOW'); -- API访问
-- 访客权限 (role_id = 5) - 最基础权限
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `guard_name`, `created_at`) VALUES
(5, 15, 'web', NOW'), -- 查看公开内容
(5, 26, 'web', NOW'); -- 基础API访问
-- 6. 插入迁移记录
INSERT INTO `migrations` (`migration`, `batch`, `ran_at`) VALUES
('2024_01_15_000001_create_users_table', 1, NOW()),
('2024_01_15_000002_create_roles_table', 1, NOW()),
('2024_01_15_000003_create_permissions_table', 1, NOW()),
('2024_01_15_000004_create_user_roles_table', 1, NOW()),
('2024_01_15_000005_create_role_permissions_table', 1, NOW()),
('2024_01_15_000006_create_migrations_table', 1, NOW());
-- ================================
-- 创建视图(可选)
-- ================================
-- 用户详细信息视图
CREATE OR REPLACE VIEW `user_details` AS
SELECT
u.id,
u.username,
u.email,
u.nickname,
u.avatar,
u.phone,
u.gender,
u.birthday,
u.bio,
u.status,
u.email_verified,
u.phone_verified,
u.last_login_at,
u.last_login_ip,
u.created_at,
u.updated_at,
GROUP_CONCAT(r.name) as roles,
GROUP_CONCAT(r.display_name) as role_names
FROM users u
LEFT JOIN user_roles ur ON u.id = ur.user_id
LEFT JOIN roles r ON ur.role_id = r.id
GROUP BY u.id;
-- 用户权限视图
CREATE OR REPLACE VIEW `user_permissions` AS
SELECT
u.id as user_id,
u.username,
p.name as permission_name,
p.display_name as permission_display_name,
p.group_name as permission_group
FROM users u
JOIN user_roles ur ON u.id = ur.user_id
JOIN roles r ON ur.role_id = r.id
JOIN role_permissions rp ON r.id = rp.role_id
JOIN permissions p ON rp.permission_id = p.id
WHERE r.is_active = 1 AND p.is_active = 1;
-- ================================
-- 创建存储过程(可选)
-- ================================
-- 检查用户权限的存储过程
DELIMITER //
CREATE PROCEDURE `check_user_permission`(
IN p_user_id BIGINT,
IN p_permission_name VARCHAR(100)
)
BEGIN
SELECT COUNT(*) as has_permission
FROM user_permissions
WHERE user_id = p_user_id AND permission_name = p_permission_name;
END //
DELIMITER ;
-- 获取用户角色的存储过程
DELIMITER //
CREATE PROCEDURE `get_user_roles`(
IN p_user_id BIGINT
)
BEGIN
SELECT
r.id,
r.name,
r.display_name,
r.description
FROM roles r
JOIN user_roles ur ON r.id = ur.role_id
WHERE ur.user_id = p_user_id AND r.is_active = 1;
END //
DELIMITER ;
-- ================================
-- 创建触发器(可选)
-- ================================
-- 用户更新时间触发器
DELIMITER //
CREATE TRIGGER `users_update_timestamp`
BEFORE UPDATE ON `users`
FOR EACH ROW
BEGIN
SET NEW.updated_at = CURRENT_TIMESTAMP;
END //
DELIMITER ;
-- 角色更新时间触发器
DELIMITER //
CREATE TRIGGER `roles_update_timestamp`
BEFORE UPDATE ON `roles`
FOR EACH ROW
BEGIN
SET NEW.updated_at = CURRENT_TIMESTAMP;
END //
DELIMITER ;
-- 权限更新时间触发器
DELIMITER //
CREATE TRIGGER `permissions_update_timestamp`
BEFORE UPDATE ON `permissions`
FOR EACH ROW
BEGIN
SET NEW.updated_at = CURRENT_TIMESTAMP;
END //
DELIMITER ;
-- ================================
-- 输出初始化完成信息
-- ================================
SELECT 'FendxPHP 数据库初始化完成!' as message;
SELECT COUNT(*) as total_users FROM users;
SELECT COUNT(*) as total_roles FROM roles;
SELECT COUNT(*) as total_permissions FROM permissions;
SELECT COUNT(*) as total_user_roles FROM user_roles;
SELECT COUNT(*) as total_role_permissions FROM role_permissions;
-- 默认账号信息
SELECT '默认管理员账号: admin / password' as admin_info;
SELECT '测试用户账号: test_user / password' as test_info;
SELECT '开发者账号: developer / dev123' as dev_info;
SELECT '版主账号: moderator / mod123' as mod_info;
-- 权限统计
SELECT
(SELECT COUNT(*) FROM permissions) as total_permissions,
(SELECT COUNT(*) FROM permissions WHERE group_name = '用户管理') as user_management_perms,
(SELECT COUNT(*) FROM permissions WHERE group_name = '角色管理') as role_management_perms,
(SELECT COUNT(*) FROM permissions WHERE group_name = '权限管理') as permission_management_perms,
(SELECT COUNT(*) FROM permissions WHERE group_name = '内容管理') as content_management_perms,
(SELECT COUNT(*) FROM permissions WHERE group_name = '系统管理') as system_management_perms,
(SELECT COUNT(*) FROM permissions WHERE group_name = 'API管理') as api_management_perms;
-- 完成提示
SELECT '数据库初始化完成,可以开始使用 FendxPHP 系统!' as completion_message;