perf: 优化订单创建逻辑
This commit is contained in:
@@ -122,10 +122,13 @@ public class PayService : ApplicationService, IPayService
|
|||||||
// 5. 根据商品类型进行不同的处理
|
// 5. 根据商品类型进行不同的处理
|
||||||
if (order.GoodsType.IsPremiumPackage())
|
if (order.GoodsType.IsPremiumPackage())
|
||||||
{
|
{
|
||||||
|
var tokenAmount = order.GoodsType.GetTokenAmount();
|
||||||
|
var packageName = order.GoodsType.GetDisplayName();
|
||||||
// 处理尊享包商品:创建尊享包记录
|
// 处理尊享包商品:创建尊享包记录
|
||||||
await _premiumPackageManager.CreatePremiumPackageAsync(
|
await _premiumPackageManager.CreatePremiumPackageAsync(
|
||||||
order.UserId,
|
order.UserId,
|
||||||
order.GoodsType,
|
tokenAmount,
|
||||||
|
packageName,
|
||||||
order.TotalAmount,
|
order.TotalAmount,
|
||||||
expireMonths: null // 尊享包不设置过期时间,或者可以根据需求设置
|
expireMonths: null // 尊享包不设置过期时间,或者可以根据需求设置
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public class PremiumPackageManager : DomainService
|
|||||||
private readonly ISqlSugarRepository<PremiumPackageAggregateRoot, Guid> _premiumPackageRepository;
|
private readonly ISqlSugarRepository<PremiumPackageAggregateRoot, Guid> _premiumPackageRepository;
|
||||||
private readonly ILogger<PremiumPackageManager> _logger;
|
private readonly ILogger<PremiumPackageManager> _logger;
|
||||||
private readonly ISqlSugarRepository<AiRechargeAggregateRoot> _rechargeRepository;
|
private readonly ISqlSugarRepository<AiRechargeAggregateRoot> _rechargeRepository;
|
||||||
|
|
||||||
public PremiumPackageManager(
|
public PremiumPackageManager(
|
||||||
ISqlSugarRepository<PremiumPackageAggregateRoot, Guid> premiumPackageRepository,
|
ISqlSugarRepository<PremiumPackageAggregateRoot, Guid> premiumPackageRepository,
|
||||||
ILogger<PremiumPackageManager> logger, ISqlSugarRepository<AiRechargeAggregateRoot> rechargeRepository)
|
ILogger<PremiumPackageManager> logger, ISqlSugarRepository<AiRechargeAggregateRoot> rechargeRepository)
|
||||||
@@ -27,24 +28,20 @@ public class PremiumPackageManager : DomainService
|
|||||||
/// 为用户创建尊享包
|
/// 为用户创建尊享包
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId">用户ID</param>
|
/// <param name="userId">用户ID</param>
|
||||||
/// <param name="goodsType">商品类型</param>
|
/// <param name="packageName"></param>
|
||||||
/// <param name="totalAmount">支付金额</param>
|
/// <param name="totalAmount">支付金额</param>
|
||||||
/// <param name="expireMonths">过期月数,0或null表示永久</param>
|
/// <param name="expireMonths">过期月数,0或null表示永久</param>
|
||||||
|
/// <param name="tokenAmount"></param>
|
||||||
|
/// <param name="isCreateRechargeRecord">是否创建订单,如果只购买尊享包,才需要单独创建订单,如果和会员组合一起购买,只需要创建会员套餐订单即可</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PremiumPackageAggregateRoot> CreatePremiumPackageAsync(
|
public async Task<PremiumPackageAggregateRoot> CreatePremiumPackageAsync(
|
||||||
Guid userId,
|
Guid userId,
|
||||||
GoodsTypeEnum goodsType,
|
long tokenAmount,
|
||||||
|
string packageName,
|
||||||
decimal totalAmount,
|
decimal totalAmount,
|
||||||
int? expireMonths = null)
|
int? expireMonths = null,
|
||||||
|
bool isCreateRechargeRecord = true)
|
||||||
{
|
{
|
||||||
if (!goodsType.IsPremiumPackage())
|
|
||||||
{
|
|
||||||
throw new UserFriendlyException($"商品类型 {goodsType} 不是尊享包商品");
|
|
||||||
}
|
|
||||||
|
|
||||||
var tokenAmount = goodsType.GetTokenAmount();
|
|
||||||
var packageName = goodsType.GetDisplayName();
|
|
||||||
|
|
||||||
var premiumPackage = new PremiumPackageAggregateRoot(userId, tokenAmount, packageName)
|
var premiumPackage = new PremiumPackageAggregateRoot(userId, tokenAmount, packageName)
|
||||||
{
|
{
|
||||||
PurchaseAmount = totalAmount
|
PurchaseAmount = totalAmount
|
||||||
@@ -58,20 +55,24 @@ public class PremiumPackageManager : DomainService
|
|||||||
|
|
||||||
await _premiumPackageRepository.InsertAsync(premiumPackage);
|
await _premiumPackageRepository.InsertAsync(premiumPackage);
|
||||||
|
|
||||||
// 创建充值记录
|
if (isCreateRechargeRecord)
|
||||||
var rechargeRecord = new AiRechargeAggregateRoot
|
|
||||||
{
|
{
|
||||||
UserId = userId,
|
// 创建充值记录
|
||||||
RechargeAmount = totalAmount,
|
var rechargeRecord = new AiRechargeAggregateRoot
|
||||||
Content = packageName,
|
{
|
||||||
ExpireDateTime = premiumPackage.ExpireDateTime,
|
UserId = userId,
|
||||||
Remark = "自助充值",
|
RechargeAmount = totalAmount,
|
||||||
ContactInfo = null,
|
Content = packageName,
|
||||||
RechargeType = RechargeTypeEnum.PremiumPackage
|
ExpireDateTime = premiumPackage.ExpireDateTime,
|
||||||
};
|
Remark = "自助充值",
|
||||||
|
ContactInfo = null,
|
||||||
|
RechargeType = RechargeTypeEnum.PremiumPackage
|
||||||
|
};
|
||||||
|
|
||||||
|
// 保存充值记录到数据库
|
||||||
|
await _rechargeRepository.InsertAsync(rechargeRecord);
|
||||||
|
}
|
||||||
|
|
||||||
// 保存充值记录到数据库
|
|
||||||
await _rechargeRepository.InsertAsync(rechargeRecord);
|
|
||||||
|
|
||||||
_logger.LogInformation(
|
_logger.LogInformation(
|
||||||
$"用户 {userId} 购买尊享包成功: {packageName}, Token数量: {tokenAmount}, 金额: {totalAmount}");
|
$"用户 {userId} 购买尊享包成功: {packageName}, Token数量: {tokenAmount}, 金额: {totalAmount}");
|
||||||
|
|||||||
Reference in New Issue
Block a user