From e446f3e5ec28e527c1b72153bfbe872a9e5acbe0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 9 Apr 2024 19:59:48 +0800 Subject: [PATCH] 1 --- server/imserver_new/player/player.go | 38 +++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/server/imserver_new/player/player.go b/server/imserver_new/player/player.go index df9d6a74..ecfa14e2 100644 --- a/server/imserver_new/player/player.go +++ b/server/imserver_new/player/player.go @@ -373,10 +373,46 @@ func (this *player) CMGuildInfo(hdr *f5.MsgHdr, msg *cs.CMGuildInfo) { func (this *player) CMRecommendGuildList(hdr *f5.MsgHdr, msg *cs.CMRecommendGuildList) { rspMsg := new(cs.SMRecommendGuildList) + q5.NewSlice(&rspMsg.RecommendGuilds, 0, 50) GetGuildMgr().AsyncGetRecommendGuild( 0, func (errCode int32, errMsg string, guildIds []string) { - this.SendMsg(rspMsg) + if errCode != 0 { + this.SendMsg(rspMsg.Err(1, "server internal error")) + return + } + if len(guildIds) <= 0 { + this.SendMsg(rspMsg) + return + } + i := 0 + f5.NewAsyncTask( + func (task* f5.AsyncTask) { + doNextFunc := func() { + if i + 1 < len(guildIds) { + i++ + task.Continue() + } else { + this.SendMsg(rspMsg) + } + } + guild := GetGuildMgr().GetGuildByGuildId(guildIds[i]) + if guild == nil { + doNextFunc() + } else { + pbGuild := new(cs.MFGuild) + guild.AsyncFillMFGuild( + pbGuild, + func (errCode int32, errMsg string) { + if errCode != 0 { + this.SendMsg(rspMsg.Err(1, "server internal error")) + return + } + q5.AppendSlice(&rspMsg.RecommendGuilds, pbGuild) + doNextFunc() + }) + } + }) }) }