From 6aa9298974050712e4d15ae7eb78883c021942e8 Mon Sep 17 00:00:00 2001 From: zpc Date: Tue, 10 Dec 2024 14:51:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/MonitorController.cs | 11 +++++++- .../CloudGaming.Code/Monitor/MonitorBLL.cs | 26 +++++++++++++++++++ .../Redis/RedisConnection.cs | 4 +-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs b/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs index 5c589e1..d2872e6 100644 --- a/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs +++ b/src/CloudGaming/Api/CloudGaming.ExtApi/Controllers/MonitorController.cs @@ -49,5 +49,14 @@ public class MonitorController : CloudGamingControllerBase return await new MonitorBLL(ServiceProvider).GetAppMonitorHourAsync(startTimeStamp, endTimeStamp); } - + /// + /// 获取当前在线人数 + /// + /// + [HttpGet] + public async Task> GetCurrentOnlineUsers() + { + return await new MonitorBLL(ServiceProvider).GetCurrentOnlineUsers(); + } + } diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs index 9ba8afa..8a26d1c 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs @@ -1,4 +1,7 @@ +using CloudGaming.Code.Account; +using CloudGaming.Code.AppExtend; using CloudGaming.Code.DataAccess; +using CloudGaming.DtoModel.Account.User; using CloudGaming.DtoModel.Other; using Microsoft.Win32; @@ -193,5 +196,28 @@ public class MonitorBLL : CloudGamingBase { } + /// + /// 获取当前在线人数列表 + /// + /// + public async Task> GetCurrentOnlineUsers() + { + //今日登录人数 + //RedisCache.StringGet<> + //var todayLoggedInUsers = await cloudGamingBase.Dao.DaoExt.Context.T_User_LoginDay_Log.Where(it => it.CreateTimeDay == day).CountAsync(); + var currentOnlineUsers = await RedisServerCache.ScanKeysAsync($"{AccountExtend.UserInfoRedisKeyPrefix}:*"); + //currentOnlineUsers. + List userInfoCaches = new List(); + foreach (var userKey in currentOnlineUsers) + { + var userInfoCache = await RedisCache.StringGetAsync(userKey); + if (userInfoCache != null) + { + userInfoCaches.Add(new { userInfoCache.UserId, userInfoCache.IsPay, userInfoCache.Diamond, userInfoCache.NickName, userInfoCache.PhoneNum }); + } + } + return userInfoCaches; + } + } diff --git a/src/CloudGaming/Utile/HuanMeng.DotNetCore/Redis/RedisConnection.cs b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Redis/RedisConnection.cs index 54339b2..47b8425 100644 --- a/src/CloudGaming/Utile/HuanMeng.DotNetCore/Redis/RedisConnection.cs +++ b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Redis/RedisConnection.cs @@ -248,7 +248,7 @@ end /// /// /// - public static List ScanKeys(this IServer server, string pattern, int pageSize = 100) + public static List ScanKeys(this IServer server, string pattern, int pageSize = 1000) { var matchingKeys = server.Keys(pattern: pattern, pageSize: pageSize).Select(it => it.ToString()).ToList(); return matchingKeys; @@ -261,7 +261,7 @@ end /// 每次扫描的页大小 /// 数据库编号,默认值为 -1 表示全部数据库 /// 匹配的键的字符串列表 - public static async Task> ScanKeysAsync(this IServer server, string pattern, int pageSize = 100, int database = -1) + public static async Task> ScanKeysAsync(this IServer server, string pattern, int pageSize = 1000, int database = -1) { var matchingKeys = new List();