From fad9a422ecd3a90bec63c9045bf7f23c49452748 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 11 六月 2025 10:28:36 +0800
Subject: [PATCH] fix:修订累计扣款和冻结金额状态

---
 LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs |   59 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index 6f8ca5a..b93f77b 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -78,8 +78,8 @@
                 })
                 .GetPageResult(input.PageModel);
 
-            var totalDeductionAmount = await _lifePayConsumption.SumAsync(x => x.DeductionAmount);
-            var totalFrozenAmount = await _lifePayConsumption.SumAsync(x => x.FrozenAmount);
+            var totalDeductionAmount = await _lifePayConsumption.Where(it => it.ACOOLYStatus == ACOOLYStatusEnum.宸插畬鎴� || it.ACOOLYStatus == ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�).SumAsync(x => x.DeductionAmount);
+            var totalFrozenAmount = await _lifePayConsumption.Where(it => it.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�间腑 || it.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�煎け璐�).SumAsync(x => x.FrozenAmount);
             LifePayConsumptionStatistics objectData = new LifePayConsumptionStatistics();
             objectData.TotalDeductionAmount = totalDeductionAmount;
             objectData.TotalFrozenAmount = totalFrozenAmount ?? 0;
@@ -215,6 +215,7 @@
                 s.ChannlesRakePriceStr = s.ChannlesRakePrice.ToString("F2");
                 s.FinishTimeStr = s.FinishTime.HasValue ? s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmmss) : "";
             });
+            CheckExtensions.IfTrueThrowUserFriendlyException(result.IsNullOrEmpty(), "鏆傛棤鏁版嵁瀵煎嚭");
             return result;
         }
 
@@ -265,7 +266,7 @@
         {
             var repeat = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == input.ExpensesReceiptsType
             && x.OrderNo == input.OrderNo).AnyAsync();
-            if (repeat)
+            if (!repeat)
             {
                 var data = new LifePayExpensesReceipts()
                 {
@@ -336,7 +337,7 @@
         }
 
 
-        
+
 
         /// <summary>
         /// 缁熻鎵�鏈夋秷璐规祦姘�
@@ -347,7 +348,7 @@
             var orderList = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠�).ToListAsync();
             foreach (var item in orderList)
             {
-                
+
                 if (item.ACOOLYStatus != null)
                 {
                     switch (item.ACOOLYStatus)
@@ -463,7 +464,7 @@
                     }
 
                     var repeat = await _lifePayChannlesRakeRepository.Where(x => x.OrderNo == item.OrderNo).AnyAsync();
-                    if (repeat)
+                    if (!repeat)
                     {
                         await _lifePayChannlesRakeRepository.InsertAsync(lifePayChannlesRake);
                     }
@@ -474,7 +475,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,28 +526,38 @@
                     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;
             }
 
             var repeat = await _lifePayConsumption.Where(x => x.OrderNo == lifePayConsumption.OrderNo
                    && x.ACOOLYStatus == lifePayConsumption.ACOOLYStatus && x.Flow == lifePayConsumption.Flow).AnyAsync();
-            if (repeat)
+            if (!repeat)
             {
                 await _lifePayConsumption.InsertAsync(lifePayConsumption);
             }
@@ -572,8 +583,6 @@
                     FinishTime = x.FinishTime,
                     CreationTime = x.CreationTime,
                 });
-
-
             return list;
         }
 

--
Gitblit v1.9.1