feat(im): Task 3 - IM Service 核心业务 + DTO + 接口定义

IMService 核心方法:
- SendMessage: 发送消息(好友校验→查找/创建会话→幂等去重→写入→推送)
- RecallMessage: 2分钟撤回
- GetConversationList: 会话列表(含对方用户信息)
- GetHistoryMessages: 游标分页历史消息
- MarkRead / PinConversation / DeleteConversation / ClearHistory
- SearchMessages: 全局消息搜索
- GetTotalUnread: Redis 全局未读总数

DTO:
- SendMessageRequest / RecallMessageRequest
- ConversationDTO / HistoryMessageResponse
- SearchMessageRequest / MarkReadRequest / TypingRequest

接口:
- FriendChecker: 好友校验(contact 模块注入)
- UserInfoGetter: 用户信息批量查询(contact 模块注入)

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-03-03 10:46:57 +08:00
parent e091fbccb3
commit 334d3d860b
3 changed files with 673 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
// Package service 提供 IM 模块的业务逻辑
package service
import (
"context"
authModel "github.com/echochat/backend/app/auth/model"
)
// FriendChecker 好友关系校验接口
// 由 contact.FriendshipDAO 隐式实现,通过 Wire 接口注入避免直接依赖 contact 包
type FriendChecker interface {
IsFriend(ctx context.Context, userID, targetID int64) (bool, error)
}
// UserInfoGetter 用户信息批量查询接口
// 由 contact.FriendshipDAO 隐式实现,返回 id/username/nickname/avatar
type UserInfoGetter interface {
GetUsersByIDs(ctx context.Context, userIDs []int64) ([]authModel.User, error)
}