-- ===========================================
-- 多班级版班级管理系统 - v2.1 升级脚本
-- 修复 review-report-v14 中发现的安全和逻辑问题
-- 
-- 开发者: Canglan
-- 联系方式: admin@sea-studio.top
-- 版权归属: Sea Network Technology Studio
-- 许可证: Apache License 2.0
-- 
-- 版权所有 © Sea Network Technology Studio
-- 
-- 升级说明：
-- 1. 为 super_admins 表添加 need_change_password 字段
-- 2. 为 existing 超级管理员设置默认值（首次登录强制改密）
-- ===========================================

USE `classmanagerdb`;

-- 为 super_admins 表添加 need_change_password 字段
-- 已存在则跳过（使用存储过程检测）
DROP PROCEDURE IF EXISTS `add_column_if_not_exists`;
DELIMITER //
CREATE PROCEDURE `add_column_if_not_exists`(
    IN p_table VARCHAR(64),
    IN p_column VARCHAR(64),
    IN p_definition VARCHAR(512)
)
BEGIN
    DECLARE col_count INT DEFAULT 0;
    SELECT COUNT(*) INTO col_count
    FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = p_table
      AND column_name = p_column;
    IF col_count = 0 THEN
        SET @sql = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN `', p_column, '` ', p_definition);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END IF;
END //
DELIMITER ;

CALL `add_column_if_not_exists`('super_admins', 'need_change_password', 'TINYINT DEFAULT 1 COMMENT \'是否需要修改密码：1=需要，0=不需要\' AFTER `status`');

DROP PROCEDURE IF EXISTS `add_column_if_not_exists`;

-- 更新系统版本号
INSERT INTO `system_settings` (`setting_key`, `setting_value`)
VALUES ('db_version', '2.1')
ON DUPLICATE KEY UPDATE `setting_value` = '2.1';

SELECT '升级完成！版本: v2.1' AS message;
