From bda2679db0d10a0328a71ff4f55f000d26ef10dc Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期五, 21 三月 2025 14:51:32 +0800
Subject: [PATCH] fix:bug修复

---
 LifePayment/LifePayment.Application/LifePay/LifePayService.cs |  116 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 96 insertions(+), 20 deletions(-)

diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index a06be30..e24db15 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -95,34 +95,41 @@
 
     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 accumulatedIncome = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.ActualRechargeAmount);
+            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",
+                Amount = 0,
+                AccumulatedReceipts = accumulatedReceipts,
+                ReceiptsYesterday = receiptsYesterday,
+                AccumulatedOrders = accumulatedOrders,
+                OrdersNumYesterday = ordersNumYesterday,
+                YesterdaySuccess = yesterdaySuccess,
+                YesterdayFail = yesterdayFail,
+                AccumulatedUsers = accumulatedUsers,
             };
-
+            await _dallyStatisticsRepository.InsertAsync(entity);
+            //var result = ObjectMapper.Map<DallyStatistics, TopStatisticsOutput>(entity);
             return new TopStatisticsOutput();
         }
         else
         {
-            var result = ObjectMapper.Map<DallyStatistics,TopStatisticsOutput>(statistics);
+            var result = ObjectMapper.Map<DallyStatistics, TopStatisticsOutput>(statistics);
             return result;
         }
-
     }
 
     /// <summary>
@@ -274,6 +281,64 @@
                                             .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))
+                            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(),
+                                RefundPrice = a.RefundPrice,
+                                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;
+    }
+
+    /// <summary>
+    /// 閫�娆捐鍗曞垎椤�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    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))
@@ -300,7 +365,9 @@
                                 CreationTime = a.CreationTime,
                                 RefundCheckRemark = a.RefundCheckRemark,
                                 RefundApplyRemark = a.RefundApplyRemark,
+                                RefundApplyTime = a.RefundApplyTime,
                                 RefundTime = a.RefundTime,
+                                RefundPrice = a.RefundPrice,
                                 ChannelName = b.ChannlesName,
                                 ActualRechargeAmount = a.ActualRechargeAmount,
                                 PlatformDeductionAmount = a.PlatformDeductionAmount,
@@ -350,6 +417,8 @@
             RefundPrice = order.RefundPrice,
             PlatformRate = platformRate.Rate,
             PlatformPrice = order.PlatformDeductionAmount,
+            ElecBillUrl = order.ElecBillUrl.GetOssPath(),
+            RefundElecBillUrl = order.RefundElecBillUrl.GetOssPath(),
             ChannleRate = channle.ChannlesRate,
             ChannlesRakeRate = channle.ChannlesRakeRate,
             ChannlesRakePrice = channlesRakePrice.HasValue ? 0 : Math.Round(channlesRakePrice.Value, 2),
@@ -398,7 +467,10 @@
             ACOOLYOrderNo = order.ACOOLYOrderNo,
             LifePayRefundStatus = order.LifePayRefundStatus,
             ActualRechargeAmount = order.ActualRechargeAmount,
+            ActualReceivedAmount = order.ActualReceivedAmount,
             RefundPrice = order.RefundPrice,
+            ElecBillUrl = order.ElecBillUrl.GetOssPath(),
+            RefundElecBillUrl = order.RefundElecBillUrl.GetOssPath(),
         };
 
         return result;
@@ -679,7 +751,7 @@
                 var elecInfoInput = new DataBillErceiptApplyInput
                 {
                     Type = "FUND_DETAIL",
-                    Key = orderNo
+                    Key = order.OutOrderNo
                 };
 
                 var elecInfoOutput = await _alipayInterfaceManager.DataBillErceiptApply(elecInfoInput);
@@ -877,6 +949,9 @@
                 break;
             case LifePayOrderTypeEnum.鐢佃垂璁㈠崟:
                 desc += "鐢佃垂";
+                break;
+            case LifePayOrderTypeEnum.鐕冩皵璁㈠崟:
+                desc += "鐕冩皵";
                 break;
             default:
                 break;
@@ -1139,6 +1214,7 @@
                     break;
             }
 
+            order.LifePayRefundStatus = LifePayRefundStatusEnum.鏃犻渶閫�娆�;
             order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�;
             //SetOrderStatus(order, result.Code);
             order.OutRequestNo = result.RequestNo.IsNullOrEmpty() ? null : result.RequestNo;
@@ -1148,7 +1224,7 @@
         {
             _logger.LogError(ex, "澶勭悊鐢熸椿缂磋垂鏀粯鎴愬姛鍥炶皟鏃跺紓甯�");
             order.LifePayOrderStatus = LifePayOrderStatusEnum.宸插け璐�;
-            order.PayStatus = LifePayStatusEnum.寰呴��娆�;
+            order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�;
         }
         _logger.LogError("鐢熸椿缂磋垂璁㈠崟鐘舵�侊細" + order.LifePayOrderStatus.ToString());
         await _lifePayOrderRepository.UpdateAsync(order);
@@ -1170,8 +1246,6 @@
             return;
         }
 
-        order.LifePayOrderStatus = status;
-        order.ACOOLYStatus = acoolyStatus;
         order.PlatformDeductionAmount = payAmount;
         if (acoolyOrderNo.IsNotNullOrEmpty())
         {
@@ -1188,6 +1262,8 @@
             order.PayStatus = LifePayStatusEnum.寰呴��娆�;
         }
 
+        order.LifePayOrderStatus = status;
+        order.ACOOLYStatus = acoolyStatus;
 
         await _lifePayOrderRepository.UpdateAsync(order);
     }
@@ -1605,10 +1681,10 @@
     private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
     {
         /// 姝e父鏀粯
-        var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
+        //var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
 
         /// 1鍒嗛挶鏀粯
-        //decimal payAmount = 0.01m;
+        decimal payAmount = 0.01m;
 
         CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "鏀粯閲戦閿欒");
 

--
Gitblit v1.9.1