-- 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 [REDACTED]

-- 完成提示
SELECT '数据库初始化完成，可以开始使用 FendxPHP 系统！' as completion_message;
