From 7194495268a93d03ad9449818a65fde18b569bc4 Mon Sep 17 00:00:00 2001 From: 王家文 Date: Thu, 30 May 2024 17:53:44 +0800 Subject: [PATCH] feat✨:排行榜功能 发送已结算的排行榜信息 --- models/roomrank.go | 9 +++++---- service/roomrank/handle.go | 12 ++++++++++++ service/roomrank/player.go | 23 +++++++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/models/roomrank.go b/models/roomrank.go index 9619ede..f4dd257 100644 --- a/models/roomrank.go +++ b/models/roomrank.go @@ -64,10 +64,11 @@ type ReqRoomRankGetSettleAward struct { // RspRoomRankGetSettleAward 返回 领取上期结算奖励 type RspRoomRankGetSettleAward struct { - SettleRank int `form:"settle_rank" json:"settle_rank"` // 结算名次 - SettleScore int64 `form:"settle_score" json:"settle_score"` // 结算分数 - UserClass int `form:"user_class" json:"user_class"` // 用户评级 - AwardText string `form:"award_text" json:"award_text"` // 上期结算奖励内容 + SettleRank int `form:"settle_rank" json:"settle_rank"` // 结算名次 + SettleScore int64 `form:"settle_score" json:"settle_score"` // 结算分数 + UserClass int `form:"user_class" json:"user_class"` // 用户评级 + AwardText string `form:"award_text" json:"award_text"` // 上期结算奖励内容 + Tops []RoomRankTopNode `form:"tops" json:"tops"` // 排行榜数据列表 } // ReqRoomRankAddScore 请求 房间排行增加积分 diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index 0a64cc1..142c7de 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -161,6 +161,18 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r } /* ----- 结算 End -----*/ + // 尝试发送已结算的排行榜信息 + { + confActivity, hasConfActivity := confroomrank.GetConfig(gameId, player.ActivityId) + if hasConfActivity { + // 查找玩家所在的房间 + room, hasRoom := TryGetRoom(gameId, req.TopType, player, confActivity) + if hasRoom { + rsp.Tops = GetTopsInfoFromRoom(room, confActivity) + } + } + } + oldActivityId := player.ActivityId // 领取奖励 diff --git a/service/roomrank/player.go b/service/roomrank/player.go index 36fe75c..88fe401 100644 --- a/service/roomrank/player.go +++ b/service/roomrank/player.go @@ -131,3 +131,26 @@ func GetInfoFromRoom(gameId string, player *Player, room *Room, config *confroom info.RobotAvatarPath = svcommon.GetAvatarPath(gameId) return info } + +func GetTopsInfoFromRoom(room *Room, config *confroomrank.ActivityConfig) []models.RoomRankTopNode { + info := make([]models.RoomRankTopNode, 0) + for i := 0; i < len(room.Details.Players); i++ { + p := room.Details.Players[i] + rank := i + 1 + node := models.RoomRankTopNode{ + Rank: rank, + Uid: p.Uid, + Score: p.Score, + Name: p.Name, + Icon: p.Icon, + IsRobot: p.IsRobot(), + } + if confRoom, hasConfRoom := config.Room[room.ConfigId]; hasConfRoom { + if confAward, hasConfAward := confRoom.Awards[zconvert.IntToStr(rank)]; hasConfAward { + node.Award = confAward + } + } + info = append(info, node) + } + return info +} -- libgit2 0.21.0