diff --git a/gamesrv/base/gamedetail.go b/gamesrv/base/gamedetail.go index 9b43209..b41779d 100644 --- a/gamesrv/base/gamedetail.go +++ b/gamesrv/base/gamedetail.go @@ -223,10 +223,11 @@ func (s *SaveGameDetailedCopy) Save() { } } -// LabaLog 拉霸缓存游戏记录 +// LabaLog 拉霸缓存游戏记录,为了统计游戏时长 type LabaLog struct { PlayerListLog *SaveGamePlayerListLogCopy GameDetailLog *SaveGameDetailedCopy + CacheTime time.Time // 缓存时间 } // Cache 临时缓存 @@ -238,13 +239,31 @@ func (l *LabaLog) Cache(s *Scene, detailLog *SaveGameDetailedParam, playerListLo playerListLog.OnlyLog = true l.GameDetailLog = s.SaveGameDetailedLog(detailLog) l.PlayerListLog = s.SaveGamePlayerListLog(playerListLog) + l.CacheTime = time.Now() } // Save 保存 -func (l *LabaLog) Save(f func(log *LabaLog)) { - f(l) - l.PlayerListLog.Save() - l.GameDetailLog.Save() +func (l *LabaLog) Save(second int32) { + if second <= 0 { + second = int32(time.Now().Sub(l.CacheTime).Seconds()) + } + + if l.PlayerListLog != nil { + if l.PlayerListLog.UpLog != nil { + for _, v := range l.PlayerListLog.UpLog.Log { + v.GamingTime = second + } + } + l.PlayerListLog.Save() + } + + if l.GameDetailLog != nil { + for _, v := range l.GameDetailLog.Log { + v.GameTiming = second + } + l.GameDetailLog.Save() + } + l.Clear() } @@ -252,4 +271,5 @@ func (l *LabaLog) Save(f func(log *LabaLog)) { func (l *LabaLog) Clear() { l.PlayerListLog = nil l.GameDetailLog = nil + l.CacheTime = time.Time{} }