diff --git a/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs b/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs index 3034639..458f577 100644 --- a/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs +++ b/src/CloudGaming/Api/CloudGaming.Api/Controllers/PlayGameController.cs @@ -69,9 +69,22 @@ public class PlayGameController : CloudGamingControllerBase { PlayGameBLL playGameBLL = new PlayGameBLL(ServiceProvider, JYApi); return await playGameBLL.PlayGameHeartbeat(gameRequest.GameId); - } + /// + /// 退出游戏 + /// + /// + /// + [HttpPost] + [Authorize] + public async Task> ExitPlayGame([FromBody] GameRequest gameRequest) + { + PlayGameBLL playGameBLL = new PlayGameBLL(ServiceProvider, JYApi); + return await playGameBLL.ExitPlayGame(gameRequest.GameId); + } + + /// diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs index 427a609..fc80467 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs @@ -143,7 +143,7 @@ public class PlayGameBLL : CloudGamingBase var gameResponse1 = JsonConvert.DeserializeObject>(jyResponseData.ResponseContent); if (gameResponse1 != null && gameResponse1.TryGetValue("data", out var xxx)) { - response = new BaseResponse(ResponseCode.Success, "", xxx); + response = new BaseResponse(ResponseCode.Success, "", JsonConvert.SerializeObject(xxx)); } else { @@ -280,7 +280,7 @@ public class PlayGameBLL : CloudGamingBase /// /// /// - public async Task ExitPlayGame(string gameId) + public async Task> ExitPlayGame(string gameId) { // 检查用户是否已登录 if (_UserId == 0) @@ -303,8 +303,15 @@ public class PlayGameBLL : CloudGamingBase } if (gameInfoCache.GameStatus != PlayGameStatus.游戏结束) { - gameInfoCache.ExitPlayGame(); + PlayGameCommonSetting playGameQueue = new PlayGameCommonSetting() + { + ScId = gameInfoCache.ScId, + Sn = gameInfoCache.Sn + }; + var obj = await JYApi.StopGame(playGameQueue); + gameInfoCache.ExitPlayGame(obj); } + 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 d2d2d9b..b16e0e9 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs @@ -98,12 +98,17 @@ namespace CloudGaming.Code.Game /// /// /// - public static bool ExitPlayGame(this PlayGameUserInfo playGameUserInfo) + public static bool ExitPlayGame(this PlayGameUserInfo playGameUserInfo, IJYApiRespnse jYApiRespnse) { if (playGameUserInfo.GameStatus != PlayGameStatus.游戏结束) { playGameUserInfo.GameStatus = PlayGameStatus.游戏结束; + playGameUserInfo.GameUserOperation.Add(new PlayGameUserOperation() + { + OperationDateTime = DateTime.Now, + Content = "游戏结束" + }); playGameUserInfo.LastDateTime = DateTime.Now; } return true;