-- =====================================================
-- 梦幻西游一站式运营管理系统 - 后台用户表初始化脚本
-- 适用于 MYSQL 8.4
-- 创建日期: 2025-12-12
-- 描述: 创建后台管理员用户相关数据表
-- =====================================================

-- 选择数据库
USE mhxy_web;

-- 创建后台管理员用户表
CREATE TABLE IF NOT EXISTS admin_users (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '管理员ID',
    username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
    password VARCHAR(255) NOT NULL COMMENT '密码(加密存储)',
    real_name VARCHAR(100) COMMENT '真实姓名',
    email VARCHAR(100) COMMENT '邮箱地址',
    phone VARCHAR(20) COMMENT '联系电话',
    status TINYINT DEFAULT 1 COMMENT '账号状态: 0-禁用, 1-启用',
    is_super_admin TINYINT DEFAULT 0 COMMENT '是否超级管理员: 0-否, 1-是',
    last_login_time DATETIME COMMENT '最后登录时间',
    last_login_ip VARCHAR(45) COMMENT '最后登录IP',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    -- 创建索引
    INDEX idx_username (username),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='后台管理员用户表';

-- 创建管理员操作日志表
CREATE TABLE IF NOT EXISTS admin_operation_logs (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
    admin_user_id INT NOT NULL COMMENT '管理员ID',
    operation_type VARCHAR(50) NOT NULL COMMENT '操作类型',
    operation_desc TEXT COMMENT '操作描述',
    request_method VARCHAR(10) COMMENT '请求方法',
    request_url VARCHAR(255) COMMENT '请求URL',
    request_params TEXT COMMENT '请求参数',
    response_status INT COMMENT '响应状态码',
    ip_address VARCHAR(45) COMMENT 'IP地址',
    user_agent TEXT COMMENT '用户代理',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    -- 创建外键约束
    FOREIGN KEY (admin_user_id) REFERENCES admin_users(id) ON DELETE CASCADE,
    
    -- 创建索引
    INDEX idx_admin_user_id (admin_user_id),
    INDEX idx_operation_type (operation_type),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员操作日志表';

-- 创建系统配置表
CREATE TABLE IF NOT EXISTS system_config (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
    config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
    config_value TEXT COMMENT '配置值',
    config_desc VARCHAR(255) COMMENT '配置描述',
    config_group VARCHAR(50) DEFAULT 'default' COMMENT '配置分组',
    is_editable TINYINT DEFAULT 1 COMMENT '是否可编辑: 0-否, 1-是',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    -- 创建索引
    INDEX idx_config_key (config_key),
    INDEX idx_config_group (config_group)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';

-- 插入初始超级管理员账号（密码为: admin123，实际部署时需要加密）
INSERT INTO admin_users (username, password, real_name, email, status, is_super_admin) VALUES
('admin', '$2b$10$rOzK5V4yR7YqE6XoV4Wz9ODz8rN2L5A3C7B1F9H6I4J2K3L5M6N7O8P', '系统管理员', 'admin@mhxy.com', 1, 1);

-- 说明: 上面插入的密码是 'admin123' 的BCrypt加密结果
-- 生产环境中应该使用更复杂的密码
-- 加密密码生成示例（实际使用时需要在应用中处理）:
-- const bcrypt = require('bcrypt');
-- const hashedPassword = await bcrypt.hash('admin123', 10);

-- 插入系统默认配置
INSERT INTO system_config (config_key, config_value, config_desc, config_group) VALUES
('site_name', '梦幻西游一站式运营管理系统', '网站名称', 'basic'),
('site_description', '梦幻西游游戏运营管理后台系统', '网站描述', 'basic'),
('admin_session_timeout', '7200', '管理员会话超时时间(秒)', 'security'),
('max_login_attempts', '5', '最大登录尝试次数', 'security'),
('enable_captcha', '1', '是否启用验证码', 'security');

-- =====================================================
-- 使用说明:
-- 1. 在MySQL 8.4中执行此脚本
-- 2. 确保数据库存在: CREATE DATABASE IF NOT EXISTS mhxy_web;
-- 3. 执行脚本: source /path/to/init_admin_users.sql;
-- 4. 初始管理员账号: admin / admin123
-- 5. 部署到生产环境时，请修改默认密码
-- =====================================================