From f80a0c21c9e458d48a634202a2dec4f280b74741 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 23 Mar 2024 10:35:56 +0800 Subject: [PATCH] 1 --- server/imserver_new/common/types.go | 1 + server/imserver_new/friend/friendmgr.go | 14 ++++++++++++++ server/imserver_new/player/player.go | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/server/imserver_new/common/types.go b/server/imserver_new/common/types.go index 915b67f5..f81e650a 100644 --- a/server/imserver_new/common/types.go +++ b/server/imserver_new/common/types.go @@ -57,6 +57,7 @@ type PlayerMgr interface { type FriendMgr interface { IsFriend(string, string) bool GetFriendList(string) []string + GetBlackList(string) []string AsyncGetApplyList(int64, string, func(int32, string, int64, []string)) } diff --git a/server/imserver_new/friend/friendmgr.go b/server/imserver_new/friend/friendmgr.go index e6722f48..90e7b16e 100644 --- a/server/imserver_new/friend/friendmgr.go +++ b/server/imserver_new/friend/friendmgr.go @@ -69,6 +69,20 @@ func (this *FriendMgr) GetFriendList(accountId string) []string { return friendList } +func (this *FriendMgr) GetBlackList(accountId string) []string { + blackList := []string{} + /* + this.TraverseFriend( + accountId, + func (friendId string, addTime int32) bool { + ele := q5.NewSliceElement(&friendList) + *ele = friendId + return true + }) + */ + return blackList +} + func (this *FriendMgr) getFriends(accountId string) *map[string]int32 { if friends, ok := this.friendHash[accountId]; ok { return friends diff --git a/server/imserver_new/player/player.go b/server/imserver_new/player/player.go index bc4a4fb9..3a0cab0d 100644 --- a/server/imserver_new/player/player.go +++ b/server/imserver_new/player/player.go @@ -141,6 +141,24 @@ func (this *player) CMListFriend(hdr *f5.MsgHdr, msg *cs.CMListFriend) { } func (this *player) CMBlacklist(hdr *f5.MsgHdr, msg *cs.CMBlacklist) { + blackList := GetFriendMgr().GetBlackList(this.GetAccountId()) + GetCacheMgr().AsyncGetUsers( + blackList, + func (errCode int32, errMsg string) { + rspMsg := new(cs.SMBlacklist) + if errCode != 0 { + this.SendMsg(rspMsg.Err(1, "internal server error")) + return + } + for _, accountId := range(blackList) { + userProfile := GetCacheMgr().GetUserProfile(accountId) + if userProfile != nil { + ele := q5.NewSliceElement(&rspMsg.Users) + userProfile.FillMFUser(*ele) + } + } + this.SendMsg(rspMsg) + }) } func (this *player) CMAddFriendRequest(hdr *f5.MsgHdr, msg *cs.CMAddFriendRequest) {