修复问题
This commit is contained in:
parent
83234ca339
commit
8841099e26
|
|
@ -241,174 +241,7 @@ namespace CloudGaming.Code.Account
|
|||
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>
|
||||
/// 发送消息
|
||||
|
|
@ -441,58 +274,7 @@ 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)
|
||||
{
|
||||
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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/// <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
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class PlayGameBLL : CloudGamingBase
|
||||
{
|
||||
private IJYApi JYApi { get; set; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user