-- ============================================= -- 站内信功能 - 数据库表创建脚本 -- 创建时间: 2025-12-07 -- ============================================= -- 表1: SQMessage (站内信消息表) CREATE TABLE [dbo].[SQMessage] ( [id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY, [user_id] INT NULL, -- 接收用户ID,全员广播时为NULL [target_type] INT NOT NULL DEFAULT 0, -- 目标类型:0=指定用户,1=全员广播 [title] NVARCHAR(200) NOT NULL, -- 消息标题 [content] NVARCHAR(MAX) NOT NULL, -- 消息正文 [message_type] INT NOT NULL DEFAULT 0, -- 消息类型:0=系统通知,1=私信 [is_read] BIT NOT NULL DEFAULT 0, -- 是否已读(仅对指定用户消息有效) [sender_id] INT NULL, -- 发送者ID(后台管理员ID) [related_type] INT NULL, -- 关联业务类型:1=组局 [related_id] INT NULL, -- 关联业务ID [created_at] DATETIME NOT NULL DEFAULT GETDATE(), [updated_at] DATETIME NULL ); GO -- 索引 CREATE INDEX IX_SQMessage_user_id ON [dbo].[SQMessage]([user_id]); CREATE INDEX IX_SQMessage_target_type ON [dbo].[SQMessage]([target_type]); CREATE INDEX IX_SQMessage_created_at ON [dbo].[SQMessage]([created_at] DESC); GO -- 表2: SQMessageRead (已读记录表 - 专门记录全员广播的已读状态) CREATE TABLE [dbo].[SQMessageRead] ( [id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY, [message_id] INT NOT NULL, -- 消息ID [user_id] INT NOT NULL, -- 用户ID [read_at] DATETIME NOT NULL DEFAULT GETDATE() ); GO -- 索引(防重复 + 查询优化) CREATE UNIQUE INDEX IX_SQMessageRead_msg_user ON [dbo].[SQMessageRead]([message_id], [user_id]); CREATE INDEX IX_SQMessageRead_user_id ON [dbo].[SQMessageRead]([user_id]); GO PRINT '站内信表创建完成!';