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支持多渠道告警 - 添加文档注解接口规范
396 lines
19 KiB
SQL
396 lines
19 KiB
SQL
-- 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;
|