From a4413d2eaf9d9b2af49a8adb23867ec66aba149d Mon Sep 17 00:00:00 2001 From: zpc Date: Fri, 6 Dec 2024 22:57:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E6=89=A3=E9=99=A4=E9=92=BB=E7=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Code/CloudGaming.Code/Game/PlayGameBLL.cs | 56 ++++++++++++------- .../PlayGame/PlayGameUserInfo.cs | 4 +- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs index 47726e0..951aaba 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs @@ -142,9 +142,16 @@ public class PlayGameBLL : CloudGamingBase }; await Dao.DaoPhone.Context.T_User_GameList.AddAsync(userGameList); await Dao.DaoPhone.Context.SaveChangesAsync(); + //启动游戏 gameInfoCache?.PlayGameStart(gameResponse?.Data?.ScId ?? 0, userGameList.Id, playGameSettings.DisplayGrade, jyResponseData); gameInfoCache.Ip = HttpContextAccessor.HttpContext.GetClientIpAddress(); gameInfoCache.Channel = AppRequestInfo.Channel; + var diamondNumHour = gameInfo.ConsumeDiamondNumHour / 60.0; + if (diamondNumHour > 0) + { + await BalanceDeductionFee(userInfo, gameInfoCache, diamondNumHour, 0, (int)diamondNumHour * 1); + await gameInfoCache.SaveChangesAsync(this); + } var gameResponse1 = JsonConvert.DeserializeObject>(jyResponseData.ResponseContent); if (gameResponse1 != null && gameResponse1.TryGetValue("data", out var xxx)) { @@ -250,26 +257,7 @@ public class PlayGameBLL : CloudGamingBase } } - var (issuccess, currlogId, diamId) = await this.UserPlayGameDiamondConsumeMoney(-gameDiamondNumHour, gameInfoCache.GameName, gameInfoCache.CurrencyLogId, gameInfoCache.DiamondListId, $"{diamondNumHour}/分钟"); - if (!issuccess) - { - gameInfoCache.GameUserOperation.Add(new PlayGameUserOperation() - { - ActionId = (int)PlayGameStatus.用户扣款错误, - Content = $"扣除费用{gameDiamondNumHour},用户剩余金额{userInfo.Diamond};" - }); - await gameInfoCache.SaveChangesAsync(this); - throw MessageBox.ErrorShow("扣款出现错误"); - } - gameInfoCache.SpendingDiamonds += gameDiamondNumHour; - userInfo.UserPlayGameTime += minutes; - await this.SaveUserInfoCacheChangesAsync(); - gameInfoCache.CurrencyLogId = currlogId; - gameInfoCache.DiamondListId = diamId; - //修改最后扣费时间 - gameInfoCache.LastChargingAt = (gameInfoCache.LastChargingAt ?? gameInfoCache.CreateDateTime).AddMinutes(minutes); - await Dao.DaoUser.Context.SaveChangesAsync(); - + await BalanceDeductionFee(userInfo, gameInfoCache, diamondNumHour, minutes, gameDiamondNumHour); } } //用户剩余游玩时间 @@ -300,6 +288,34 @@ public class PlayGameBLL : CloudGamingBase } + private async Task BalanceDeductionFee(UserInfoCache userInfo, PlayGameUserInfo gameInfoCache, double diamondNumHour, int minutes, decimal gameDiamondNumHour) + { + var (issuccess, currlogId, diamId) = await this.UserPlayGameDiamondConsumeMoney(-gameDiamondNumHour, gameInfoCache.GameName, gameInfoCache.CurrencyLogId, gameInfoCache.DiamondListId, $"{diamondNumHour}/分钟"); + if (!issuccess) + { + var Content = $"扣除费用{gameDiamondNumHour},用户剩余金额{userInfo.Diamond};"; + if (minutes == 0) + { + Content = $"启动扣除费用{gameDiamondNumHour},用户剩余金额{userInfo.Diamond};"; + } + gameInfoCache.GameUserOperation.Add(new PlayGameUserOperation() + { + ActionId = (int)PlayGameStatus.用户扣款错误, + Content = Content + }); + await gameInfoCache.SaveChangesAsync(this); + throw MessageBox.ErrorShow("扣款出现错误"); + } + gameInfoCache.SpendingDiamonds +=gameDiamondNumHour; + userInfo.UserPlayGameTime += minutes; + await this.SaveUserInfoCacheChangesAsync(); + gameInfoCache.CurrencyLogId = currlogId; + gameInfoCache.DiamondListId = diamId; + //修改最后扣费时间 + gameInfoCache.LastChargingAt = (gameInfoCache.LastChargingAt ?? gameInfoCache.CreateDateTime).AddMinutes(minutes); + await Dao.DaoUser.Context.SaveChangesAsync(); + } + /// /// 用户主动结束游戏 diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs index 1a555f7..591250f 100644 --- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs +++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs @@ -24,7 +24,7 @@ public class PlayGameUserInfo /// /// 用户本次玩游戏共花销多少钻石 /// - public int SpendingDiamonds { get; set; } + public decimal SpendingDiamonds { get; set; } /// /// 用户Id @@ -172,7 +172,7 @@ public class PlayGameUserInfo GameId = GameId, GameName = GameName, UserPlayGameDiamonds = UserPlayGameDiamonds, - SpendingDiamonds = SpendingDiamonds, + SpendingDiamonds = (int)SpendingDiamonds, UserId = UserId, CreateDateTime = CreateDateTime, LastDateTime = LastDateTime,