-- =============================================
-- 站内信功能 - 数据库表创建脚本
-- 创建时间: 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 '站内信表创建完成！';
