-- ======================================== -- 团播机构 v1.0.1 数据库升级脚本 -- 创建时间: 2025-01-10 -- 说明: 包含首页弹窗功能和Banner跳转功能的数据库修改 -- ======================================== -- 检查脚本执行环境 PRINT '开始执行 v1.0.1 数据库升级脚本...' PRINT '执行时间: ' + CONVERT(VARCHAR, GETDATE(), 120) -- ======================================== -- 1. 创建首页弹窗表 T_HomePopups -- ======================================== PRINT '正在创建首页弹窗表 T_HomePopups...' IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups') BEGIN CREATE TABLE T_HomePopups ( Id INT PRIMARY KEY IDENTITY(1,1), Title NVARCHAR(100) NULL COMMENT '弹窗标题', ImageUrl NVARCHAR(500) NOT NULL COMMENT '弹窗图片URL地址', LinkType INT NULL COMMENT '链接类型:1-外部链接,2-内部页面(帖子),3-内部页面(通知),4-无链接', LinkUrl NVARCHAR(500) NULL COMMENT '点击跳转的链接地址', TargetId BIGINT NULL COMMENT '目标ID(如帖子ID或通知ID,配合LinkType使用)', IsActive BIT NOT NULL DEFAULT 1 COMMENT '是否启用该弹窗', StartTime DATETIME2 NULL COMMENT '弹窗开始展示时间', EndTime DATETIME2 NULL COMMENT '弹窗结束展示时间', SortOrder INT NOT NULL DEFAULT 0 COMMENT '排序顺序,数字越小越靠前', ViewCount INT NOT NULL DEFAULT 0 COMMENT '弹窗浏览次数', ClickCount INT NOT NULL DEFAULT 0 COMMENT '弹窗点击次数', CreatedAt DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '弹窗创建时间', UpdatedAt DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '弹窗更新时间' ); PRINT '✓ T_HomePopups 表创建成功' END ELSE BEGIN PRINT '⚠ T_HomePopups 表已存在,跳过创建' END -- ======================================== -- 2. 为 T_HomePopups 表添加索引 -- ======================================== PRINT '正在为 T_HomePopups 表添加索引...' -- 添加复合索引用于查询启用的弹窗 IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_IsActive_StartTime_EndTime') BEGIN CREATE INDEX IX_T_HomePopups_IsActive_StartTime_EndTime ON T_HomePopups (IsActive, StartTime, EndTime); PRINT '✓ 索引 IX_T_HomePopups_IsActive_StartTime_EndTime 创建成功' END -- 添加排序索引 IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_SortOrder') BEGIN CREATE INDEX IX_T_HomePopups_SortOrder ON T_HomePopups (SortOrder); PRINT '✓ 索引 IX_T_HomePopups_SortOrder 创建成功' END -- ======================================== -- 3. 更新 T_Banners 表的 LinkType 约束 -- ======================================== PRINT '正在更新 T_Banners 表的 LinkType 约束...' -- 检查并删除旧约束 IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType') BEGIN ALTER TABLE T_Banners DROP CONSTRAINT CK_T_Banners_LinkType; PRINT '✓ 删除旧的 LinkType 约束' END -- ======================================== -- 4. 添加弹窗链接类型字典 -- ======================================== PRINT '正在添加弹窗链接类型字典...' -- 添加字典类型 IF NOT EXISTS (SELECT * FROM sys_dict_type WHERE DictType = 'liveforum_popup_linktype') BEGIN INSERT INTO sys_dict_type (DictName, DictType, Status, Type, Create_by, Create_time, Remark) VALUES ('弹窗链接类型', 'liveforum_popup_linktype', '0', 'N', 'admin', GETDATE(), '首页弹窗链接类型配置'); PRINT '✓ 添加弹窗链接类型字典类型' END ELSE BEGIN PRINT '⚠ 弹窗链接类型字典类型已存在,跳过添加' END -- 添加字典数据 IF NOT EXISTS (SELECT * FROM sys_dict_data WHERE DictType = 'liveforum_popup_linktype' AND DictValue = '1') BEGIN INSERT INTO sys_dict_data (DictSort, DictLabel, DictValue, DictType, Status, Create_by, Create_time) VALUES (1, '外部链接', '1', 'liveforum_popup_linktype', '0', 'admin', GETDATE()), (2, '帖子详情', '2', 'liveforum_popup_linktype', '0', 'admin', GETDATE()), (4, '无链接', '4', 'liveforum_popup_linktype', '0', 'admin', GETDATE()); PRINT '✓ 添加弹窗链接类型字典数据' END ELSE BEGIN PRINT '⚠ 弹窗链接类型字典数据已存在,跳过添加' END -- ======================================== -- 6. 插入示例数据(可选,生产环境可注释掉) -- ======================================== PRINT '正在插入示例数据...' -- 插入首页弹窗示例数据 IF NOT EXISTS (SELECT * FROM T_HomePopups WHERE Title = '欢迎使用') BEGIN INSERT INTO T_HomePopups (Title, ImageUrl, LinkType, IsActive, SortOrder) VALUES ('欢迎使用', 'https://example.com/popup.jpg', 4, 1, 1); PRINT '✓ 插入首页弹窗示例数据' END -- ======================================== -- 7. 验证升级结果 -- ======================================== PRINT '正在验证升级结果...' -- 验证 T_HomePopups 表 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups') PRINT '✓ T_HomePopups 表验证通过' ELSE PRINT '✗ T_HomePopups 表验证失败' -- 验证约束 IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType' AND definition LIKE '%[LinkType]=(4)%') PRINT '✓ T_Banners LinkType 约束验证通过' ELSE PRINT '✗ T_Banners LinkType 约束验证失败' -- ======================================== -- 升级完成 -- ======================================== PRINT '' PRINT '=========================================' PRINT 'v1.0.1 数据库升级脚本执行完成!' PRINT '完成时间: ' + CONVERT(VARCHAR, GETDATE(), 120) PRINT '=========================================' PRINT '' PRINT '升级内容总结:' PRINT '1. ✓ 创建首页弹窗表 T_HomePopups' PRINT '2. ✓ 添加相关索引优化查询性能' PRINT '3. ✓ 更新 T_Banners 表约束支持新的链接类型' PRINT '4. ✓ 添加弹窗链接类型字典配置' PRINT '5. ✓ 更新 Banner 链接类型字典' PRINT '6. ✓ 插入必要的示例数据' PRINT '' PRINT '注意事项:' PRINT '- 请确保应用程序代码已同步更新' PRINT '- 建议在低峰期执行此脚本' PRINT '- 执行前请备份数据库' PRINT '========================================='