From 6b289dd1a8c87e64247fd6c0dd486b077b9ed21e Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期三, 02 四月 2025 16:47:39 +0800
Subject: [PATCH] fix:bug修复

---
 LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs |  184 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 162 insertions(+), 22 deletions(-)

diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index fca55d3..8ccc68d 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -16,6 +16,7 @@
 using Newtonsoft.Json;
 using LifePayment.Domain.Common;
 using Spire.Pdf.Exporting.XPS.Schema;
+using Nest;
 
 namespace LifePayment.Application.LifePay
 {
@@ -24,6 +25,7 @@
         private readonly IRepository<LifePayRechargeReceipts, Guid> _lifePayRechargeReceiptsRepository;
         private readonly IRepository<LifePayExpensesReceipts, Guid> _lifePayExpensesReceiptsRepository;
         private readonly IRepository<LifePayConsumption, Guid> _lifePayConsumption;
+        private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep;
         private readonly IRepository<LifePayChannlesRake, Guid> _lifePayChannlesRakeRepository;
         private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository;
         private readonly IAliPayApi _aliPayApi;
@@ -34,6 +36,7 @@
                               IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository,
                               IRepository<LifePayConsumption, Guid> lifePayConsumptionRepository,
                               IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository,
+                              IRepository<LifePayChannles, Guid> lifePayChannlesRep,
                               IRepository<LifePayOrder, Guid> lifePayOrderRepository,
                               IAliPayApi aliPayApi,
                               IWxPayApi wxPayApi)
@@ -42,6 +45,7 @@
             _lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository;
             _lifePayConsumption = lifePayConsumptionRepository;
             _lifePayChannlesRakeRepository = lifePayChannlesRakeRepository;
+            _lifePayChannlesRep = lifePayChannlesRep;
             _lifePayOrderRepository = lifePayOrderRepository;
             _aliPayApi = aliPayApi;
             _wxPayApi = wxPayApi;
@@ -56,8 +60,9 @@
         /// <returns></returns>
         public async Task<PageOutput<LifePayConsumptionListOutput>> GetLifePayConsumptionPage(LifePayConsumptionPageInput input)
         {
+            var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWord)).Select(x => x.ChannlesNum).ToListAsync();
             var list = await _lifePayConsumption.Where(x => x.IsDeleted == false)
-                .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.OutOrderNo.Contains(input.KeyWord) || x.ChannelId.Contains(input.KeyWord))
+                .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.AcoolyOrderNo.Contains(input.KeyWord) || channles.Contains(x.ChannelId))
                 .WhereIf(input.Flow.HasValue, x => x.Flow == input.Flow)
                 .WhereIf(input.TimeBegin.HasValue, x => x.FinishTime >= input.TimeBegin)
                 .WhereIf(input.TimeEnd.HasValue, x => x.FinishTime <= input.TimeEnd)
@@ -65,8 +70,9 @@
                 {
                     Id = x.Id,
                     OrderNo = x.OrderNo,
-                    OutOrderNo = x.OutOrderNo,
+                    AcoolyOrderNo = x.AcoolyOrderNo,
                     Amount = x.Amount,
+                    ACOOLYStatus = x.ACOOLYStatus,
                     FinishTime = x.FinishTime,
                     FrozenStatus = x.FrozenStatus,
                     Flow = x.Flow,
@@ -177,7 +183,13 @@
                 })
                 .GetPageResult(input.PageModel);
 
-            var totalRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.ChannlesRakePrice);
+            var totalRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false)
+                .WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId)
+                .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
+                .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
+                .WhereIf(input.FinishTimeBegin.HasValue, x => x.FinishTime >= input.FinishTimeBegin)
+                .WhereIf(input.FinishTimeEnd.HasValue, x => x.FinishTime <= input.FinishTimeEnd)
+                .SumAsync(x => x.ChannlesRakePrice);
 
             LifePayLifePayChannlesRakeStatistics objectData = new LifePayLifePayChannlesRakeStatistics();
             objectData.TotalRakePrice = totalRakePrice;
@@ -304,6 +316,7 @@
                                 data.OrderNo = input.OrderNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.SuccessTime);
+                                data.Amount = Convert.ToDecimal(query.Amount.Total) / 100;
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
                             }
                         }
@@ -315,6 +328,7 @@
                                 data.OrderNo = input.OutRefundNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.SuccessTime);
+                                data.Amount = Convert.ToDecimal(query.Amount.Total) / 100;
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
                             }
                         }
@@ -324,6 +338,9 @@
             }
         }
 
+
+        
+
         /// <summary>
         /// 缁熻鎵�鏈夋秷璐规祦姘�
         /// </summary>
@@ -331,26 +348,45 @@
         public async Task GetAllLifePayConsumption()
         {
             var orderList = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠�).ToListAsync();
