From 388073bf3dfe636a9e4ea8173883c10e1b7f5c3c Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Tue, 6 Feb 2024 16:41:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hunting/api_ranklist.go | 34 ++++++++++++++++++++------------ modules/viking/api_ranklist.go | 35 +++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/modules/hunting/api_ranklist.go b/modules/hunting/api_ranklist.go index 4b897731d..913999b5e 100644 --- a/modules/hunting/api_ranklist.go +++ b/modules/hunting/api_ranklist.go @@ -18,11 +18,12 @@ func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.HuntingRan func (this *apiComp) RankList(session comm.IUserSession, req *pb.HuntingRankListReq) (errdata *pb.ErrorData) { var ( - fRank []*pb.DBHuntingRank - uids []string - err error - ranks []*pb.DBHuntingRecord - players []*pb.DBHuntingRank + fRank []*pb.DBHuntingRank + uids []string + err error + ranks []*pb.DBHuntingRecord + ranksMap map[string]*pb.DBHuntingRecord + players []*pb.DBHuntingRank ) if errdata = this.RankListCheck(session, req); errdata != nil { return // 参数校验失败直接返回 @@ -43,15 +44,22 @@ func (this *apiComp) RankList(session comm.IUserSession, req *pb.HuntingRankList } return } - players = make([]*pb.DBHuntingRank, len(ranks)) - for i, v := range ranks { - players[i] = &pb.DBHuntingRank{ - Uinfo: v.Uinfo, - Line: v.Data[req.BoosType].Line[v.Data[req.BoosType].Maxnandu], - Difficulty: v.Data[req.BoosType].Maxnandu, - Bosstype: req.BoosType, - Costtime: v.Data[req.BoosType].Costime[v.Data[req.BoosType].Maxnandu], + ranksMap = make(map[string]*pb.DBHuntingRecord) + for _, v := range ranks { + ranksMap[v.Uid] = v + } + players = make([]*pb.DBHuntingRank, 0, len(uids)) + for _, v := range uids { + if player, ok := ranksMap[v]; ok { + players = append(players, &pb.DBHuntingRank{ + Uinfo: player.Uinfo, + Line: player.Data[req.BoosType].Line[player.Data[req.BoosType].Maxnandu], + Difficulty: player.Data[req.BoosType].Maxnandu, + Bosstype: req.BoosType, + Costtime: player.Data[req.BoosType].Costime[player.Data[req.BoosType].Maxnandu], + }) } + } session.SendMsg(string(this.module.GetType()), HuntingRankListResp, &pb.HuntingRankListResp{ Ranks: players, diff --git a/modules/viking/api_ranklist.go b/modules/viking/api_ranklist.go index c87101e63..df71c2759 100644 --- a/modules/viking/api_ranklist.go +++ b/modules/viking/api_ranklist.go @@ -18,11 +18,12 @@ func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.VikingRank func (this *apiComp) RankList(session comm.IUserSession, req *pb.VikingRankListReq) (errdata *pb.ErrorData) { var ( - fRank []*pb.DBVikingRank - uids []string - err error - ranks []*pb.DBVikingRecord - players []*pb.DBVikingRank + fRank []*pb.DBVikingRank + uids []string + err error + ranks []*pb.DBVikingRecord + ranksMap map[string]*pb.DBVikingRecord + players []*pb.DBVikingRank ) if errdata = this.RankListCheck(session, req); errdata != nil { return // 参数校验失败直接返回 @@ -43,15 +44,23 @@ func (this *apiComp) RankList(session comm.IUserSession, req *pb.VikingRankListR } return } - players = make([]*pb.DBVikingRank, len(ranks)) - for i, v := range ranks { - players[i] = &pb.DBVikingRank{ - Uinfo: v.Uinfo, - Line: v.Data[req.BoosType].Line[v.Data[req.BoosType].Maxnandu], - Difficulty: v.Data[req.BoosType].Maxnandu, - Bosstype: req.BoosType, - Costtime: v.Data[req.BoosType].Costime[v.Data[req.BoosType].Maxnandu], + ranksMap = make(map[string]*pb.DBVikingRecord) + for _, v := range ranks { + ranksMap[v.Uid] = v + } + + players = make([]*pb.DBVikingRank, 0, len(uids)) + for _, v := range uids { + if player, ok := ranksMap[v]; ok { + players = append(players, &pb.DBVikingRank{ + Uinfo: player.Uinfo, + Line: player.Data[req.BoosType].Line[player.Data[req.BoosType].Maxnandu], + Difficulty: player.Data[req.BoosType].Maxnandu, + Bosstype: req.BoosType, + Costtime: player.Data[req.BoosType].Costime[player.Data[req.BoosType].Maxnandu], + }) } + } // 获取好友数据