From 79a4e26f4ec9bb8fdd5ae84c45d94e9bb487cb8f Mon Sep 17 00:00:00 2001 From: zpc Date: Mon, 2 Dec 2024 15:55:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AccountController.cs | 12 ++++++ .../Controllers/PlayGameController.cs | 4 +- .../CloudGaming.Code/Account/AccountBLL.cs | 20 ++++++++++ .../CloudGaming.Code/Account/AccountExtend.cs | 37 +++++++++++++++++++ .../Code/CloudGaming.Code/Game/PlayGameBLL.cs | 6 +-- .../CloudGaming.Code/Game/PlayGameExtend.cs | 14 ++++++- .../CloudGaming.Code/Monitor/MonitorBLL.cs | 26 +++++++++++++ .../PlayGame/ExitPlayGameRequest.cs | 21 +++++++++++ .../PlayGame/PlayGameStatus.cs | 6 ++- 9 files changed, 138 insertions(+), 8 deletions(-) create mode 100644 src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ExitPlayGameRequest.cs diff --git a/src/CloudGaming/Api/CloudGaming.Api/Controllers/AccountController.cs b/src/CloudGaming/Api/CloudGaming.Api/Controllers/AccountController.cs index 14c70e4..e6bba4c 100644 --- a/src/CloudGaming/Api/CloudGaming.Api/Controllers/AccountController.cs +++ b/src/CloudGaming/Api/CloudGaming.Api/Controllers/AccountController.cs @@ -107,4 +107,16 @@ public class AccountController : CloudGamingControllerBase AccountBLL account = new AccountBLL(ServiceProvider); return await account.UpdateUserNickName(accountNickNameRequest.NickName); } + + /// + /// 退出app + /// + /// + [HttpGet] + public async Task ExitApp() + { + AccountBLL account = new AccountBLL(ServiceProvider); + await account.ExitApp(); + return true; + } } diff --git a/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs b/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs index f05bfc2..7783bee 100644 --- a/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs +++ b/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs @@ -78,10 +78,10 @@ public class PlayGameController : CloudGamingControllerBase /// [HttpPost] [Authorize] - public async Task> ExitPlayGame([FromBody] GameRequest gameRequest) + public async Task> ExitPlayGame([FromBody] ExitPlayGameRequest gameRequest) { PlayGameBLL playGameBLL = new PlayGameBLL(ServiceProvider, JYApi); - return await playGameBLL.ExitPlayGame(gameRequest.GameId); + return await playGameBLL.ExitPlayGame(gameRequest); } diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountBLL.cs index 8b64dd8..a0b5632 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountBLL.cs @@ -702,5 +702,25 @@ namespace CloudGaming.Code.Account return new BaseResponse(ResponseCode.Success, "", true); } + + /// + /// 退出App + /// + /// + public async Task ExitApp() + { + if (_UserId == 0) + { + return; + } + //redis + var userInfo = await AccountExtend.GetUserInfoOrNull(_UserId, this); + if (userInfo != null) + { + await userInfo.DeleteUserInfoCache(this); + } + + + } } } diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs index 390d879..b02001d 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs @@ -16,6 +16,8 @@ using HuanMeng.DotNetCore.Redis; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models; + using StackExchange.Redis; using Swashbuckle.AspNetCore.SwaggerGen; @@ -110,6 +112,41 @@ namespace CloudGaming.Code.Account return userInfoCache; } + /// + /// 获取用户信息 + /// + /// + /// + /// + public static async Task GetUserInfoOrNull(int userId, CloudGamingBase cloudGamingBase) + { + if (userId == 0) + { + return new UserInfoCache(); + } + string key = GetUserInfoRedisKey(userId); + var userInfo = await cloudGamingBase.RedisCache.StringGetAsync(key); + return userInfo; + } + + /// + /// 删除用户缓存 + /// + /// + /// + /// + public static async Task DeleteUserInfoCache(this UserInfoCache userInfoCache, CloudGamingBase cloudGamingBase) + { + if (userInfoCache == null) + { + return true; + } + + string key = GetUserInfoRedisKey(userInfoCache.UserId); + return await cloudGamingBase.RedisCache.KeyDeleteAsync(key); + + } + /// /// 刷新用户钻石,和是否支付缓存 /// diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs index dbf847d..47726e0 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs @@ -306,14 +306,14 @@ public class PlayGameBLL : CloudGamingBase /// /// /// - public async Task> ExitPlayGame(string gameId) + public async Task> ExitPlayGame(ExitPlayGameRequest gameRequest) { // 检查用户是否已登录 if (_UserId == 0) { throw MessageBox.ErrorShow("请先登录"); } - + var gameId = gameRequest.GameId; // 检查游戏是否存在 var gameCache = Cache.GameEntityCache; var gameInfo = gameCache[gameId]; @@ -335,7 +335,7 @@ public class PlayGameBLL : CloudGamingBase Sn = gameInfoCache.Sn }; var obj = await JYApi.StopGame(playGameQueue); - gameInfoCache.ExitPlayGame(obj); + gameInfoCache.ExitPlayGame(obj, gameRequest); await gameInfoCache.SaveChangesAsync(this); } return new BaseResponse(ResponseCode.Success, "", true); diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs index e6dcdb5..b8c954e 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs @@ -124,7 +124,7 @@ namespace CloudGaming.Code.Game /// /// /// - public static bool ExitPlayGame(this PlayGameUserInfo playGameUserInfo, IJYApiRespnse jYApiRespnse) + public static bool ExitPlayGame(this PlayGameUserInfo playGameUserInfo, IJYApiRespnse jYApiRespnse, ExitPlayGameRequest gameRequest) { if (playGameUserInfo.GameStatus != PlayGameStatus.用户主动结束游戏) @@ -134,8 +134,18 @@ namespace CloudGaming.Code.Game { OperationDateTime = DateTime.Now, Content = "用户主动结束游戏", - ActionId = (int)PlayGameStatus.用户主动结束游戏 + ActionId = (int)PlayGameStatus.用户主动结束游戏, }); + if (!string.IsNullOrEmpty(gameRequest.PlayGameDetails)) + { + playGameUserInfo.GameUserOperation.Add(new PlayGameUserOperation() + { + OperationDateTime = DateTime.Now, + Content = "用户玩游戏情况", + ActionId = (int)PlayGameStatus.游戏状态, + RequestContent = gameRequest.PlayGameDetails ?? "" + }); + } playGameUserInfo.LastDateTime = DateTime.Now; } return true; diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs index fc6cc6f..9e4f196 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/MonitorBLL.cs @@ -25,4 +25,30 @@ public class MonitorBLL : CloudGamingBase { return AppConfig.GetAppMonitorInfo().ToAppBasicStatistics(); } + + /// + /// 获取近一月活跃人数统计 + /// + /// + public async Task GetActiveUserCount() + { + + } + + /// + /// 获取近一月登录人数统计 + /// + /// + public async Task GetLoginUserCount() + { + + } + /// + /// 获取近一月注册人数统计 + /// + /// + public async Task GetRegisteredUserCount() + { + } + } diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ExitPlayGameRequest.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ExitPlayGameRequest.cs new file mode 100644 index 0000000..c732896 --- /dev/null +++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ExitPlayGameRequest.cs @@ -0,0 +1,21 @@ +using CloudGaming.DtoModel.Game; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudGaming.DtoModel.PlayGame +{ + /// + /// 退出游戏 + /// + public class ExitPlayGameRequest : GameRequest + { + /// + /// 游玩详情,网络,帧率 + /// + public string PlayGameDetails { get; set; } + } +} diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameStatus.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameStatus.cs index 2cbbcac..a9f7838 100644 --- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameStatus.cs +++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameStatus.cs @@ -137,7 +137,11 @@ public enum PlayGameStatus /// /// 切换视频等级 /// - 切换视频等级 = 51 + 切换视频等级 = 51, + /// + /// + /// + 游戏状态 = 52, }