docs: 补充 Phase 2b 设计文档和实施计划

- 设计文档新增 Mermaid 消息收发时序图
- IMService 依赖注入补充 *redis.Client(未读数 HASH 操作)
- 实施计划同步更新 Redis 依赖和 unreadKeyPrefix

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-03-03 10:28:46 +08:00
parent de9f9c1ee1
commit 1f390fce56
2 changed files with 37 additions and 3 deletions

View File

@@ -302,13 +302,18 @@ type FriendChecker interface {
type UserInfoGetter interface {
GetUsersByIDs(ctx context.Context, userIDs []int64) ([]authModel.User, error)
}
// Redis Key 前缀(未读数 HASH
const unreadKeyPrefix = "echo:im:unread:"
```
**Step 2: 创建 IMService**
Create: `backend/go-service/app/im/service/im_service.go`
IMService 注入:`ConversationDAO``MessageDAO``*ws.PubSub``FriendChecker``UserInfoGetter`
IMService 注入:`ConversationDAO``MessageDAO``*ws.PubSub``*redis.Client``FriendChecker``UserInfoGetter`
注意:`*redis.Client` 用于操作未读数 Redis HASH`echo:im:unread:{user_id}`
核心方法(参考设计文档第七节):
- `SendMessage(ctx, senderID, targetUserID, content, msgType, clientMsgID)` — 核心链路:校验好友 → 查找/创建会话 → 写消息 → 更新 last_message → 增加未读 → 推送