From d0558ff1687a1bffd62c45660d4bab3132643039 Mon Sep 17 00:00:00 2001
From: lingling <kety1122@163.com>
Date: 星期三, 16 四月 2025 17:44:07 +0800
Subject: [PATCH] fix bug

---
 LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml    |    5 ++
 LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs             |    7 +++
 LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs            |   46 ++++++++++++++---------
 LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs |    2 
 LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs                  |   12 ++++++
 LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs      |    7 ++-
 LifePayment/LifePayment.Application/LifePay/LifePayService.cs                 |   18 ++-------
 LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs             |   18 ++++++---
 8 files changed, 71 insertions(+), 44 deletions(-)

diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
index 9470350..3f2a7a5 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
@@ -31,5 +31,5 @@
     Task GetAllLifePayConsumption();
 
     Task CreatLifePayConsumption(ACOOLYStatusEnum status, string orderNo, string aCOOLYOrderNo,
-            decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime);
+            decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime, decimal? channleRate = 0, decimal? parValue = 0, decimal? actualParValue = 0);
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
index cd98ea9..4e9b5fa 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -58,8 +58,6 @@
     /// <returns></returns>
     Task LifePayRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus);
 
-    
-
     /// <summary>
     /// 渚涘簲鍟嗗洖璋冨鐞�
     /// </summary>
@@ -68,8 +66,11 @@
     /// <param name="status"></param>
     /// <param name="acoolyStatus"></param>
     /// <param name="payAmount"></param>
+    /// <param name="refundApplyRemark"></param>
+    /// <param name="parValue"></param>
+    /// <param name="actualParValue"></param>
     /// <returns></returns>
-    Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark);
+    Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark, decimal? parValue = 0, decimal? actualParValue = 0);
 
     /// <summary>
     /// 鍒涘缓鐢熸椿缂磋垂璇濊垂璁㈠崟
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index 1bca3f1..4bb201c 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -336,7 +336,7 @@
         }
 
 
-        
+
 
         /// <summary>
         /// 缁熻鎵�鏈夋秷璐规祦姘�
@@ -347,7 +347,7 @@
             var orderList = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠�).ToListAsync();
             foreach (var item in orderList)
             {
-                
+
                 if (item.ACOOLYStatus != null)
                 {
                     switch (item.ACOOLYStatus)
@@ -474,7 +474,7 @@
 
         #region 鏂规硶
         public async Task CreatLifePayConsumption(ACOOLYStatusEnum status, string orderNo, string aCOOLYOrderNo,
-            decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime)
+            decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime, decimal? channelRate = 0, decimal? parValue = 0, decimal? actualParValue = 0)
         {
             LifePayConsumption lifePayConsumption = new LifePayConsumption()
             {
@@ -525,22 +525,32 @@
                     lifePayConsumption.DeductionAmount = 0;
                     lifePayConsumption.FrozenAmount = 0;
                     break;
-                //case ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�:
-                //    lifePayConsumption.FinishTime = orderCreationTime;
-                //    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
-                //    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
-                //    lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
-                //    lifePayConsumption.DeductionAmount = 0;
-                //    lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+                case ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�:
+                    lifePayConsumption.FinishTime = orderCreationTime;
+                    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+                    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+                    lifePayConsumption.Flow = ConsumptionFlowEnum.Out;
+                    lifePayConsumption.DeductionAmount = lifePayConsumption.Amount;
+                    lifePayConsumption.FrozenAmount = 0;
+                    if ((parValue ?? 0) != 0 && (parValue ?? 0) != actualParValue)
+                    {
+                        LifePayConsumption lifePayConsumptionOther = new LifePayConsumption()
+                        {
+                            OrderNo = orderNo,
+                            AcoolyOrderNo = aCOOLYOrderNo,
+                            Amount = ((parValue ?? 0) - (actualParValue ?? 0)) * (channelRate ?? 0),
+                            ChannelId = channelId,
+                            FinishTime = orderCreationTime,
+                            ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�,
+                            FrozenStatus = ConsumptionFrozenStatusEnum.Thaw,
+                            Flow = ConsumptionFlowEnum.Unchanged,
+                            DeductionAmount = 0,
+                            FrozenAmount = 0
+                        };
+                        await _lifePayConsumption.InsertAsync(lifePayConsumptionOther);
+                    }
 
-                //    repeat = await _lifePayConsumption.Where(x => x.OrderNo == lifePayConsumption.OrderNo
-                //    && x.ACOOLYStatus == lifePayConsumption.ACOOLYStatus && x.Flow == lifePayConsumption.Flow).FirstOrDefaultAsync();
-                //    if (repeat == null)
-                //    {
-                //        await _lifePayConsumption.InsertAsync(lifePayConsumption);
-                //    }
-
-                //    break;
+                    break;
                 default: break;
             }
 
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index bb94bcb..7155429 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -1,4 +1,5 @@
-锘縰sing LifePayment.Application.Contracts;
+锘縰sing Alipay.EasySDK.Payment.Common.Models;
+using LifePayment.Application.Contracts;
 using LifePayment.Domain;
 using LifePayment.Domain.LifePay;
 using LifePayment.Domain.Models;
@@ -19,18 +20,7 @@
 using Volo.Abp.EventBus.Distributed;
 using Z.EntityFramework.Plus;
 using ZeroD.Util;
-using Alipay.EasySDK.Payment.Common.Models;
 using static LifePayment.Domain.Shared.LifePaymentConstant;
-using ZeroD.Util.Fadd;
-using Nest;
-using Volo.Abp.Domain.Entities;
-using Volo.Abp.ObjectMapping;
-using NPOI.SS.Formula.Functions;
-using StackExchange.Redis;
-using static Volo.Abp.Identity.Settings.IdentitySettingNames;
-using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
-using LifePayment.Application.LifePay;
-using Alipay.AopSdk.Core.Domain;
 
 namespace LifePayment.Application;
 
@@ -1378,7 +1368,7 @@
     /// <param name="orderNo"></param>
     /// <param name="outOrderNo"></param>
     /// <returns></returns>
-    public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark)
+    public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark, decimal? parValue = 0, decimal? actualParValue = 0)
     {
         var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
         CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
@@ -1434,7 +1424,7 @@
 
         /// 鍒涘缓鐢熸椿缂磋垂娑堣垂璁板綍
         await _lifePayOrderService.CreatLifePayConsumption(acoolyStatus, order.OrderNo, order.ACOOLYOrderNo,
-                    order.PlatformDeductionAmount ?? 0, order.ChannelId, order.CreationTime, order.FinishTime);
+                    order.PlatformDeductionAmount ?? 0, order.ChannelId, order.CreationTime, order.FinishTime, order.ChannleRate, parValue, actualParValue);
     }
 
     /// <summary>
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
index 3375781..d8555e3 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
@@ -471,6 +471,12 @@
     [JsonProperty("parValue")]
     public decimal ParValue { get; set; }
 