-            
             foreach (var item in orderList)
             {
-                LifePayConsumption lifePayConsumption = new LifePayConsumption()
+                
+                if (item.ACOOLYStatus != null)
                 {
-                    OrderNo = item.OrderNo,
-                    OutOrderNo = item.OutOrderNo,
-                    //Amount = item.PayAmount,
-
-                };
-                //switch (item.ACOOLYStatus)
-                //{
-                //    case ACOOLYStatusEnum.鍏呭�间腑: 
-                        
-                //        break;
-                //    default:break;
-                //}
+                    switch (item.ACOOLYStatus)
+                    {
+                        case ACOOLYStatusEnum.鍏呭�间腑:
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            break;
+                        case ACOOLYStatusEnum.鍏呭�兼垚鍔�:
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�兼垚鍔�, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            break;
+                        case ACOOLYStatusEnum.宸插畬鎴�:
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.宸插畬鎴�, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            break;
+                        case ACOOLYStatusEnum.鍏呭�煎け璐�:
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�煎け璐�, item.OrderNo, item.ACOOLYOrderNo,
+                                item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+                            break;
+                        default: break;
+                    }
+                }
             }
         }
 
+        /// <summary>
+        /// 缁熻鎵�鏈夋敹鏀祦姘�
+        /// </summary>
+        /// <returns></returns>
         public async Task GetAllLifePayExpensesReceipts()
         {
             var orderlist = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus >= LifePayStatusEnum.宸叉敮浠�)
@@ -396,6 +432,10 @@
             }
         }
 
+        /// <summary>
+        /// 鑾峰彇鍏ㄩ儴娓犻亾鍒嗕剑
+        /// </summary>
+        /// <returns></returns>
         public async Task GetAllChannlesRake()
         {
             var orderlist = await _lifePayOrderRepository.Where(x => x.IsDeleted == false && x.PayStatus == LifePayStatusEnum.宸叉敮浠� && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).ToListAsync();
@@ -404,15 +444,16 @@
                 /// 姣涘埄
                 var grossProfit = item.RechargeAmount * (item.ChannleRate - item.PlatformRate) / 100;
                 /// 娓犻亾浣i噾  锛�(鍏呭�奸潰棰� * 娓犻亾鎶樻墸姣斾緥)-(鍏呭�奸潰棰� * 骞冲彴鎶樻墸姣斾緥)锛�* 浣i噾姣斾緥
-                var channlesRakePrice = grossProfit * (item.ChannlesRakeRate) / 100;
+                var channlesRakePrice = grossProfit * item.ChannlesRakeRate / 100;
+
                 if (channlesRakePrice.HasValue)
                 {
                     LifePayChannlesRake lifePayChannlesRake = new LifePayChannlesRake()
                     {
                         OrderNo = item.OrderNo,
-                        PayAmount = item.PayAmount.Value,
-                        ChannlesRakeRate = item.ChannlesRakeRate.Value,
-                        ChannlesRakePrice = channlesRakePrice.Value,
+                        PayAmount = item.RechargeAmount ?? 0,
+                        ChannlesRakeRate = item.ChannlesRakeRate ?? 0,
+                        ChannlesRakePrice = channlesRakePrice ?? 0,
                         FinishTime = item.FinishTime.Value,
                         ChannelId = item.ChannelId,
                     };
@@ -426,7 +467,105 @@
         }
         #endregion
 
-        #region 绉佹湁
+        #region 鏂规硶
+        public async Task CreatLifePayConsumption(ACOOLYStatusEnum status, string orderNo, string aCOOLYOrderNo,
+            decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime)
+        {
+            LifePayConsumption lifePayConsumption = new LifePayConsumption()
+            {
+                OrderNo = orderNo,
+                AcoolyOrderNo = aCOOLYOrderNo,
+                Amount = platformDeductionAmount,
+                ChannelId = channelId,
+            };
+            LifePayConsumption repeat = new LifePayConsumption();
+            switch (status)
+            {
+                case ACOOLYStatusEnum.鍏呭�间腑:
+                    lifePayConsumption.FinishTime = orderCreationTime;
+                    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.鍏呭�间腑;
+                    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Frozen;
+                    lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+                    lifePayConsumption.DeductionAmount = 0;
+                    lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+
+                    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;
+                case ACOOLYStatusEnum.宸插畬鎴�:
+                    lifePayConsumption.FinishTime = orderFinishTime.Value;
+                    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.宸插畬鎴�;
+                    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+                    lifePayConsumption.Flow = ConsumptionFlowEnum.Out;
+                    lifePayConsumption.DeductionAmount = lifePayConsumption.Amount;
+                    lifePayConsumption.FrozenAmount = 0;
+
+                    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;
+                case ACOOLYStatusEnum.鍏呭�煎け璐�:
+                    lifePayConsumption.FinishTime = orderCreationTime;
+                    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+                    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Frozen;
+                    lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+                    lifePayConsumption.DeductionAmount = 0;
+                    lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+
+                    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;
+                case ACOOLYStatusEnum.宸查��娆�:
+                    lifePayConsumption.FinishTime = orderFinishTime.Value;
+                    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.宸查��娆�;
+                    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+                    lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+                    lifePayConsumption.DeductionAmount = 0;
+                    lifePayConsumption.FrozenAmount = 0;
+
+                    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;
+
+                //case ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�:
+                //    lifePayConsumption.FinishTime = orderCreationTime;
+                //    lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+                //    lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+                //    lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+                //    lifePayConsumption.DeductionAmount = 0;
+                //    lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+
+                //    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;
+                default: break;
+            }
+        }
+
         private async Task<IQueryable<LifePayChannlesRakeListOutput>> GetLifePayChannlesRakeListFilter(LifePayChannlesRakePageInput input)
         {
             var list = _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false)
@@ -451,6 +590,7 @@
 
             return list;
         }
+
         #endregion
 
     }

--
Gitblit v1.9.1