From 7a540f529d2c9a541993bc9818cad9c9093fec91 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 03 十二月 2025 11:04:35 +0800
Subject: [PATCH] fix: bug
---
LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs | 166 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 113 insertions(+), 53 deletions(-)
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
index a0ceec6..c6304e0 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
@@ -7,9 +7,11 @@
using System;
using System.IO;
using System.Text;
+using System.Threading;
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 +22,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>
@@ -35,11 +40,12 @@
/// </summary>
/// <returns></returns>
[HttpPost]
- [UnitOfWork]
[AllowAnonymous]
+ [UnitOfWork(false)]
public async Task ACOOLYNotify()
{
_logger.LogError("ACOOLY鍥炶皟閫氱煡寮�濮嬭繘鍏�");
+ Thread.Sleep(200);
var body = string.Empty;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
@@ -52,10 +58,13 @@
}
var baseInfo = JsonConvert.DeserializeObject<ACOOLYRequestBaseResponse>(body);
var orderNo = string.Empty;
- var status = LifePayOrderStatusEnum.寰呯‘璁�;
- var acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ LifePayOrderStatusEnum status = LifePayOrderStatusEnum.寰呴��娆�;
+ 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);
switch (baseInfo.Service)
@@ -65,42 +74,60 @@
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
|| (confirmElectricOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmElectricOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
else
-
if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
{
status = LifePayOrderStatusEnum.宸插畬鎴�;
- if (confirmElectricOrderResponse.ElectricChargeOrder.ParValue == confirmElectricOrderResponse.ElectricChargeOrder.PayAmount)
- {
-
- acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
- }
- else
- {
- acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
- }
+ acoolyStatus = ACOOLYStatusEnum.宸插畬鎴�;
}
else
-
if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
{
- status = LifePayOrderStatusEnum.寰呯‘璁�;
+ status = LifePayOrderStatusEnum.鍏呭�间腑;
acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
}
else
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�)
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ refundApplyRemark = "渚涘簲鍟嗗厖鍊煎け璐�";
+ }
+ else
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
+ {
+ status = LifePayOrderStatusEnum.閫�娆句腑;
+ acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
+ }
+ else
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+ }
+ else
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
-
+ else
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閮ㄥ垎鍏呭�兼垚鍔�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+ refundApplyRemark = confirmElectricOrderResponse.ElectricChargeOrder.ResponseMessage;
+ }
break;
case ACOOLYConstant.Sevice.ConfirmPhoneOrder:
var confirmPhoneOrderResponse = JsonConvert.DeserializeObject<ConfirmPhoneOrderResponse>(body);
@@ -109,37 +136,54 @@
payAmount = confirmPhoneOrderResponse.PhoneChargeOrder.PayAmount;
_logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmPhoneOrderResponse.PhoneChargeOrder.Status);
if (!confirmPhoneOrderResponse.Success
- || (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
+ || (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
else
- if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
{
status = LifePayOrderStatusEnum.宸插畬鎴�;
- if (confirmPhoneOrderResponse.PhoneChargeOrder.ParValue == confirmPhoneOrderResponse.PhoneChargeOrder.PayAmount)
- {
-
- acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
- }
- else
- {
- acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
- }
+ acoolyStatus = ACOOLYStatusEnum.宸插畬鎴�;
}
else
- if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
{
- status = LifePayOrderStatusEnum.寰呯‘璁�;
+ status = LifePayOrderStatusEnum.鍏呭�间腑;
acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
}
else
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�)
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ }
+ else
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
+ {
+ status = LifePayOrderStatusEnum.閫�娆句腑;
+ acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
+ }
+ else
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+ }
+ else
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ }
+ else
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.閮ㄥ垎鍏呭�兼垚鍔�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
}
break;
case ACOOLYConstant.Sevice.ConfirmGasOrder:
@@ -149,45 +193,61 @@
payAmount = confirmGasOrderResponse.GasChargeOrder.PayAmount;
_logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmGasOrderResponse.GasChargeOrder.Status);
if (!confirmGasOrderResponse.Success
- || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
+ || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
else
- if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
{
status = LifePayOrderStatusEnum.宸插畬鎴�;
- // TODO 纭浠�涔堟儏鍐典笅鍙互鍒ゆ柇鏄儴鍒嗗厖鍊兼垚鍔�
-
- //if (confirmGasOrderResponse.GasChargeOrder.ParValue == confirmGasOrderResponse.GasChargeOrder.PayAmount)
- //{
-
- // acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
- //}
- //else
- //{
- // acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
- //}
+ acoolyStatus = ACOOLYStatusEnum.宸插畬鎴�;
}
else
- if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
{
- status = LifePayOrderStatusEnum.寰呯‘璁�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
}
else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�)
{
- status = LifePayOrderStatusEnum.宸插け璐�;
+ status = LifePayOrderStatusEnum.寰呴��娆�;
acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ }
+ else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑)
+ {
+ status = LifePayOrderStatusEnum.閫�娆句腑;
+ acoolyStatus = ACOOLYStatusEnum.閫�娆句腑;
+ }
+ else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.閫�娆惧畬鎴�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.宸查��娆�;
+ }
+ else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ }
+ else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.閮ㄥ垎鍏呭�兼垚鍔�)
+ {
+ status = LifePayOrderStatusEnum.寰呴��娆�;
+ acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
}
break;
default:
- break;
+ throw new UserFriendlyException("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬩笉瀛樺湪");
}
- await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount);
+ await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount, refundApplyRemark, parValue, actualParValue);
}
}
}
\ No newline at end of file
--
Gitblit v1.9.1