From f7b25f51b37f227120690dafb890e5669e632372 Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期五, 21 三月 2025 14:23:46 +0800
Subject: [PATCH] 实际到账金额

---
 LifePayment/LifePayment.Application/LifePay/LifePayService.cs |  101 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 83 insertions(+), 18 deletions(-)

diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index c9a5092..cfe7f0d 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -95,34 +95,40 @@
 
     public async Task<TopStatisticsOutput> GetTopStatistics()
     {
-        var today = DateTime.Now.ToString("yyyy-MM-dd");
-        var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.ToString("yyyy-MM-dd") == today).FirstOrDefaultAsync();
+        var today = DateTime.Now.Date;
+        var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today).FirstOrDefaultAsync();
         if (statistics == null)
         {
-            //var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.PayAmount);
+            var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.PayAmount);
+            var receiptsYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today).SumAsync(x => x.PayAmount);
+            var accumulatedOrders = await _lifePayOrderRepository.Where(x => x.CreationTime < today).CountAsync();
+            var ordersNumYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today).CountAsync();
+            var yesterdaySuccess = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).CountAsync();
+            var yesterdayFail = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插け璐�).CountAsync();
+            var accumulatedUsers = await _lifePayUserRepository.CountAsync();
 
             var entity = new DallyStatistics()
             {
                 Id = GuidGenerator.Create(),
                 CreationTime = DateTime.Now,
                 Amount = "0",
-                AccumulatedReceipts = "0",
-                ReceiptsYesterda = "0",
-                AccumulatedOrders = "0",
-                OrdersNumYesterda = "0",
-                YesterdaSuccess = "0",
-                YesterdaFail = "0",
-                AccumulatedUsers = "0",
+                AccumulatedReceipts = accumulatedReceipts.ToString(),
+                ReceiptsYesterday = receiptsYesterday.ToString(),
+                AccumulatedOrders = accumulatedOrders.ToString(),
+                OrdersNumYesterday = ordersNumYesterday.ToString(),
+                YesterdaySuccess = yesterdaySuccess.ToString(),
+                YesterdayFail = yesterdayFail.ToString(),
+                AccumulatedUsers = accumulatedUsers.ToString(),
             };
-
-            return new TopStatisticsOutput();
+            await _dallyStatisticsRepository.InsertAsync(entity);
+            var result = ObjectMapper.Map<DallyStatistics, TopStatisticsOutput>(entity);
+            return result;
         }
         else
         {
-            var result = ObjectMapper.Map<DallyStatistics,TopStatisticsOutput>(statistics);
+            var result = ObjectMapper.Map<DallyStatistics, TopStatisticsOutput>(statistics);
             return result;
         }
-
     }
 
     /// <summary>
@@ -274,6 +280,7 @@
                                             .WhereIf(input.EndPayTime.HasValue, x => x.PayTime <= input.EndPayTime)
                                             .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value)
                                             .WhereIf(input.PayStatus.HasValue, x => x.PayStatus == input.PayStatus.Value)
+                                            .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value)
                                             .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value)
                                             .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value)
                                             .WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.PhoneNumber.Contains(input.KeyWords) || x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords))
@@ -300,6 +307,58 @@
                                 CreationTime = a.CreationTime,
                                 RefundCheckRemark = a.RefundCheckRemark,
                                 RefundApplyRemark = a.RefundApplyRemark,
