修复问题
This commit is contained in:
parent
83234ca339
commit
8841099e26
|
|
@ -241,173 +241,6 @@ namespace CloudGaming.Code.Account
|
||||||
return userInfo;
|
return userInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 扣除当前用户钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="userCurrencyType"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 扣除当前用户钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="userCurrencyType"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 扣除当前用户钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="money"></param>
|
|
||||||
/// <param name="userDoamondAction"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static async Task<bool> UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, Action<T_User_DiamondList>? 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="money">金额</param>
|
|
||||||
/// <param name="title">资产支出标题</param>
|
|
||||||
/// <param name="orderId">订单号</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
|
|
||||||
public static async Task<bool> UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, string title = "", string orderId = "")
|
|
||||||
{
|
|
||||||
return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="money">金额</param>
|
|
||||||
/// <param name="title">资产支出标题</param>
|
|
||||||
/// <param name="orderId">订单号</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
|
|
||||||
public static async Task<bool> 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; });
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 用户玩游戏消耗钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="money">金额</param>
|
|
||||||
/// <param name="currencyLogId">资产记录日志id</param>
|
|
||||||
/// <param name="gameName">游戏名称</param>
|
|
||||||
/// <param name="diamondListId">资产收入支出记录id</param>
|
|
||||||
/// <param name="gameXiaoHao">游戏每分钟消耗多少钻石</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -441,57 +274,6 @@ namespace CloudGaming.Code.Account
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 扣除当前用户钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="userCurrencyType"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static async Task<bool> UserConsumeMoneyAsync(this CloudGamingBase cloudGamingBase, int userId, decimal money)
|
|
||||||
{
|
|
||||||
bool isSuccess = await UserConsumeDiamondMoneyAsync(userId, money, cloudGamingBase);
|
|
||||||
if (isSuccess)
|
|
||||||
{
|
|
||||||
await cloudGamingBase.SaveUserInfoCacheChangesAsync();
|
|
||||||
}
|
|
||||||
return isSuccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 扣除当前用户钻石
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="cloudGamingBase"></param>
|
|
||||||
/// <param name="userCurrencyType"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static async Task<bool> 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<UserInfoCache>(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取用户购买过的产品
|
/// 获取用户购买过的产品
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public class DiamondConsumeMoney(DAO dao, int userId, UserCurrencyType userCurre
|
||||||
|
|
||||||
public async Task<bool> ConsumeMoneyAsync(decimal money)
|
public async Task<bool> 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.消耗;
|
UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
|
||||||
var currency_Log = new T_User_Currency_Log()
|
var currency_Log = new T_User_Currency_Log()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
using CloudGaming.Code.Account.Contract;
|
||||||
|
using CloudGaming.Code.Account.UserCurrency;
|
||||||
using CloudGaming.Code.DataAccess;
|
using CloudGaming.Code.DataAccess;
|
||||||
using CloudGaming.DtoModel.Account.User;
|
using CloudGaming.DtoModel.Account.User;
|
||||||
|
|
||||||
|
|
@ -92,5 +94,225 @@ namespace CloudGaming.Code.Account
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 扣除当前用户钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="userCurrencyType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 扣除当前用户钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="userCurrencyType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 扣除当前用户钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="money"></param>
|
||||||
|
/// <param name="userDoamondAction"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<bool> UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, Action<T_User_DiamondList>? 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="money">金额</param>
|
||||||
|
/// <param name="title">资产支出标题</param>
|
||||||
|
/// <param name="orderId">订单号</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
|
||||||
|
public static async Task<bool> UserConsumeDiamondMoneyAsync(this CloudGamingBase cloudGamingBase, decimal money, string title = "", string orderId = "")
|
||||||
|
{
|
||||||
|
return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="money">金额</param>
|
||||||
|
/// <param name="title">资产支出标题</param>
|
||||||
|
/// <param name="orderId">订单号</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
|
||||||
|
public static async Task<bool> 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; });
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 用户玩游戏消耗钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="money">金额</param>
|
||||||
|
/// <param name="currencyLogId">资产记录日志id</param>
|
||||||
|
/// <param name="gameName">游戏名称</param>
|
||||||
|
/// <param name="diamondListId">资产收入支出记录id</param>
|
||||||
|
/// <param name="gameXiaoHao">游戏每分钟消耗多少钻石</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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);
|
||||||
|
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 扣除当前用户钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="userCurrencyType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<bool> UserConsumeMoneyAsync(this CloudGamingBase cloudGamingBase, int userId, decimal money)
|
||||||
|
{
|
||||||
|
bool isSuccess = await UserConsumeDiamondMoneyAsync(userId, money, cloudGamingBase);
|
||||||
|
if (isSuccess)
|
||||||
|
{
|
||||||
|
await cloudGamingBase.SaveUserInfoCacheChangesAsync();
|
||||||
|
}
|
||||||
|
return isSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 扣除当前用户钻石
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cloudGamingBase"></param>
|
||||||
|
/// <param name="userCurrencyType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<bool> 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<UserInfoCache>(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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,9 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace CloudGaming.Code.Game
|
namespace CloudGaming.Code.Game
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public class PlayGameBLL : CloudGamingBase
|
public class PlayGameBLL : CloudGamingBase
|
||||||
{
|
{
|
||||||
private IJYApi JYApi { get; set; }
|
private IJYApi JYApi { get; set; }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user