From bd6b518aae61608ddc2d82b43ccc283dc95b9c54 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 11 三月 2026 13:59:33 +0800
Subject: [PATCH] #

---
 src/main/resources/sql/20260311_add_mfa_columns_to_sys_user.sql |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/src/main/resources/sql/20260311_add_mfa_columns_to_sys_user.sql b/src/main/resources/sql/20260311_add_mfa_columns_to_sys_user.sql
new file mode 100644
index 0000000..6e7eded
--- /dev/null
+++ b/src/main/resources/sql/20260311_add_mfa_columns_to_sys_user.sql
@@ -0,0 +1,78 @@
+-- sys_user 澧炲姞 MFA 鐩稿叧瀛楁
+-- 鐢ㄩ�旓細鏀寔璐﹀彿绾у鍥犲瓙鐧诲綍鎺堟潈銆佺粦瀹氬拰鏍¢獙
+-- 閫傜敤鏁版嵁搴擄細MySQL
+
+SET @current_db := DATABASE();
+
+SET @mfa_allow_exists := (
+  SELECT COUNT(1)
+  FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = @current_db
+    AND TABLE_NAME = 'sys_user'
+    AND COLUMN_NAME = 'mfa_allow'
+);
+
+SET @add_mfa_allow_sql := IF(
+  @mfa_allow_exists = 0,
+  'ALTER TABLE sys_user ADD COLUMN mfa_allow INT NOT NULL DEFAULT 0 COMMENT ''鏄惁鍏佽浣跨敤MFA'' AFTER password',
+  'SELECT ''column mfa_allow already exists'' '
+);
+PREPARE stmt_mfa_allow FROM @add_mfa_allow_sql;
+EXECUTE stmt_mfa_allow;
+DEALLOCATE PREPARE stmt_mfa_allow;
+
+SET @mfa_enabled_exists := (
+  SELECT COUNT(1)
+  FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = @current_db
+    AND TABLE_NAME = 'sys_user'
+    AND COLUMN_NAME = 'mfa_enabled'
+);
+
+SET @add_mfa_enabled_sql := IF(
+  @mfa_enabled_exists = 0,
+  'ALTER TABLE sys_user ADD COLUMN mfa_enabled INT NOT NULL DEFAULT 0 COMMENT ''鏄惁宸插惎鐢∕FA'' AFTER mfa_allow',
+  'SELECT ''column mfa_enabled already exists'' '
+);
+PREPARE stmt_mfa_enabled FROM @add_mfa_enabled_sql;
+EXECUTE stmt_mfa_enabled;
+DEALLOCATE PREPARE stmt_mfa_enabled;
+
+SET @mfa_secret_exists := (
+  SELECT COUNT(1)
+  FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = @current_db
+    AND TABLE_NAME = 'sys_user'
+    AND COLUMN_NAME = 'mfa_secret'
+);
+
+SET @add_mfa_secret_sql := IF(
+  @mfa_secret_exists = 0,
+  'ALTER TABLE sys_user ADD COLUMN mfa_secret VARCHAR(128) NULL COMMENT ''MFA瀵嗛挜'' AFTER mfa_enabled',
+  'SELECT ''column mfa_secret already exists'' '
+);
+PREPARE stmt_mfa_secret FROM @add_mfa_secret_sql;
+EXECUTE stmt_mfa_secret;
+DEALLOCATE PREPARE stmt_mfa_secret;
+
+SET @mfa_bound_time_exists := (
+  SELECT COUNT(1)
+  FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = @current_db
+    AND TABLE_NAME = 'sys_user'
+    AND COLUMN_NAME = 'mfa_bound_time'
+);
+
+SET @add_mfa_bound_time_sql := IF(
+  @mfa_bound_time_exists = 0,
+  'ALTER TABLE sys_user ADD COLUMN mfa_bound_time DATETIME NULL COMMENT ''MFA缁戝畾鏃堕棿'' AFTER mfa_secret',
+  'SELECT ''column mfa_bound_time already exists'' '
+);
+PREPARE stmt_mfa_bound_time FROM @add_mfa_bound_time_sql;
+EXECUTE stmt_mfa_bound_time;
+DEALLOCATE PREPARE stmt_mfa_bound_time;
+
+SHOW COLUMNS FROM sys_user LIKE 'mfa_allow';
+SHOW COLUMNS FROM sys_user LIKE 'mfa_enabled';
+SHOW COLUMNS FROM sys_user LIKE 'mfa_secret';
+SHOW COLUMNS FROM sys_user LIKE 'mfa_bound_time';

--
Gitblit v1.9.1