From 02f5cf149ac0fecd8c7ee67bf57fb814d8464ba4 Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期三, 02 四月 2025 16:31:09 +0800
Subject: [PATCH] fix:统计bug修复
---
LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 155 insertions(+), 22 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index af8d6e1..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
{
@@ -182,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;
@@ -309,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);
}
}
@@ -320,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);
}
}
@@ -329,6 +338,9 @@
}
}
+
+
+
/// <summary>
/// 缁熻鎵�鏈夋秷璐规祦姘�
/// </summary>
@@ -336,28 +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,
- AcoolyOrderNo = item.ACOOLYOrderNo,
- Amount = item.PlatformDeductionAmount.Value,
- //ACOOLYStatus =
-
- };
-
- //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.宸叉敮浠�)
@@ -403,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();
@@ -411,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,
};
@@ -433,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)
@@ -458,6 +590,7 @@
return list;
}
+
#endregion
}
--
Gitblit v1.9.1