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
21 lines
633 B
Go
21 lines
633 B
Go
// 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)
|
|
}
|