From 1605af1ced748313e99f38e5eb6888768fbc7d54 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 11 六月 2025 14:46:43 +0800
Subject: [PATCH] fix:支付回调和供应商回调的并发问题

---
 LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
index bd6e839..cae6846 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
@@ -10,6 +10,7 @@
 using System.Threading.Tasks;
 using Volo.Abp;
 using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.DistributedLocking;
 using Volo.Abp.Uow;
 
 namespace LifePayment.HttpApi
@@ -20,14 +21,17 @@
     public class ACOOLYNotifyController : AbpController
     {
         private readonly ILifePayService _lifePayService;
+        private readonly IAbpDistributedLock distributedLock;
         private readonly ILogger<ACOOLYNotifyController> _logger;
 
         public ACOOLYNotifyController(
                ILogger<ACOOLYNotifyController> logger,
-               ILifePayService lifePayService)
+               ILifePayService lifePayService,
+               IAbpDistributedLock distributedLock)
         {
             _logger = logger;
             _lifePayService = lifePayService;
+            this.distributedLock = distributedLock;
         }
 
         /// <summary>
@@ -56,6 +60,8 @@
             ACOOLYStatusEnum acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
             var acoolyOrderNo = string.Empty;
             decimal payAmount = 0;
+            decimal parValue = 0;
+            decimal actualParValue = 0;
             string refundApplyRemark = string.Empty;
             _logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬶細" + baseInfo.Service);
             _logger.LogError("ACOOLY鍥炶皟鍐呭锛�" + body);
@@ -66,6 +72,8 @@
                     orderNo = confirmElectricOrderResponse.ElectricChargeOrder.OutOrderNo;
                     acoolyOrderNo = confirmElectricOrderResponse.ElectricChargeOrder.BusiOrderNo;
                     payAmount = confirmElectricOrderResponse.ElectricChargeOrder.PayAmount;
+                    actualParValue = confirmElectricOrderResponse.ElectricChargeOrder.ActualParValue;
+                    parValue = confirmElectricOrderResponse.ElectricChargeOrder.ParValue;
                     _logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmElectricOrderResponse.ElectricChargeOrder.Status);
 
                     if (!confirmElectricOrderResponse.Success
@@ -96,13 +104,13 @@
                     else
                     if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
-                        acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+                        status = LifePayOrderStatusEnum.閫�娆句腑;
+                        acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
                     }
                     else
                     if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
+                        status = LifePayOrderStatusEnum.寰呴��娆�;
                         acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
                     }
                     else
@@ -116,6 +124,7 @@
                     {
                         status = LifePayOrderStatusEnum.寰呴��娆�;
                         acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+                        refundApplyRemark = confirmElectricOrderResponse.ElectricChargeOrder.ResponseMessage;
                     }
                     break;
                 case ACOOLYConstant.Sevice.ConfirmPhoneOrder:
@@ -153,13 +162,13 @@
                     else
                      if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
-                        acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+                        status = LifePayOrderStatusEnum.閫�娆句腑;
+                        acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
                     }
                     else
                      if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
+                        status = LifePayOrderStatusEnum.寰呴��娆�;
                         acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
                     }
                     else
@@ -210,13 +219,13 @@
                     else
                      if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
-                        acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+                        status = LifePayOrderStatusEnum.閫�娆句腑;
+                        acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
                     }
                     else
                      if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
                     {
-                        status = LifePayOrderStatusEnum.宸插畬鎴�;
+                        status = LifePayOrderStatusEnum.寰呴��娆�;
                         acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
                     }
                     else
@@ -236,7 +245,7 @@
                     throw new UserFriendlyException("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬩笉瀛樺湪");
             }
 
-            await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount, refundApplyRemark);
+            await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount, refundApplyRemark, parValue, actualParValue);
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1