diff --git a/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs b/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs
index 6df0653..bc88026 100644
--- a/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs
+++ b/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs
@@ -26,4 +26,15 @@ public class MonitorController : CloudGamingControllerBase
{
return new MonitorBLL(ServiceProvider).GetAppMonitorInfo();
}
+ ///
+ /// 获取用户登录数据
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ public async Task GetActiveUserCount([FromQuery] long startTimeStamp = 0, [FromQuery] long endTimeStamp = 0)
+ {
+ return await new MonitorBLL(ServiceProvider).GetActiveUserCount(startTimeStamp, endTimeStamp);
+ }
}
diff --git a/src/CloudGaming/Api/CloudGaming.ExtApi/Program.cs b/src/CloudGaming/Api/CloudGaming.ExtApi/Program.cs
index fc1cda5..93cdb25 100644
--- a/src/CloudGaming/Api/CloudGaming.ExtApi/Program.cs
+++ b/src/CloudGaming/Api/CloudGaming.ExtApi/Program.cs
@@ -3,6 +3,7 @@ using CloudGaming.Code.DataAccess.MultiTenantUtil;
using CloudGaming.Code.Filter;
using CloudGaming.Code.Game;
using CloudGaming.Code.Monitor;
+using CloudGaming.GameModel.Db.Db_Ext;
using HuanMeng.DotNetCore.CustomExtension;
using HuanMeng.DotNetCore.MiddlewareExtend;
@@ -40,6 +41,20 @@ builder.Services.AddSingleton(typeof(ILogger), serviceProvi
return loggerFactory.CreateLogger();
});
#endregion
+#region automap
+var mapperDomain = AppDomain.CurrentDomain.GetAssemblies().Where(it => it.FullName.Contains("HuanMeng") || it.FullName.Contains("CloudGaming.")).ToList();
+Type type = typeof(T_App_Config);
+if (type != null)
+{
+ Assembly assembly = Assembly.GetAssembly(type);
+ if (!mapperDomain.Any(it => it.FullName == assembly.FullName))
+ {
+ mapperDomain.Add(assembly);
+ }
+}
+
+builder.Services.AddAutoMapper(mapperDomain);
+#endregion
#region 添加跨域
var _myAllowSpecificOrigins = "_myAllowSpecificOrigins";
builder.Services.AddCustomCors(_myAllowSpecificOrigins);
diff --git a/src/CloudGaming/Api/CloudGaming.PayApi/appsettings.Development.json b/src/CloudGaming/Api/CloudGaming.PayApi/appsettings.Development.json
index 9335132..3136758 100644
--- a/src/CloudGaming/Api/CloudGaming.PayApi/appsettings.Development.json
+++ b/src/CloudGaming/Api/CloudGaming.PayApi/appsettings.Development.json
@@ -10,7 +10,7 @@
"secret": "95BB717C61D1ECB0E9FB82C932CC77FF",
"nodes": "http://124.220.55.158:94", //多个节点使用逗号分隔
"url": "http://124.220.55.158:94",
- "env": "DEV",
+ "env": "TEST",
"name": "payClient",
"UserName": "admin",
"Password": "dbt@com@1234"
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs
index 2b490d0..fa65a5c 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs
@@ -1,5 +1,7 @@
using CloudGaming.DtoModel.Other;
+using Microsoft.Win32;
+
using System;
using System.Collections;
using System.Collections.Generic;
@@ -7,6 +9,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using static SKIT.FlurlHttpClient.Wechat.TenpayV3.Models.CreateNewTaxControlFapiaoApplicationRequest.Types.Fapiao.Types;
+
namespace CloudGaming.Code.Monitor;
///
@@ -31,7 +35,7 @@ public class MonitorBLL : CloudGamingBase
/// 获取近一月活跃人数统计
///
///
- public async Task GetActiveUserCount(long startTimeStamp = 0, long endTimeStamp = 0)
+ public async Task GetActiveUserCount(long startTimeStamp = 0, long endTimeStamp = 0)
{
if (endTimeStamp == 0)
{
@@ -47,12 +51,50 @@ public class MonitorBLL : CloudGamingBase
DateOnly endDate = DateOnly.FromDateTime(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(endTimeStamp));
DateOnly curr = startDate;
var userStatisticsList = await Dao.DaoExt.Context.T_Statistics_User.Where(it => it.LoginDate > startDate && it.LoginDate < endDate).ToListAsync();
+ var channels = userStatisticsList.GroupBy(it => it.Channel).Select(it => it.Key).ToList();
+ List userLogin = new List();
+ List userRegistr = new List();
+ List userActive = new List();
+
while (curr <= endDate)
{
int day = int.Parse(curr.ToString("yyyyMMdd"));
+ var _Statistics_Users = userStatisticsList.Where(it => it.LoginDate == curr).OrderBy(it => it.Channel).ToList();
+ var statisticsDtoUserList = new List();
+ var statisticsDtoRegistrList = new List();
+ var statisticsDtoActiveList = new List();
- curr.AddDays(1);
+ var currDateStr = curr.ToString("MM月dd号");
+ StatisticsDto _UserLogin = new StatisticsDto(currDateStr, 0, "全部");
+ StatisticsDto _userRegistr = new StatisticsDto(currDateStr, 0, "全部");
+ StatisticsDto _userActive = new StatisticsDto(currDateStr, 0, "全部");
+ foreach (var _channel in channels)
+ {
+ var item = _Statistics_Users.FirstOrDefault(it => it.Channel == _channel);
+ if (item == null)
+ {
+ item = new T_Statistics_User();
+ }
+ _UserLogin.Value += item.LoginCount;
+ _userRegistr.Value += item.RegistrCount;
+ _userActive.Value += item.ActiveCount;
+ //item.ActiveCount
+ statisticsDtoUserList.Add(new StatisticsDto(currDateStr, item.LoginCount, item.Channel));
+
+ statisticsDtoRegistrList.Add(new StatisticsDto(currDateStr, item.RegistrCount, item.Channel));
+ statisticsDtoActiveList.Add(new StatisticsDto(currDateStr, item.ActiveCount, item.Channel));
+
+ }
+ userLogin.Add(_UserLogin);
+ userLogin.AddRange(statisticsDtoUserList);
+ userRegistr.Add(_userRegistr);
+ userRegistr.AddRange(statisticsDtoRegistrList);
+ userActive.Add(_userActive);
+ userActive.AddRange(statisticsDtoActiveList);
+
+ curr = curr.AddDays(1);
}
+ return new { Login = userLogin, Registr = userRegistr, Active = userActive };
}
///
@@ -72,3 +114,4 @@ public class MonitorBLL : CloudGamingBase
}
}
+
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/Other/StatisticsDto.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/Other/StatisticsDto.cs
new file mode 100644
index 0000000..e520536
--- /dev/null
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/Other/StatisticsDto.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CloudGaming.DtoModel.Other;
+
+public class StatisticsDto
+{
+ public string TimeStamp { get; set; }
+ public int Value { get; set; }
+ public string Category { get; set; }
+
+ public StatisticsDto() { }
+ public StatisticsDto(string timeStamp, int value, string category)
+ {
+ TimeStamp = timeStamp;
+ Value = value;
+ Category = category;
+ }
+
+}