From 714eca49223a7eabdfc6666eb745c631d27046dc Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 11 六月 2025 19:37:04 +0800 Subject: [PATCH] pref:锁日志 --- LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs | 30 +++++++++++++++++++++++------- 1 files changed, 23 insertions(+), 7 deletions(-) diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs index 9d79c31..be0fd5a 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs @@ -2,6 +2,7 @@ using Castle.Core.Internal; using LifePayment.Application.Contracts; using LifePayment.Domain.Shared; +using Medallion.Threading; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; @@ -11,6 +12,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.DistributedLocking; using Volo.Abp.Uow; using ZeroD.Util; @@ -27,15 +29,17 @@ private readonly ILifePayOrderService _lifePayOrderService; private readonly ILogger<AliPayNotifyController> _logger; + private readonly IAbpDistributedLock distributedLock; public AliPayNotifyController( ILogger<AliPayNotifyController> logger, - + IAbpDistributedLock distributedLock, ILifePayService lifePayService, ILifePayOrderService lifePayOrderService) { _logger = logger; + this.distributedLock = distributedLock; _lifePayService = lifePayService; _lifePayOrderService = lifePayOrderService; } @@ -61,14 +65,26 @@ { if (input.TradeStatus == LifePaymentConstant.AliPayStatus.鏀粯鎴愬姛 && input.OutBizNo.IsNullOrEmpty()) { + await using var orderLock = await distributedLock.TryAcquireAsync($"LockKey:UpdateOrder:{input.OutTradeNo}", TimeSpan.FromSeconds(60)); + _logger.LogInformation($"閿侊細LockKey:UpdateOrder:{input.OutTradeNo} - {orderLock != null}"); + await _lifePayService.LifePaySuccessHandler(input.OutTradeNo, input.TradeNo); // 鎻掑叆鏀舵敮娴佹按 - await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() { OrderNo = input.OutTradeNo, - OutOrderNo = input.TradeNo ,LifePayType = LifePayTypeEnum.AliPay,ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses }); + await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() + { + OrderNo = input.OutTradeNo, + OutOrderNo = input.TradeNo, + LifePayType = LifePayTypeEnum.AliPay, + ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses + }); } - else if((input.TradeStatus == LifePaymentConstant.AliPayStatus.鏀粯鎴愬姛 && input.OutBizNo.IsNotNullOrEmpty() && input.RefundFee.HasValue) || - input.TradeStatus == LifePaymentConstant.AliPayStatus.瓒呮椂鍏抽棴) + else if (((input.TradeStatus == LifePaymentConstant.AliPayStatus.鏀粯鎴愬姛 || input.TradeStatus == LifePaymentConstant.AliPayStatus.瓒呮椂鍏抽棴) + && input.OutBizNo.IsNotNullOrEmpty() + && (input.RefundFee.HasValue && input.RefundFee > 0))) { + await using var orderLock = await distributedLock.TryAcquireAsync($"LockKey:UpdateOrder:{input.OutTradeNo}", TimeSpan.FromSeconds(60)); + _logger.LogInformation($"閿侊細LockKey:UpdateOrder:{input.OutTradeNo} - {orderLock != null}"); + await _lifePayService.LifePayRefundsHandler(input.OutTradeNo, LifePayRefundStatusEnum.宸查��娆�); // 鎻掑叆鏀舵敮娴佹按 await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() @@ -83,7 +99,7 @@ } else { - _logger.LogError($"鐢熸椿绠″鏀粯瀹濆厖鍊煎洖璋冮�氱煡锛氳鍗曞彿寮傚父 "+ input.OutTradeNo); + _logger.LogError($"鐢熸椿绠″鏀粯瀹濆厖鍊煎洖璋冮�氱煡锛氳鍗曞彿寮傚父 " + input.OutTradeNo); } return new ContentResult @@ -114,7 +130,7 @@ } - + #endif /// <summary> -- Gitblit v1.9.1