feat(friend): 添加好友系统功能实现

完善好友管理功能,包括添加好友、回复好友请求、删除好友等操作,
同时优化了相关数据结构和接口定义。

BREAKING CHANGE: 调整了黑名单数据结构,将BlackInfo从结构体改为uint32数组
```
This commit is contained in:
昔念
2026-01-20 06:15:55 +08:00
parent fcb55d3a46
commit 07d25b3e96
15 changed files with 255 additions and 82 deletions

View File

@@ -2,6 +2,7 @@ package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/fight"
"blazing/logic/service/friend"
"blazing/logic/service/player"
)
@@ -15,3 +16,53 @@ func (h Controller) GetOnlineFriends(data *friend.SeeOnlineInboundInfo, c *playe
result.Friends = make([]friend.OnlineInfo, 0)
return
}
// FriendAdd 处理添加好友请求
// data: 包含要添加好友的用户ID
// c: 当前玩家对象
// 返回: 无数据内容的响应和错误码
func (h Controller) FriendAdd(data *friend.FriendAddInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
v, ok := c.GetSpace().User.Load(data.UserID)
if ok {
v.SendPackCmd(8001, friend.InformMessage{
UserID: c.Info.UserID,
Nick: c.Info.Nick,
Type: data.Head.CMD,
})
}
return
}
// FriendAnswer 处理好友请求的回复
// data: 包含发起好友请求的用户ID和回复标志(1为同意0为拒绝)
// c: 当前玩家对象
// 返回: 无数据内容的响应和错误码
func (h Controller) FriendAnswer(data *friend.FriendAnswerInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
v, ok := c.GetSpace().User.Load(data.UserID)
if ok {
v.SendPackCmd(8001, friend.InformMessage{
UserID: c.Info.UserID,
Nick: c.Info.Nick,
Type: data.Head.CMD,
Accept: data.Flag,
})
v.(*player.Player).Service.Friend.Add(c.Info.UserID)
c.Service.Friend.Add(data.UserID)
}
return
}
// FriendRemove 删除好友
// data: 包含要删除的好友ID
// c: 当前玩家对象
// 返回: 无数据内容的响应和错误码
func (h Controller) FriendRemove(data *friend.FriendRemoveInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
c.Service.Friend.Del(data.UserID)
return
}