diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
index 2c5841e..9ecd4b6 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
@@ -241,174 +241,7 @@ namespace CloudGaming.Code.Account
return userInfo;
}
- ///
- /// 扣除当前用户钻石
- ///
- ///
- ///
- ///
- public static IUserConsumeMoney GetCurrentUserConsumeMoney(this CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, T_User_Currency currency = null)
- {
- if (UserCurrencyType.钻石 == userCurrencyType)
- {
- return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
- }
- return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
- }
-
- ///
- /// 扣除当前用户钻石
- ///
- ///
- ///
- ///
- public static IUserConsumeMoney CurrentUserConsumeMoney(this UserInfoCache userInfo, CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, T_User_Currency currency = null)
- {
- if (UserCurrencyType.钻石 == userCurrencyType)
- {
- return new DiamondConsumeMoney(cloudGamingBase.Dao, userInfo.UserId, userCurrencyType, currency);
- }
- return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
- }
-
- ///
- /// 扣除当前用户钻石
- ///
- ///
- ///
- ///
- ///
- public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, Action? userDoamondAction = null)
- {
- T_User_Currency currency = new T_User_Currency();
- var userConsumeMoney = new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase.UserInfo.UserId, UserCurrencyType.钻石, currency);
- try
- {
- var isSuccess = await userConsumeMoney.ConsumeMoneyAsync(money);
- if (!isSuccess)
- {
- return false;
- }
- cloudGamingBase.UserInfo.Diamond = (int)currency.CurrencyMoney;
- await cloudGamingBase.SaveUserInfoCacheChangesAsync();
- UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
- T_User_DiamondList userDiamondList = new T_User_DiamondList()
- {
- CreateAt = DateTime.Now,
- Consume = money,
- ConsumeType = (int)consumeType,
- CurrencyType = (int)UserCurrencyType.钻石,
- OrderCode = "",
- Title = "",
- UpdateAt = DateTime.Now,
- UserId = cloudGamingBase.UserInfo.UserId,
- };
- if (userDoamondAction != null)
- {
- userDoamondAction(userDiamondList);
- }
- await cloudGamingBase.Dao.DaoUser.Context.AddAsync(userDiamondList);
- await cloudGamingBase.Dao.DaoUser.Context.SaveChangesAsync();
- }
- catch (Exception ex)
- {
-
- return false;
- }
- return true;
- }
-
- ///
- ///
- ///
- ///
- /// 金额
- /// 资产支出标题
- /// 订单号
- ///
-
- public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, string title = "", string orderId = "")
- {
- return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
- }
-
- ///
- ///
- ///
- ///
- /// 金额
- /// 资产支出标题
- /// 订单号
- ///
-
- public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, decimal money, string title = "", string orderId = "")
- {
- if (userCurrencyType == UserCurrencyType.钻石)
- {
- return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
- }
- return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
- }
- ///
- /// 用户玩游戏消耗钻石
- ///
- ///
- /// 金额
- /// 资产记录日志id
- /// 游戏名称
- /// 资产收入支出记录id
- /// 游戏每分钟消耗多少钻石
- ///
- public static async Task<(bool, int, int)> UserPlayGameDiamondConsumeMoney(this CloudGamingBase cloudGamingBase, decimal money, string gameName, int currencyLogId,int diamondListId, string gameXiaoHao)
- {
- bool issuccess = false;
- int _currencyLogId = currencyLogId;
- try
- {
- var currency = new T_User_Currency();
- GameDiamondConsumeMoney gameDiamondConsumeMoney = new GameDiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, UserCurrencyType.钻石, currency);
- (issuccess, _currencyLogId) = await gameDiamondConsumeMoney.ConsumeMoneyAsync(money, currencyLogId);
- if (issuccess)
- {
- cloudGamingBase.UserInfo.Diamond = (int)currency.CurrencyMoney;
- await cloudGamingBase.SaveUserInfoCacheChangesAsync();
- UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
- T_User_DiamondList userDiamondList = null;
- if (diamondListId > 0)
- {
- userDiamondList = await cloudGamingBase.Dao.DaoUser.Context.T_User_DiamondList.FirstOrDefaultAsync(it => it.Id == diamondListId);
- }
- if (userDiamondList == null)
- {
- userDiamondList = new T_User_DiamondList()
- {
- CreateAt = DateTime.Now,
- Consume = 0,
- ConsumeType = (int)consumeType,
- CurrencyType = (int)UserCurrencyType.钻石,
- OrderCode = "",
- Title = $"游玩《{gameName}》",
- UpdateAt = DateTime.Now,
- UserId = cloudGamingBase.UserInfo.UserId,
- Extend = gameXiaoHao,
- };
- await cloudGamingBase.Dao.DaoUser.Context.AddAsync(userDiamondList);
- diamondListId = userDiamondList.Id;
- }
- userDiamondList.Consume += money;
- userDiamondList.UpdateAt = DateTime.Now;
- await cloudGamingBase.Dao.DaoUser.Context.SaveChangesAsync();
- }
- }
- catch (Exception ex)
- {
-
- return (false, _currencyLogId, diamondListId); ;
- }
- return (issuccess, _currencyLogId, diamondListId);
-
- }
-
+
///
/// 发送消息
@@ -441,58 +274,7 @@ namespace CloudGaming.Code.Account
}
- ///
- /// 扣除当前用户钻石
- ///
- ///
- ///
- ///
- public static async Task UserConsumeMoneyAsync(this CloudGamingBase cloudGamingBase, int userId, decimal money)
- {
- bool isSuccess = await UserConsumeDiamondMoneyAsync(userId, money, cloudGamingBase);
- if (isSuccess)
- {
- await cloudGamingBase.SaveUserInfoCacheChangesAsync();
- }
- return isSuccess;
- }
-
-
- ///
- /// 扣除当前用户钻石
- ///
- ///
- ///
- ///
- public static async Task UserConsumeDiamondMoneyAsync(int userId, decimal money, CloudGamingBase cloudGamingBase)
- {
- T_User_Currency currency = new T_User_Currency();
- var userConsumeMoney = new DiamondConsumeMoney(cloudGamingBase.Dao, userId, UserCurrencyType.钻石, currency);
- try
- {
- var isSuccess = await userConsumeMoney.ConsumeMoneyAsync(money);
-
- if (!isSuccess)
- {
- return false;
- }
- //清除缓存
- string key = GetUserInfoRedisKey(userId);
- var userInfo = await cloudGamingBase.RedisCache.StringGetAsync(key);
- if (userInfo != null)
- {
- userInfo.Diamond = (int)currency.CurrencyMoney;
- await cloudGamingBase.RedisCache.StringSetAsync(key, userInfo, TimeSpan.FromMinutes(30));
- }
- }
- catch (Exception ex)
- {
-
- return false;
- }
- return true;
- }
-
+
///
/// 获取用户购买过的产品
///
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
index ee3b0d1..3ae8747 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
@@ -30,7 +30,7 @@ public class DiamondConsumeMoney(DAO dao, int userId, UserCurrencyType userCurre
public async Task ConsumeMoneyAsync(decimal money)
{
- T_User_Currency? currency = await AddUserCurrencyAsync(dao, userId, userCurrencyType, money);
+ T_User_Currency? currency = await AddUserCurrencyAsync(money);
UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
var currency_Log = new T_User_Currency_Log()
{
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrencyExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrencyExtend.cs
index 89416f6..89909c5 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrencyExtend.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrencyExtend.cs
@@ -1,3 +1,5 @@
+using CloudGaming.Code.Account.Contract;
+using CloudGaming.Code.Account.UserCurrency;
using CloudGaming.Code.DataAccess;
using CloudGaming.DtoModel.Account.User;
@@ -92,5 +94,225 @@ namespace CloudGaming.Code.Account
return true;
}
+
+ ///
+ /// 扣除当前用户钻石
+ ///
+ ///
+ ///
+ ///
+ public static IUserConsumeMoney GetCurrentUserConsumeMoney(this CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, T_User_Currency currency = null)
+ {
+ if (UserCurrencyType.钻石 == userCurrencyType)
+ {
+ return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
+ }
+ return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
+ }
+
+ ///
+ /// 扣除当前用户钻石
+ ///
+ ///
+ ///
+ ///
+ public static IUserConsumeMoney CurrentUserConsumeMoney(this UserInfoCache userInfo, CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, T_User_Currency currency = null)
+ {
+ if (UserCurrencyType.钻石 == userCurrencyType)
+ {
+ return new DiamondConsumeMoney(cloudGamingBase.Dao, userInfo.UserId, userCurrencyType, currency);
+ }
+ return new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, userCurrencyType, currency);
+ }
+
+ ///
+ /// 扣除当前用户钻石
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, Action? userDoamondAction = null)
+ {
+ T_User_Currency currency = new T_User_Currency();
+ var userConsumeMoney = new DiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase.UserInfo.UserId, UserCurrencyType.钻石, currency);
+ try
+ {
+ var isSuccess = await userConsumeMoney.ConsumeMoneyAsync(money);
+ if (!isSuccess)
+ {
+ return false;
+ }
+ cloudGamingBase.UserInfo.Diamond = (int)currency.CurrencyMoney;
+ await cloudGamingBase.SaveUserInfoCacheChangesAsync();
+ UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
+ T_User_DiamondList userDiamondList = new T_User_DiamondList()
+ {
+ CreateAt = DateTime.Now,
+ Consume = money,
+ ConsumeType = (int)consumeType,
+ CurrencyType = (int)UserCurrencyType.钻石,
+ OrderCode = "",
+ Title = "",
+ UpdateAt = DateTime.Now,
+ UserId = cloudGamingBase.UserInfo.UserId,
+ };
+ if (userDoamondAction != null)
+ {
+ userDoamondAction(userDiamondList);
+ }
+ await cloudGamingBase.Dao.DaoUser.Context.AddAsync(userDiamondList);
+ await cloudGamingBase.Dao.DaoUser.Context.SaveChangesAsync();
+ }
+ catch (Exception ex)
+ {
+
+ return false;
+ }
+ return true;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ /// 金额
+ /// 资产支出标题
+ /// 订单号
+ ///
+
+ public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, string title = "", string orderId = "")
+ {
+ return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
+ }
+
+ ///
+ ///
+ ///
+ ///
+ /// 金额
+ /// 资产支出标题
+ /// 订单号
+ ///
+
+ public static async Task UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType, decimal money, string title = "", string orderId = "")
+ {
+ if (userCurrencyType == UserCurrencyType.钻石)
+ {
+ return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
+ }
+ return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
+ }
+ ///
+ /// 用户玩游戏消耗钻石
+ ///
+ ///
+ /// 金额
+ /// 资产记录日志id
+ /// 游戏名称
+ /// 资产收入支出记录id
+ /// 游戏每分钟消耗多少钻石
+ ///
+ public static async Task<(bool, int, int)> UserPlayGameDiamondConsumeMoney(this CloudGamingBase cloudGamingBase, decimal money, string gameName, int currencyLogId, int diamondListId, string gameXiaoHao)
+ {
+ bool issuccess = false;
+ int _currencyLogId = currencyLogId;
+ try
+ {
+ var currency = new T_User_Currency();
+ GameDiamondConsumeMoney gameDiamondConsumeMoney = new GameDiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, UserCurrencyType.钻石, currency);
+ (issuccess, _currencyLogId) = await gameDiamondConsumeMoney.ConsumeMoneyAsync(money, currencyLogId);
+ if (issuccess)
+ {
+ cloudGamingBase.UserInfo.Diamond = (int)currency.CurrencyMoney;
+ await cloudGamingBase.SaveUserInfoCacheChangesAsync();
+ UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
+ T_User_DiamondList userDiamondList = null;
+ if (diamondListId > 0)
+ {
+ userDiamondList = await cloudGamingBase.Dao.DaoUser.Context.T_User_DiamondList.FirstOrDefaultAsync(it => it.Id == diamondListId);
+ }
+ if (userDiamondList == null)
+ {
+ userDiamondList = new T_User_DiamondList()
+ {
+ CreateAt = DateTime.Now,
+ Consume = 0,
+ ConsumeType = (int)consumeType,
+ CurrencyType = (int)UserCurrencyType.钻石,
+ OrderCode = "",
+ Title = $"游玩《{gameName}》",
+ UpdateAt = DateTime.Now,
+ UserId = cloudGamingBase.UserInfo.UserId,
+ Extend = gameXiaoHao,
+ };
+ await cloudGamingBase.Dao.DaoUser.Context.AddAsync(userDiamondList);
+ diamondListId = userDiamondList.Id;
+ }
+ userDiamondList.Consume += money;
+ userDiamondList.UpdateAt = DateTime.Now;
+ await cloudGamingBase.Dao.DaoUser.Context.SaveChangesAsync();
+ }
+ }
+ catch (Exception ex)
+ {
+
+ return (false, _currencyLogId, diamondListId); ;
+ }
+ return (issuccess, _currencyLogId, diamondListId);
+
+ }
+ ///
+ /// 扣除当前用户钻石
+ ///
+ ///
+ ///
+ ///
+ public static async Task UserConsumeMoneyAsync(this CloudGamingBase cloudGamingBase, int userId, decimal money)
+ {
+ bool isSuccess = await UserConsumeDiamondMoneyAsync(userId, money, cloudGamingBase);
+ if (isSuccess)
+ {
+ await cloudGamingBase.SaveUserInfoCacheChangesAsync();
+ }
+ return isSuccess;
+ }
+
+
+ ///
+ /// 扣除当前用户钻石
+ ///
+ ///
+ ///
+ ///
+ public static async Task UserConsumeDiamondMoneyAsync(int userId, decimal money, CloudGamingBase cloudGamingBase)
+ {
+ T_User_Currency currency = new T_User_Currency();
+ var userConsumeMoney = new DiamondConsumeMoney(cloudGamingBase.Dao, userId, UserCurrencyType.钻石, currency);
+ try
+ {
+ var isSuccess = await userConsumeMoney.ConsumeMoneyAsync(money);
+
+ if (!isSuccess)
+ {
+ return false;
+ }
+ //清除缓存
+ string key = AccountExtend.GetUserInfoRedisKey(userId);
+ var userInfo = await cloudGamingBase.RedisCache.StringGetAsync(key);
+ if (userInfo != null)
+ {
+ userInfo.Diamond = (int)currency.CurrencyMoney;
+ await cloudGamingBase.RedisCache.StringSetAsync(key, userInfo, TimeSpan.FromMinutes(30));
+ }
+ }
+ catch (Exception ex)
+ {
+
+ return false;
+ }
+ return true;
+ }
+
}
}
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
index 2d947e2..461d801 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
@@ -31,6 +31,9 @@ using System.Threading.Tasks;
namespace CloudGaming.Code.Game
{
+ ///
+ ///
+ ///
public class PlayGameBLL : CloudGamingBase
{
private IJYApi JYApi { get; set; }