From 0817ab1300e37a5aa7d86e5e20eef7ecda8d9ec6 Mon Sep 17 00:00:00 2001 From: zpc Date: Sun, 8 Dec 2024 02:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=91=E6=8E=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CloudGaming.Code/Monitor/MonitorBLL.cs | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs index b124951..89c1f61 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs @@ -129,32 +129,51 @@ public class MonitorBLL : CloudGamingBase //结束时间 var endDate = DateTimeOffset.FromUnixTimeSeconds(endTimeStamp).ToLocalTime().DateTime; var curr = startDate; - var list = await Dao.DaoExt.Context.T_App_Channel.Where(it => !string.IsNullOrEmpty(it.ChannelId)).Select(it => it.ChannelId).ToListAsync(); + var list = await Dao.DaoExt.Context.T_App_Channel.Where(it => !string.IsNullOrEmpty(it.ChannelId)).ToListAsync(); int startDateHour = int.Parse(startDate.ToString("yyyyMMddHH")); int endDateHour = int.Parse(endDate.ToString("yyyyMMddHH")); var userStatisticsList = await Dao.DaoExt.Context.T_Statistics_UserHour.Where(it => it.LoginHour >= startDateHour && it.LoginHour <= endDateHour).ToListAsync(); + + var gameStatisticsList = await Dao.DaoExt.Context.T_Statistics_GameHour.Where(it => it.LoginHour >= startDateHour && it.LoginHour <= endDateHour).ToListAsync(); List userLogin = new List(); List userRegistr = new List(); + List playGame = new List(); + List playTimeGame = new List(); while (curr <= endDate) { + var loginAll = GetStatisticsDto(curr, "全部", 0); var registrAll = GetStatisticsDto(curr, "全部", 0); + var gameAll = GetStatisticsDto(curr, "全部", 0); + var gameTimeAll = GetStatisticsDto(curr, "全部", 0); + // 添加 "全部" 统计到结果 userLogin.Add(loginAll); userRegistr.Add(registrAll); + playGame.Add(gameAll); + playTimeGame.Add(gameTimeAll); int dayHour = int.Parse(curr.ToString("yyyyMMddHH")); - foreach (var channelId in list) + foreach (var channel in list) { + var channelId = channel.ChannelId; var statis = userStatisticsList.FirstOrDefault(it => it.LoginHour == dayHour && it.Channel == channelId); + var gameStatis = gameStatisticsList.FirstOrDefault(it => it.LoginHour == dayHour && it.Channel == channelId); + var _loginCount = statis?.LoginCount ?? 0; var _registrCount = statis?.RegistrCount ?? 0; + var _playGameCount = gameStatis?.PlayGameCount ?? 0; + var _playGameTimeCount = gameStatis?.PlayGameTimeCount ?? 0; loginAll.Value += _loginCount; registrAll.Value += _registrCount; - userLogin.Add(GetStatisticsDto(curr, channelId, _loginCount)); - userRegistr.Add(GetStatisticsDto(curr, channelId, _registrCount)); + gameAll.Value += _playGameCount; + gameTimeAll.Value += _playGameTimeCount; + userLogin.Add(GetStatisticsDto(curr, channel.Name, _loginCount)); + userRegistr.Add(GetStatisticsDto(curr, channel.Name, _registrCount)); + playGame.Add(GetStatisticsDto(curr, channel.Name, _playGameCount)); + playTimeGame.Add(GetStatisticsDto(curr, channel.Name, _playGameTimeCount)); } curr = curr.AddHours(1); } - return new { Login = userLogin, Registr = userRegistr }; + return new { Login = userLogin, Registr = userRegistr, PlayGame = playGame, PlayTimeGame = playTimeGame }; } private StatisticsDto GetStatisticsDto(DateTime curr, string channelId, int count)