+
+    /// <summary>
+    /// 瀹為檯鍒拌处閲戦銆�
+    /// </summary>
+    [JsonProperty("actualParValue")]
+    public decimal ActualParValue { get; set; }
     /// <summary>
     /// 瀹為檯鎵f閲戦锛屽崟浣嶄负鍏冦��
     /// </summary>
@@ -489,6 +495,12 @@
     [JsonProperty("statusText")]
     public string StatusText { get; set; }
 
+    /// <summary>
+    /// 閫氱煡娑堟伅
+    /// </summary>
+    [JsonProperty("responseMessage")]
+    public string ResponseMessage {  get; set; }
+
 }
 
 /// <summary>
diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
index 0d6aa37..ea4efed 100644
--- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -50,7 +50,7 @@
             <param name="refundStatus"></param>
             <returns></returns>
         </member>
-        <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum,LifePayment.Domain.Shared.ACOOLYStatusEnum,System.Decimal,System.String)">
+        <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum,LifePayment.Domain.Shared.ACOOLYStatusEnum,System.Decimal,System.String,System.Nullable{System.Decimal},System.Nullable{System.Decimal})">
             <summary>
             渚涘簲鍟嗗洖璋冨鐞�
             </summary>
@@ -59,6 +59,9 @@
             <param name="status"></param>
             <param name="acoolyStatus"></param>
             <param name="payAmount"></param>
+            <param name="refundApplyRemark"></param>
+            <param name="parValue"></param>
+            <param name="actualParValue"></param>
             <returns></returns>
         </member>
         <member name="M:LifePayment.Application.Contracts.ILifePayService.CreateLifePayPhoneOrder(LifePayment.Application.Contracts.CreateLifePayOrderInput{LifePayment.Application.Contracts.LifePhoneData})">
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
index bd6e839..b7dd3a4 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
@@ -56,6 +56,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 +68,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
@@ -116,6 +120,7 @@
                     {
                         status = LifePayOrderStatusEnum.寰呴��娆�;
                         acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+                        refundApplyRemark = confirmElectricOrderResponse.ElectricChargeOrder.ResponseMessage;
                     }
                     break;
                 case ACOOLYConstant.Sevice.ConfirmPhoneOrder:
@@ -236,7 +241,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
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
index 0ff58ca..1dc7f00 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
@@ -63,11 +63,17 @@
                 {
                     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 _lifePayService.LifePayRefundsHandler(input.OutTradeNo, LifePayRefundStatusEnum.宸查��娆�);
                     // 鎻掑叆鏀舵敮娴佹按
@@ -83,7 +89,7 @@
             }
             else
             {
-                   _logger.LogError($"鐢熸椿绠″鏀粯瀹濆厖鍊煎洖璋冮�氱煡锛氳鍗曞彿寮傚父 " + input.OutTradeNo);
+                _logger.LogError($"鐢熸椿绠″鏀粯瀹濆厖鍊煎洖璋冮�氱煡锛氳鍗曞彿寮傚父 " + input.OutTradeNo);
             }
 
             return new ContentResult
@@ -114,7 +120,7 @@
         }
 
 
-        
+
 #endif
 
         /// <summary>

--
Gitblit v1.9.1