-- ============================================
-- 易网SaaS免费版 - 数据库初始化脚本
-- 版本: v1.0
-- 说明: 教务数据(课表/成绩/学业/空教室/考试)采用SESSION临时缓存
--       不入库，session生命周期8天，建议每周同步知岁OS
-- ============================================

-- 创建数据库
CREATE DATABASE IF NOT EXISTS yike_saas DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE yike_saas;

-- ============================================
-- 核心表
-- ============================================

-- 管理员表
CREATE TABLE IF NOT EXISTS admin_users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    nickname VARCHAR(50) DEFAULT '',
    avatar VARCHAR(255) DEFAULT '',
    last_login TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入默认管理员 (密码: admin123, MD5哈希，部署后请立即修改密码)
INSERT INTO admin_users (username, password, nickname) VALUES
('admin', '0192023a7bbd73250516f069df18b500', '超级管理员');

-- 系统配置表 (键值对)
CREATE TABLE IF NOT EXISTS settings (
    id INT PRIMARY KEY AUTO_INCREMENT,
    group_name VARCHAR(50) NOT NULL DEFAULT 'default',
    key_name VARCHAR(100) NOT NULL,
    value TEXT,
    remark VARCHAR(200) DEFAULT '',
    sort_order INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY unique_key (group_name, key_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入默认站点配置（部署时请修改 site_url 为你的实际域名）
INSERT INTO settings (group_name, key_name, value, remark, sort_order) VALUES
('site', 'site_title', '一课', '网站标题', 1),
('site', 'site_logo', '', '网站Logo URL', 2),
('site', 'site_url', 'http://localhost', '网站地址（部署时替换为实际域名）', 3),
('site', 'site_footer', '易网SaaS', '底部版权文字', 4),
('site', 'site_notice', '', '首页公告文字', 5),
('site', 'site_closed', '0', '是否关闭站点(0开启/1维护)', 6),
('site', 'site_closed_reason', '系统升级维护中，请稍后再访问', '站点维护原因', 7);

-- 插入团队信息配置（部署时请修改为你的团队信息）
INSERT INTO settings (group_name, key_name, value, remark, sort_order) VALUES
('team', 'team_title', '易网开发团队', '团队名称/标题', 1),
('team', 'team_contact', '微信：example_team\n邮箱：team@example.com\nQQ群：123456789', '团队联系方式(支持换行)', 2);

-- 插入知岁OS系统配置（部署时请修改为你的服务商UUID和密钥）
INSERT INTO settings (group_name, key_name, value, remark, sort_order) VALUES
('zsos', 'zsos_base_url', 'https://yun.sx-wl.cn', '知岁OS API地址', 1),
('zsos', 'zsos_uuid', 'your-service-uuid', '服务商UUID（部署时替换）', 2),
('zsos', 'zsos_secret_key', 'your-secret-key-hex', '服务商密钥(hex,部署时替换)', 3);

-- 插入学期时间配置
INSERT INTO settings (group_name, key_name, value, remark, sort_order) VALUES
('semester', 'semester_start_date', '', '开学日期(格式:YYYY-MM-DD)', 1),
('semester', 'semester_end_date', '', '放假截止日期(格式:YYYY-MM-DD)', 2);

-- 插入公众号登录配置（部署时请填写公众号信息）
INSERT INTO settings (group_name, key_name, value, remark, sort_order) VALUES
('wechat', 'wechat_enabled', '0', '是否启用公众号登录(0关/1开)', 1),
('wechat', 'wechat_appid', '', '公众号AppID', 2),
('wechat', 'wechat_secret', '', '公众号密钥(AppSecret)', 3),
('wechat', 'wechat_force_follow', '0', '是否开启强关公众号模式(0关/1开)', 4),
('wechat', 'wechat_qrcode_url', '', '公众号二维码图片URL', 5);

-- 弹窗表
CREATE TABLE IF NOT EXISTS popups (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    content TEXT,
    image VARCHAR(255) DEFAULT '',
    popup_type TINYINT DEFAULT 1 COMMENT '1=公告弹窗 2=图片弹窗',
    show_pages VARCHAR(255) DEFAULT 'home' COMMENT '展示位置: home=首页',
    start_time TIMESTAMP NULL COMMENT '开始显示时间',
    end_time TIMESTAMP NULL COMMENT '结束显示时间',
    is_active TINYINT DEFAULT 0 COMMENT '0=禁用 1=启用',
    sort_order INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 用户表
CREATE TABLE IF NOT EXISTS users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    real_name VARCHAR(50),
    student_id VARCHAR(20) UNIQUE,
    email VARCHAR(100),
    phone VARCHAR(20),
    avatar VARCHAR(255),
    wechat_openid VARCHAR(100) DEFAULT '' COMMENT '微信OpenID',
    wechat_nickname VARCHAR(50) DEFAULT '' COMMENT '微信昵称',
    wechat_avatar VARCHAR(255) DEFAULT '' COMMENT '微信头像',
    is_follow_wechat TINYINT DEFAULT 0 COMMENT '是否关注公众号',
    is_banned TINYINT DEFAULT 0 COMMENT '是否封禁(0正常/1封禁)',
    ban_reason VARCHAR(255) DEFAULT '' COMMENT '封禁原因',
    ban_expire_at TIMESTAMP NULL COMMENT '封禁到期时间(NULL=未封禁)',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 功能分类表
CREATE TABLE IF NOT EXISTS function_categories (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    icon VARCHAR(50),
    sort_order INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 功能表
CREATE TABLE IF NOT EXISTS functions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    category_id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    icon VARCHAR(50),
    page_url VARCHAR(255),
    external_url VARCHAR(255),
    is_external TINYINT(1) DEFAULT 0,
    sort_order INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (category_id) REFERENCES function_categories(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 课节时间配置表（用于匹配知岁OS课节数据源）
CREATE TABLE IF NOT EXISTS course_sections (
    id INT PRIMARY KEY AUTO_INCREMENT,
    section_number INT NOT NULL COMMENT '课节序号(1-12)',
    section_name VARCHAR(20) DEFAULT '' COMMENT '课节名称(如:第1节)',
    start_time VARCHAR(10) NOT NULL COMMENT '开始时间(如:08:00)',
    end_time VARCHAR(10) NOT NULL COMMENT '结束时间(如:08:45)',
    sort_order INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入默认课节配置（标准12节，可根据学校实际作息时间调整）
INSERT INTO course_sections (section_number, section_name, start_time, end_time, sort_order) VALUES
(1, '第1节', '08:00', '08:45', 1),
(2, '第2节', '08:55', '09:40', 2),
(3, '第3节', '10:00', '10:45', 3),
(4, '第4节', '10:55', '11:40', 4),
(5, '第5节', '14:00', '14:45', 5),
(6, '第6节', '14:55', '15:40', 6),
(7, '第7节', '16:00', '16:45', 7),
(8, '第8节', '16:55', '17:40', 8),
(9, '第9节', '19:00', '19:45', 9),
(10, '第10节', '19:55', '20:40', 10),
(11, '第11节', '20:50', '21:35', 11),
(12, '第12节', '21:45', '22:30', 12);

-- 插入默认分类数据
INSERT INTO function_categories (name, icon, sort_order) VALUES
('在校常用', 'fa-school', 1),
('在校生活', 'fa-heart', 2),
('其他', 'fa-ellipsis-h', 3);

-- 插入默认功能数据
INSERT INTO functions (category_id, name, icon, page_url, is_external, sort_order) VALUES
(1, '查课表', 'fa-calendar-alt', 'pages/schedule.php', 0, 1),
(1, '查成绩', 'fa-graduation-cap', 'pages/grades.php', 0, 2),
(2, '历史上的今天', 'fa-history', 'pages/history.php', 0, 1),
(3, '使用说明', 'fa-info-circle', 'pages/help.php', 0, 4);

-- ============================================
-- 注意事项:
-- 1. 课表/成绩/学业/空教室/考试数据采用SESSION临时缓存，不入库
-- 2. SESSION生命周期8天(config.php配置)，建议每周同步知岁OS
-- 3. 部署后请立即修改管理员密码(默认admin/admin123)
-- 4. 请在config.php和settings表中填写你的实际域名、数据库、知岁OS密钥等配置
-- ============================================
