v2.3更新

This commit is contained in:
2026-05-28 20:48:29 +08:00
parent ca53fdc349
commit 7dbe98ee02
15 changed files with 749 additions and 86 deletions

97
sql/upgrades/v1.1.sql Normal file
View File

@@ -0,0 +1,97 @@
-- ===========================================
-- 班级操行分管理系统 - v1.0 → v1.1 升级脚本
-- 字符集: utf8mb4
--
-- 变更内容:
-- 1. users 表添加 need_change_password 列
-- 2. users 表添加 last_login_time 列
-- 3. users 表添加 last_login_ip 列
-- 4. users 表 password_hash 字段扩展至 VARCHAR(255)
--
-- 兼容性: 使用存储过程实现幂等phpMyAdmin 可直接执行
-- ===========================================
-- 升级步骤 1: users 添加 need_change_password 列
DROP PROCEDURE IF EXISTS `upgrade_step`;
DELIMITER $$
CREATE PROCEDURE `upgrade_step`()
BEGIN
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'need_change_password'
) THEN
ALTER TABLE `users`
ADD COLUMN `need_change_password` TINYINT DEFAULT 1
AFTER `status`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 2: users 添加 last_login_time 列
DROP PROCEDURE IF EXISTS `upgrade_step`;
DELIMITER $$
CREATE PROCEDURE `upgrade_step`()
BEGIN
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'last_login_time'
) THEN
ALTER TABLE `users`
ADD COLUMN `last_login_time` DATETIME DEFAULT NULL
AFTER `need_change_password`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 3: users 添加 last_login_ip 列
DROP PROCEDURE IF EXISTS `upgrade_step`;
DELIMITER $$
CREATE PROCEDURE `upgrade_step`()
BEGIN
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'last_login_ip'
) THEN
ALTER TABLE `users`
ADD COLUMN `last_login_ip` VARCHAR(45) DEFAULT NULL
AFTER `last_login_time`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 4: password_hash 字段扩展至 VARCHAR(255)
DROP PROCEDURE IF EXISTS `upgrade_step`;
DELIMITER $$
CREATE PROCEDURE `upgrade_step`()
BEGIN
DECLARE v_col_len INT;
SELECT CHARACTER_MAXIMUM_LENGTH INTO v_col_len
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'password_hash';
IF v_col_len < 255 THEN
ALTER TABLE `users`
MODIFY COLUMN `password_hash` VARCHAR(255) NOT NULL;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;