From 2a6cfa386c60380d5e3d2a6ac450f1fd21c0eede Mon Sep 17 00:00:00 2001 From: 王家文 Date: Wed, 15 May 2024 15:07:57 +0800 Subject: [PATCH] feat✨:排行榜功能 --- service/roomrank/logic.go | 7 +++++++ service/roomrank/room.go | 21 ++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/service/roomrank/logic.go b/service/roomrank/logic.go index b777292..78fff49 100644 --- a/service/roomrank/logic.go +++ b/service/roomrank/logic.go @@ -34,6 +34,13 @@ func ActivityTimeToDate(activityTime int64) (year int, month time.Month, day int return } +func GetTimeEnd(activityTime int64, releaseTime string) time.Time { + dtYear, dtMonth, dtDay := ActivityTimeToDate(activityTime) + hour, min, sec := ztime.TimeClock(releaseTime) + dt := time.Date(dtYear, dtMonth, dtDay, hour, min, sec, 0, time.Local) + return dt +} + // TrySettle 尝试判断结算 func TrySettle(gameId string, topType int, player *Player, config *confroomrank.ActivityConfig, activityTime int64) (hasChange bool) { hasChange = false diff --git a/service/roomrank/room.go b/service/roomrank/room.go index cadf8d5..33021ce 100644 --- a/service/roomrank/room.go +++ b/service/roomrank/room.go @@ -6,11 +6,9 @@ import ( "apigame/service-common/svmysql" "apigame/util/util-lx/lxalilog" "apigame/util/util-lx/lxtime" - "apigame/util/ztime" "math" "math/rand" "sort" - "time" ) func tryInitRoom(gameId string, room *Room) { @@ -97,7 +95,7 @@ func TryGetRoom(gameId string, topType int, player *Player, config *confroomrank room, hasRoom = LoadRoom(gameId, topType, config.Id, player.RoomUid) if hasRoom { if confRoom, hasConfRoom := config.Room[room.ConfigId]; hasConfRoom { - TryCloseRoom(gameId, room, confRoom) + TryCloseRoom(gameId, room, config, confRoom) } return } @@ -122,7 +120,7 @@ func TryGetRoom(gameId string, topType int, player *Player, config *confroomrank if has { for i := 0; i < len(rooms); i++ { roomTemp := rooms[i] - TryCloseRoom(gameId, roomTemp, roomConfig) + TryCloseRoom(gameId, roomTemp, config, roomConfig) if roomTemp.Closed { continue } @@ -166,12 +164,13 @@ func PlayerJoinRoom(room *Room, player *Player) { } // TryCloseRoom 尝试关闭房间 -func TryCloseRoom(gameId string, room *Room, roomConfig confroomrank.RoomConfig) { +func TryCloseRoom(gameId string, room *Room, config *confroomrank.ActivityConfig, roomConfig confroomrank.RoomConfig) { if room.Closed { return } secNow := lxtime.NowUninx() - if secNow > room.ActivityTime-RoomCloseSecond { + dateEnd := GetTimeEnd(room.ActivityTime, config.ReleaseTime) + if secNow > dateEnd.Unix()-RoomCloseSecond { room.Closed = true // 根据缺口自动填充机器人 for i := 0; i < len(roomConfig.PlayerTypeCount); i++ { @@ -225,11 +224,9 @@ func TrySettleRoom(gameId string, room *Room, confActivity *confroomrank.Activit if room.ActivityId != confActivity.Id { needSettle = true } else { - dtYear, dtMonth, dtDay := ActivityTimeToDate(room.ActivityTime) - hour, min, sec := ztime.TimeClock(confActivity.ReleaseTime) - dt := time.Date(dtYear, dtMonth, dtDay, hour, min, sec, 0, time.Local) + dateEnd := GetTimeEnd(room.ActivityTime, confActivity.ReleaseTime) dtNow := lxtime.NowUninx() - if dtNow >= dt.Unix() { + if dtNow >= dateEnd.Unix() { needSettle = true } } @@ -264,9 +261,7 @@ func TryResetRobot(room *Room, config *confroomrank.ActivityConfig) { room.ResetRobotTime = secNow percent := float64(0) - dtYear, dtMonth, dtDay := ActivityTimeToDate(room.ActivityTime) - hour, min, sec := ztime.TimeClock(config.ReleaseTime) - dateEnd := time.Date(dtYear, dtMonth, dtDay, hour, min, sec, 0, time.Local) + dateEnd := GetTimeEnd(room.ActivityTime, config.ReleaseTime) dateStart := dateEnd.AddDate(0, 0, -1) dtStart := dateStart.Unix() dtEnd := dateEnd.Unix() -- libgit2 0.21.0