sunpengfei
2025-06-16 e0f2b29f3349d43e7f4222e079c54ba9cc4b6ee1
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;
            LifePayOrderStatusEnum status = LifePayOrderStatusEnum.已失败;
            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,49 +74,59 @@
                    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.已完成;
                        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.已退款;
                        status = LifePayOrderStatusEnum.退款中;
                        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.充值失败;
                    }
                    else
                    if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.部分充值成功)
                    {
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.部分充值成功;
                        refundApplyRemark = confirmElectricOrderResponse.ElectricChargeOrder.ResponseMessage;
                    }
                    break;
                case ACOOLYConstant.Sevice.ConfirmPhoneOrder:
@@ -119,7 +138,7 @@
                    if (!confirmPhoneOrderResponse.Success
                     || (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
                    {
                        status = LifePayOrderStatusEnum.已失败;
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.充值失败;
                    }
                    else
@@ -127,38 +146,44 @@
                     if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.充值成功)
                    {
                        status = LifePayOrderStatusEnum.已完成;
                        acoolyStatus = ACOOLYStatusEnum.充值成功;
                        acoolyStatus = ACOOLYStatusEnum.已完成;
                    }
                    else
                     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.已退款;
                        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.已失败;
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.充值失败;
                    }
                    else
                    if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.部分充值成功)
                    {
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.部分充值成功;
                    }
                    break;
                case ACOOLYConstant.Sevice.ConfirmGasOrder:
@@ -170,7 +195,7 @@
                    if (!confirmGasOrderResponse.Success
                     || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
                    {
                        status = LifePayOrderStatusEnum.已失败;
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.充值失败;
                    }
                    else
@@ -178,45 +203,51 @@
                     if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.充值成功)
                    {
                        status = LifePayOrderStatusEnum.已完成;
                        acoolyStatus = ACOOLYStatusEnum.充值成功;
                        acoolyStatus = ACOOLYStatusEnum.已完成;
                    }
                    else
                     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.已退款;
                        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.已失败;
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.充值失败;
                    }
                    else
                    if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.部分充值成功)
                    {
                        status = LifePayOrderStatusEnum.待退款;
                        acoolyStatus = ACOOLYStatusEnum.部分充值成功;
                    }
                    break;
                default:
                    throw new UserFriendlyException("ACOOLY回调通处理类型不存在");
            }
            await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount);
            await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount, refundApplyRemark, parValue, actualParValue);
        }
    }
}