From 926d1ff779b1ee9c524bc05d3f161bee6740b2a8 Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期二, 01 四月 2025 17:16:36 +0800
Subject: [PATCH] fix:bug修复

---
 LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs |   99 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 88 insertions(+), 11 deletions(-)

diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index 6e9e7e5..8bdc9a9 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -23,6 +23,8 @@
     {
         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;
@@ -31,20 +33,62 @@
         public LifePayOrderService(
                               IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository,
                               IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository,
+                              IRepository<LifePayConsumption, Guid> lifePayConsumptionRepository,
                               IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository,
+                              IRepository<LifePayChannles, Guid> lifePayChannlesRep,
                               IRepository<LifePayOrder, Guid> lifePayOrderRepository,
                               IAliPayApi aliPayApi,
                               IWxPayApi wxPayApi)
         {
             _lifePayRechargeReceiptsRepository = lifePayRechargeReceiptsRepository;
             _lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository;
+            _lifePayConsumption = lifePayConsumptionRepository;
             _lifePayChannlesRakeRepository = lifePayChannlesRakeRepository;
+            _lifePayChannlesRep = lifePayChannlesRep;
             _lifePayOrderRepository = lifePayOrderRepository;
             _aliPayApi = aliPayApi;
             _wxPayApi = wxPayApi;
         }
 
         #region 鏌ヨ
+
+        /// <summary>
+        /// 鑾峰彇娑堣垂娴佹按
+        /// </summary>
+        /// <param name="input"></param>
+        /// <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.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)
+                .Select(x => new LifePayConsumptionListOutput()
+                {
+                    Id = x.Id,
+                    OrderNo = x.OrderNo,
+                    AcoolyOrderNo = x.AcoolyOrderNo,
+                    Amount = x.Amount,
+                    ACOOLYStatus = x.ACOOLYStatus,
+                    FinishTime = x.FinishTime,
+                    FrozenStatus = x.FrozenStatus,
+                    Flow = x.Flow,
+                    DeductionAmount = x.DeductionAmount,
+                    FrozenAmount = x.FrozenAmount.Value
+                })
+                .GetPageResult(input.PageModel);
+
+            var totalDeductionAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.DeductionAmount);
+            var totalFrozenAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.FrozenAmount);
+            LifePayConsumptionStatistics objectData = new LifePayConsumptionStatistics();
+            objectData.TotalDeductionAmount = totalDeductionAmount;
+            objectData.TotalFrozenAmount = totalFrozenAmount.Value;
+            list.ObjectData = objectData;
+            return list;
+        }
+
         /// <summary>
         /// 鑾峰彇鍏呭�兼祦姘�
         /// </summary>
@@ -163,7 +207,7 @@
                 s.SerialNumber = ++i;
                 s.CreationTimeStr = s.CreationTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmmss);
                 s.PayAmountStr = s.PayAmount.ToString("F2");
-                s.ChannlesRakeRateStr = s.ChannlesRakeRate.ToString("F2");
+                s.ChannlesRakeRateStr = s.ChannlesRakeRate.ToString("F0") + "%";
                 s.ChannlesRakePriceStr = s.ChannlesRakePrice.ToString("F2");
                 s.FinishTimeStr = s.FinishTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmmss);
             });
@@ -208,7 +252,6 @@
             }
         }
 
-
         /// <summary>
         /// 鎻掑叆鏀舵敮娴佹按
         /// </summary>
@@ -223,11 +266,9 @@
                 var data = new LifePayExpensesReceipts()
                 {
                     Id = Guid.NewGuid(),
-                    OrderNo = input.OrderNo,
                     OutOrderNo = input.OutOrderNo,
                     LifePayType = input.LifePayType,
                     ExpensesReceiptsType = input.ExpensesReceiptsType,
-                    Amount = input.Amount,
                 };
 
                 switch (input.LifePayType)
@@ -239,18 +280,22 @@
                             if (query.Code == AlipayResultCode.Success && (query.TradeStatus == AlipayStatus.TRADESUCCESS
                                 || query.TradeStatus == AlipayStatus.TRADECLOSED))
                             {
+                                data.OrderNo = input.OrderNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.SendPayDate);
+                                data.Amount = Convert.ToDecimal(query.TotalAmount);
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
                             }
                         }
                         else
                         {
-                            var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo });
+                            var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo, OutRefundNo = input.OutRefundNo });
                             if (query.Code == AlipayResultCode.Success && query.RefundStatus == AlipayRefundStatus.Success)
                             {
+                                data.OrderNo = input.OutRefundNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.GmtRefundPay);
+                                data.Amount = Convert.ToDecimal(query.RefundAmount);
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
                             }
                         }
@@ -261,6 +306,7 @@
                             var query = await _wxPayApi.WxPayTradeQuery(input.OrderNo);
                             if (query.TradeState == WxPayStatus.鏀粯鎴愬姛 || query.TradeState == WxPayStatus.杞叆閫�娆�)
                             {
+                                data.OrderNo = input.OrderNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.SuccessTime);
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
@@ -268,14 +314,46 @@
                         }
                         else
                         {
-                            var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OrderNo);
+                            var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OutRefundNo);
                             if (query.Status == WxPayRefundStatus.閫�娆炬垚鍔�)
                             {
+                                data.OrderNo = input.OutRefundNo;
                                 data.ExtraProperties = JsonConvert.SerializeObject(query);
                                 data.FinishTime = Convert.ToDateTime(query.SuccessTime);
                                 await _lifePayExpensesReceiptsRepository.InsertAsync(data);
                             }
                         }
+                        break;
+                    default: break;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 缁熻鎵�鏈夋秷璐规祦姘�
+        /// </summary>
+        /// <returns></returns>
+        public async Task GetAllLifePayConsumption()
+        {
+            var orderList = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠�).ToListAsync();
+            foreach (var item in orderList)
+            {
+                LifePayConsumption lifePayConsumption = new LifePayConsumption()
+                {
+                    OrderNo = item.OrderNo,
+                    AcoolyOrderNo = item.ACOOLYOrderNo,
+                    Amount = item.PlatformDeductionAmount.Value,
+                };
+
+                switch (item.ACOOLYStatus)
+                {
+                    case ACOOLYStatusEnum.鍏呭�间腑:
+                        lifePayConsumption.FinishTime = item.CreationTime;
+                        lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.鍏呭�间腑;
+                        lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Frozen;
+                        lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+                        lifePayConsumption.DeductionAmount = 0;
+                        lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
                         break;
                     default: break;
                 }
@@ -315,15 +393,14 @@
                     /// 鍑鸿处
                     if (item.RefundOrderNo.IsNotNullOrEmpty())
                     {
-                        if (input.LifePayType == LifePayTypeEnum.WxPay)
-                        {
-                            input.OrderNo = item.RefundOrderNo;
-                        }
+                        input.OutRefundNo = item.OrderNo;
+                        input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
+                        await AddLifePayExpensesReceipts(input);
 
+                        input.OutRefundNo = item.RefundOrderNo;
                         input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
                         await AddLifePayExpensesReceipts(input);
                     }
-
                 }
             }
         }

--
Gitblit v1.9.1