Skip to content
bitzorcas
EN

Reference

聊天模块

多频道消息 — ChatService 支持频道、成员、消息、提及、已读标记、文件附件和可插拔的实时适配器接口。

Last updated

Chat 模块提供多频道消息功能,支持频道、成员、线程消息、提及、已读标记和文件附件。遵循与其他模块相同的端口/适配器模式。

端点

端点方法描述
/api/chat/channelsPOST创建频道
/api/chat/channelsGET列出频道
/api/chat/channels/{id}/membersPOST添加成员
/api/chat/channels/{id}/messagesPOST发送消息
/api/chat/channels/{id}/messagesGET分页消息
/api/chat/channels/{id}/readPOST标记已读
/api/chat/messages/{id}PATCH编辑消息

架构

ChatEndpoints (Minimal API)
ChatService
├── IChatRepository → SqlSugarChatRepository
├── IChatEventPublisher → NullChatEventPublisher
├── IChatRealtimeAdapter → NullChatRealtimeAdapter (路线图: SignalR)
└── IChatAttachmentAccessService → FileAssetChatAttachmentAccessService

实体

实体用途
ChatChannelEntity频道定义(名称、类型、租户)
ChatMemberEntity频道成员关系(用户 + 角色)
ChatMessageEntity消息(内容、发送者、编辑标志)
ChatAttachmentEntity消息文件附件
ChatMentionEntity@提及跟踪
ChatReadMarkerEntity每用户已读位置

权限

Chat 通过 ChatPermissions 使用基于特性的权限:

public static class ChatPermissions
{
public const string ChannelCreate = "chat.channel.create";
public const string ChannelManage = "chat.channel.manage";
public const string MessageSend = "chat.message.send";
public const string MessageEdit = "chat.message.edit";
public const string MemberManage = "chat.member.manage";
}

消息分页

public class ChatMessagePage
{
public IReadOnlyList<ChatMessage> Messages { get; }
public int TotalCount { get; }
public bool HasMore { get; }
}

消息按时间倒序加载,使用基于游标的分页。

实时适配器(路线图)

public interface IChatRealtimeAdapter
{
Task MessageCreatedAsync(ChatMessage message, CancellationToken ct);
Task MessageEditedAsync(ChatMessage message, CancellationToken ct);
Task MemberJoinedAsync(ChatMember member, CancellationToken ct);
}

计划的实现:SignalR hub、Server-Sent Events、WebSocket 适配器。

另见