+                                RefundTime = a.RefundTime,
+                                ChannelName = b.ChannlesName,
+                                ActualRechargeAmount = a.ActualRechargeAmount,
+                                PlatformDeductionAmount = a.PlatformDeductionAmount,
+                                ACOOLYStatus = a.ACOOLYStatus,
+                                LifePayRefundStatus = a.LifePayRefundStatus,
+                            }).GetPageResult(input.PageModel);
+
+        return result;
+    }
+
+    public async Task<PageOutput<LifePayOrderListOutput>> GetLifePayRefundOrderPage(QueryLifePayRefundOrderListInput input)
+    {
+
+        var result = await (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository)
+        .Where(x => x.PayStatus == LifePayStatusEnum.寰呴��娆� || x.PayStatus == LifePayStatusEnum.宸查��娆� || x.PayStatus == LifePayStatusEnum.閫�娆句腑
+        || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳 || x.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧け璐�
+        || x.LifePayRefundStatus > LifePayRefundStatusEnum.鏃犻渶閫�娆�)
+                                            .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime)
+                                            .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime)
+                                            .WhereIf(input.BeginRefundApplyTime.HasValue, x => x.RefundApplyTime >= input.BeginRefundApplyTime)
+                                            .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType)
+                                            .WhereIf(input.EndRefundApplyTime.HasValue, x => x.RefundApplyTime <= input.EndRefundApplyTime)
+                                            .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value)
+                                            .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value)
+                                            .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value)
+                                            .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value)
+                                            .WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.PhoneNumber.Contains(input.KeyWords) || x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords))
+                            join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp
+                            from b in temp.DefaultIfEmpty()
+                            select new LifePayOrderListOutput
+                            {
+                                DiscountAmount = a.DiscountAmount,
+                                FinishTime = a.FinishTime,
+                                Id = a.Id,
+                                LifePayOrderStatus = a.LifePayOrderStatus,
+                                LifePayOrderType = a.LifePayOrderType,
+                                LifePayType = a.LifePayType,
+                                OrderNo = a.OrderNo,
+                                PayAmount = a.PayAmount,
+                                PhoneNumber = a.PhoneNumber,
+                                RechargeAmount = a.RechargeAmount,
+                                UserId = a.UserId,
+                                OutOrderNo = a.OutOrderNo,
+                                PayStatus = a.PayStatus,
+                                PayTime = a.PayTime,
+                                ACOOLYOrderNo = a.ACOOLYOrderNo,
+                                RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(),
+                                CreationTime = a.CreationTime,
+                                RefundCheckRemark = a.RefundCheckRemark,
+                                RefundApplyRemark = a.RefundApplyRemark,
+                                RefundApplyTime = a.RefundApplyTime,
                                 RefundTime = a.RefundTime,
                                 ChannelName = b.ChannlesName,
                                 ActualRechargeAmount = a.ActualRechargeAmount,
@@ -350,6 +409,7 @@
             RefundPrice = order.RefundPrice,
             PlatformRate = platformRate.Rate,
             PlatformPrice = order.PlatformDeductionAmount,
+            ElecBillUrl = order.ElecBillUrl.GetOssPath(),
             ChannleRate = channle.ChannlesRate,
             ChannlesRakeRate = channle.ChannlesRakeRate,
             ChannlesRakePrice = channlesRakePrice.HasValue ? 0 : Math.Round(channlesRakePrice.Value, 2),
@@ -399,6 +459,7 @@
             LifePayRefundStatus = order.LifePayRefundStatus,
             ActualRechargeAmount = order.ActualRechargeAmount,
             RefundPrice = order.RefundPrice,
+            ElecBillUrl = order.ElecBillUrl.GetOssPath(),
         };
 
         return result;
@@ -679,7 +740,7 @@
                 var elecInfoInput = new DataBillErceiptApplyInput
                 {
                     Type = "FUND_DETAIL",
-                    Key = orderNo
+                    Key = order.OutOrderNo
                 };
 
                 var elecInfoOutput = await _alipayInterfaceManager.DataBillErceiptApply(elecInfoInput);
@@ -877,6 +938,9 @@
                 break;
             case LifePayOrderTypeEnum.鐢佃垂璁㈠崟:
                 desc += "鐢佃垂";
+                break;
+            case LifePayOrderTypeEnum.鐕冩皵璁㈠崟:
+                desc += "鐕冩皵";
                 break;
             default:
                 break;
@@ -1139,6 +1203,7 @@
                     break;
             }
 
+            order.LifePayRefundStatus = LifePayRefundStatusEnum.鏃犻渶閫�娆�;
             order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�;
             //SetOrderStatus(order, result.Code);
             order.OutRequestNo = result.RequestNo.IsNullOrEmpty() ? null : result.RequestNo;
@@ -1148,7 +1213,7 @@
         {
             _logger.LogError(ex, "澶勭悊鐢熸椿缂磋垂鏀粯鎴愬姛鍥炶皟鏃跺紓甯�");
             order.LifePayOrderStatus = LifePayOrderStatusEnum.宸插け璐�;
-            order.PayStatus = LifePayStatusEnum.寰呴��娆�;
+            order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�;
         }
         _logger.LogError("鐢熸椿缂磋垂璁㈠崟鐘舵�侊細" + order.LifePayOrderStatus.ToString());
         await _lifePayOrderRepository.UpdateAsync(order);
@@ -1170,8 +1235,6 @@
             return;
         }
 
-        order.LifePayOrderStatus = status;
-        order.ACOOLYStatus = acoolyStatus;
         order.PlatformDeductionAmount = payAmount;
         if (acoolyOrderNo.IsNotNullOrEmpty())
         {
@@ -1188,6 +1251,8 @@
             order.PayStatus = LifePayStatusEnum.寰呴��娆�;
         }
 
+        order.LifePayOrderStatus = status;
+        order.ACOOLYStatus = acoolyStatus;
 
         await _lifePayOrderRepository.UpdateAsync(order);
     }

--
Gitblit v1.9.1