添加用户金额消费

This commit is contained in:
zpc 2024-11-16 04:41:43 +08:00
parent 248ac1fe07
commit abc9cea3c1
5 changed files with 154 additions and 1 deletions

View File

@ -529,7 +529,7 @@ namespace CloudGaming.Code.Account
UserId = _UserId,
Ip = HttpContextAccessor.HttpContext.GetClientIpAddress()
};
await this.GetConsumeMoney(UserCurrencyType.).ConsumeMoneyAsync(10);
await Dao.DaoUser.Context.T_User_LimitActionLog.AddAsync(limitActionLog);
await Dao.DaoUser.Context.SaveChangesAsync();
return "奖励已经发送,钻石*10";

View File

@ -1,5 +1,6 @@
using CloudGaming.Code.Account.Contract;
using CloudGaming.Code.Account.Login;
using CloudGaming.Code.Account.UserCurrency;
using CloudGaming.Code.DataAccess;
using CloudGaming.DtoModel.Account.Login;
using CloudGaming.DtoModel.Account.User;
@ -219,5 +220,20 @@ namespace CloudGaming.Code.Account
await cloudGamingBase.RedisCache.StringSetAsync(key, userInfo, TimeSpan.FromHours(1));
return userInfo;
}
/// <summary>
///
/// </summary>
/// <param name="cloudGamingBase"></param>
/// <param name="userCurrencyType"></param>
/// <returns></returns>
public static IUserConsumeMoney GetConsumeMoney(this CloudGamingBase cloudGamingBase, UserCurrencyType userCurrencyType)
{
if (UserCurrencyType. == userCurrencyType)
{
return new DiamondConsumeMoney(cloudGamingBase);
}
return new DiamondConsumeMoney(cloudGamingBase);
}
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudGaming.Code.Account.Contract;
/// <summary>
/// 用户货币变更
/// </summary>
public interface IUserConsumeMoney
{
/// <summary>
/// 扣除或者添加货币
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
public Task<bool> ConsumeMoneyAsync(decimal money);
}

View File

@ -0,0 +1,21 @@
using CloudGaming.Code.Account.Contract;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudGaming.Code.Account.UserCurrency
{
/// <summary>
///
/// </summary>
public class DiamondConsumeMoney(CloudGamingBase cloudGamingBase) : IUserConsumeMoney
{
public Task<bool> ConsumeMoneyAsync(decimal money)
{
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,96 @@
using CloudGaming.Code.DataAccess;
using CloudGaming.DtoModel.Account.User;
using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudGaming.Code.Account
{
public static class UserCurrencyExtend
{
/// <summary>
/// 获取用户货币余额,没有货币的时候添加
/// </summary>
/// <param name="user"></param>
/// <param name="userCurrencyType"></param>
/// <param name="dao"></param>
/// <returns></returns>
public static async Task<decimal> GetUserCurrencyMoney(this T_User user, UserCurrencyType userCurrencyType, DAO dao)
{
var userCurrency = await dao.DaoUser.Context.T_User_Currency.FirstOrDefaultAsync(it => it.UserId == user.Id && it.CurrencyType == (int)userCurrencyType);
if (userCurrency == null)
{
userCurrency = new T_User_Currency()
{
CurrencyMoney = 0,
CreateAt = DateTime.Now,
CurrencyName = userCurrencyType.ToString(),
CurrencyType = (int)userCurrencyType,
UpdateAt = DateTime.Now,
UserId = user.Id,
};
await dao.DaoUser.Context.AddAsync(userCurrency);
await dao.DaoUser.Context.SaveChangesAsync();
}
return userCurrency?.CurrencyMoney ?? 0;
}
/// <summary>
/// 获取用户货币余额
/// </summary>
/// <param name="user"></param>
/// <param name="userCurrencyType"></param>
/// <param name="dao"></param>
/// <returns></returns>
public static async Task<T_User_Currency> GetUserCurrency(this T_User user, UserCurrencyType userCurrencyType, DAO dao)
{
var userCurrency = await dao.DaoUser.Context.T_User_Currency.FirstOrDefaultAsync(it => it.UserId == user.Id && it.CurrencyType == (int)userCurrencyType);
return userCurrency;
}
/// <summary>
/// 获取用户所有货币信息
/// </summary>
/// <param name="user"></param>
/// <param name="userCurrencyType"></param>
/// <param name="dao"></param>
/// <returns></returns>
public static async Task<List<T_User_Currency>> GetUserCurrencys(this T_User user, DAO dao)
{
var userCurrency = await dao.DaoUser.Context.T_User_Currency.Where(it => it.UserId == user.Id).ToListAsync();
return userCurrency;
}
/// <summary>
/// 扣除或者充值货币
/// </summary>
/// <param name="user"></param>
/// <param name="userCurrencyType">货币类型</param>
/// <param name="money">扣除金额(负数扣除,正数添加)</param>
/// <param name="dao">数据库</param>
/// <param name="_currency"></param>
/// <param name="orderId">订单号</param>
/// <param name="title"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public static bool ConsumeMoneyNoWork(this T_User user, UserCurrencyType userCurrencyType, decimal money, DAO dao, T_User_Currency? _currency = null, string orderId = "", string title = "")
{
if (user == null || user.Id == 0)
{
throw new ArgumentNullException("用户不能为空");
}
int userId = user.Id;
return ConsumeMoneyNoWork(userId, userCurrencyType, money, dao, orderId: orderId, title: title);
}
public static bool ConsumeMoneyNoWork(int userId, UserCurrencyType userCurrencyType, decimal money, DAO dao, T_User_Currency? _currency = null, string remarks = "", string title = "", string orderId = "")
{
return true;
}
}
}