From b496a87b84ee14b47597e272ce639ad7048ab38e Mon Sep 17 00:00:00 2001 From: zhx Date: Tue, 26 May 2026 01:35:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsql=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../023_activity_extra_navigation.sql | 63 +++++++++++++++++++ .../024_admin_app_config_schema_backfill.sql | 38 +++++++++++ 2 files changed, 101 insertions(+) create mode 100644 server/admin/migrations/023_activity_extra_navigation.sql create mode 100644 server/admin/migrations/024_admin_app_config_schema_backfill.sql diff --git a/server/admin/migrations/023_activity_extra_navigation.sql b/server/admin/migrations/023_activity_extra_navigation.sql new file mode 100644 index 00000000..4565b588 --- /dev/null +++ b/server/admin/migrations/023_activity_extra_navigation.sql @@ -0,0 +1,63 @@ +SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- 补齐活动管理下由既有 bootstrap seed 提供、但历史 migration 未覆盖的生产菜单。 +SET @now_ms = CAST(UNIX_TIMESTAMP(UTC_TIMESTAMP(3)) * 1000 AS UNSIGNED); + +INSERT INTO admin_permissions (name, code, kind, description, created_at_ms, updated_at_ms) VALUES + ('用户榜单查看', 'user-leaderboard:view', 'menu', '', @now_ms, @now_ms), + ('红包配置查看', 'red-packet:view', 'menu', '', @now_ms, @now_ms), + ('红包配置更新', 'red-packet:update', 'button', '', @now_ms, @now_ms) +ON DUPLICATE KEY UPDATE + name = VALUES(name), + kind = VALUES(kind), + description = VALUES(description), + updated_at_ms = @now_ms; + +INSERT INTO admin_menus (parent_id, title, code, path, icon, permission_code, sort, visible, created_at_ms, updated_at_ms) +SELECT parent.id, '用户榜单', 'user-leaderboard', '/activities/user-leaderboards', 'leaderboard', 'user-leaderboard:view', 74, TRUE, @now_ms, @now_ms +FROM admin_menus parent +WHERE parent.code = 'activities' +ON DUPLICATE KEY UPDATE + parent_id = VALUES(parent_id), + title = VALUES(title), + path = VALUES(path), + icon = VALUES(icon), + permission_code = VALUES(permission_code), + sort = VALUES(sort), + visible = VALUES(visible), + updated_at_ms = @now_ms; + +INSERT INTO admin_menus (parent_id, title, code, path, icon, permission_code, sort, visible, created_at_ms, updated_at_ms) +SELECT parent.id, '红包配置', 'red-packet', '/activities/red-packets', 'redeem', 'red-packet:view', 76, TRUE, @now_ms, @now_ms +FROM admin_menus parent +WHERE parent.code = 'activities' +ON DUPLICATE KEY UPDATE + parent_id = VALUES(parent_id), + title = VALUES(title), + path = VALUES(path), + icon = VALUES(icon), + permission_code = VALUES(permission_code), + sort = VALUES(sort), + visible = VALUES(visible), + updated_at_ms = @now_ms; + +INSERT IGNORE INTO admin_role_permissions (role_id, permission_id) +SELECT admin_role.id, admin_permission.id +FROM admin_roles admin_role +JOIN admin_permissions admin_permission +WHERE admin_role.code = 'platform-admin' + AND admin_permission.code IN ('user-leaderboard:view', 'red-packet:view', 'red-packet:update'); + +INSERT IGNORE INTO admin_role_permissions (role_id, permission_id) +SELECT admin_role.id, admin_permission.id +FROM admin_roles admin_role +JOIN admin_permissions admin_permission +WHERE admin_role.code = 'ops-admin' + AND admin_permission.code IN ('user-leaderboard:view', 'red-packet:view', 'red-packet:update'); + +INSERT IGNORE INTO admin_role_permissions (role_id, permission_id) +SELECT admin_role.id, admin_permission.id +FROM admin_roles admin_role +JOIN admin_permissions admin_permission +WHERE admin_role.code IN ('auditor', 'readonly') + AND admin_permission.code IN ('user-leaderboard:view', 'red-packet:view'); diff --git a/server/admin/migrations/024_admin_app_config_schema_backfill.sql b/server/admin/migrations/024_admin_app_config_schema_backfill.sql new file mode 100644 index 00000000..1fb00a51 --- /dev/null +++ b/server/admin/migrations/024_admin_app_config_schema_backfill.sql @@ -0,0 +1,38 @@ +SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- 老生产库曾由早期 AutoMigrate 建表,缺少当前模型依赖的描述和创建时间列。 +SET @ddl := IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_configs' AND COLUMN_NAME = 'description') = 0, + 'ALTER TABLE admin_app_configs ADD COLUMN description VARCHAR(255) NOT NULL DEFAULT '''' COMMENT ''描述信息'' AFTER value', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_configs' AND COLUMN_NAME = 'created_at_ms') = 0, + 'ALTER TABLE admin_app_configs ADD COLUMN created_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT ''创建时间,UTC epoch ms'' AFTER description', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_banners' AND COLUMN_NAME = 'created_at_ms') = 0, + 'ALTER TABLE admin_app_banners ADD COLUMN created_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT ''创建时间,UTC epoch ms'' AFTER ends_at_ms', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_versions' AND COLUMN_NAME = 'created_at_ms') = 0, + 'ALTER TABLE admin_app_versions ADD COLUMN created_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT ''创建时间,UTC epoch ms'' AFTER description', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt;