From 2ed2e73dc2d448db2e99ead186d0de54bc89bd9e Mon Sep 17 00:00:00 2001 From: 王家文 Date: Fri, 10 May 2024 15:00:37 +0800 Subject: [PATCH] feat✨:排行活动增加了积分限制 --- service/roomrank/handle.go | 38 ++++++++++++++++++++++++-------------- service/roomrank/room.go | 24 ------------------------ 2 files changed, 24 insertions(+), 38 deletions(-) diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index 662b232..cbca1c2 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -69,12 +69,16 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan return } - // 尝试找到旧房间 并获取原来的积分 这里主要是为了兼容之前版本没有积分要求的设置 - { - _, hasOldRoom, scoreOld := TryGetOldRoomScore(gameId, req.TopType, player, config) - if hasOldRoom { - player.Score = scoreOld + needSavePlayer := false + defer func() { + if needSavePlayer { + SavePlayer(gameId, player) } + }() + if player.ActivityId != config.Id { + player.ActivityId = config.Id + player.RoomUid = 0 + needSavePlayer = true } // 判断玩家积分 @@ -90,6 +94,8 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan code = code_msg.RECODE_MERGE_CONFIG_ERROR return } + + needSavePlayer = true TryReSort(room, config) SavePlayer(gameId, player) SaveRoom(gameId, room) @@ -204,17 +210,22 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs return } - // 尝试找到旧房间 并获取原来的积分 这里主要是为了兼容之前版本没有积分要求的设置 - { - _, hasOldRoom, scoreOld := TryGetOldRoomScore(gameId, req.TopType, player, config) - if hasOldRoom { - player.Score = scoreOld + needSavePlayer := false + defer func() { + if needSavePlayer { + SavePlayer(gameId, player) } + }() + if player.ActivityId != config.Id { + player.ActivityId = config.Id + player.RoomUid = 0 + needSavePlayer = true } oldScore := player.Score player.Score += req.AddScore newScore := player.Score + needSavePlayer = true // 记录日志 recordBase := NewRecordBase(player.Uid, req.TopType, config.Id) SaveRecordAddScore(gameId, NewRecordAddScore(recordBase, req.AddScore, oldScore, newScore)) @@ -228,15 +239,14 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs // 尝试加入房间 room, hasRoom, firstJoin := TryGetRoom(gameId, req.TopType, player, config, playerLevel) - // 房间排行增加积分 - UpdatePlayerScore(room, player) - if !hasRoom { code = code_msg.RECODE_MERGE_CONFIG_ERROR return } + + // 房间排行增加积分 + UpdatePlayerScore(room, player) TryReSort(room, config) - SavePlayer(gameId, player) SaveRoom(gameId, room) rsp.RoomRankInfo = GetInfoFromRoom(gameId, player, room, config) diff --git a/service/roomrank/room.go b/service/roomrank/room.go index 4b4e83b..491bd04 100644 --- a/service/roomrank/room.go +++ b/service/roomrank/room.go @@ -86,34 +86,10 @@ func FindRoom(gameId string, topType int, activityId int64, roomConfigId int) (r return } -// TryGetOldRoomScore 尝试获取旧房间里的积分 -func TryGetOldRoomScore(gameId string, topType int, player *Player, config *confroomrank.ActivityConfig) (room *Room, hasOldRoom bool, scoreOld int64) { - hasOldRoom = false - if player.ActivityId != config.Id { - player.ActivityId = config.Id - player.RoomUid = 0 - return - } - // 查找玩家所在的房间 - room, hasOldRoom = LoadRoom(gameId, topType, config.Id, player.RoomUid) - for i := 0; i < len(room.Details.Players); i++ { - p := room.Details.Players[i] - if player.Uid == p.Uid { - scoreOld = p.Score - break - } - } - return -} - // TryGetRoom 尝试获取房间 func TryGetRoom(gameId string, topType int, player *Player, config *confroomrank.ActivityConfig, playerLevel int) (room *Room, hasRoom bool, firstJoin bool) { hasRoom = false firstJoin = false - if player.ActivityId != config.Id { - player.ActivityId = config.Id - player.RoomUid = 0 - } // 查找玩家所在的房间 room, hasRoom = LoadRoom(gameId, topType, config.Id, player.RoomUid) if hasRoom { -- libgit2 0.21.0