From 2ba4b5952aed8356da2d41e3f6b711d4a61c656d Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期三, 02 四月 2025 16:49:46 +0800 Subject: [PATCH] fix:bug修复 --- LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 246 +++++++++++++++++++++++++++--------------------- 1 files changed, 137 insertions(+), 109 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs index cce4b86..8ccc68d 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs @@ -183,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; @@ -332,6 +338,9 @@ } } + + + /// <summary> /// 缁熻鎵�鏈夋秷璐规祦姘� /// </summary> @@ -341,31 +350,32 @@ 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.HasValue? item.PlatformDeductionAmount.Value : 0, - ChannelId = item.ChannelId, - }; + if (item.ACOOLYStatus != null) { switch (item.ACOOLYStatus) { case ACOOLYStatusEnum.鍏呭�间腑: - await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item, lifePayConsumption); + await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo, + item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime); break; case ACOOLYStatusEnum.鍏呭�兼垚鍔�: - await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item, lifePayConsumption); - await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�兼垚鍔�, item, lifePayConsumption); + 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, lifePayConsumption); - await CreatLifePayConsumption(ACOOLYStatusEnum.宸插畬鎴�, item, lifePayConsumption); + 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, lifePayConsumption); - await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�煎け璐�, item, lifePayConsumption); + 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; } @@ -373,6 +383,10 @@ } } + /// <summary> + /// 缁熻鎵�鏈夋敹鏀祦姘� + /// </summary> + /// <returns></returns> public async Task GetAllLifePayExpensesReceipts() { var orderlist = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus >= LifePayStatusEnum.宸叉敮浠�) @@ -418,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(); @@ -426,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, }; @@ -448,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) @@ -474,95 +591,6 @@ return list; } - private async Task CreatLifePayConsumption(ACOOLYStatusEnum status, LifePayOrder order, LifePayConsumption lifePayConsumption) - { - LifePayConsumption repeat = new LifePayConsumption(); - switch (status) - { - case ACOOLYStatusEnum.鍏呭�间腑: - lifePayConsumption.FinishTime = order.CreationTime; - 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 = order.FinishTime.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 = order.CreationTime; - 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 = order.FinishTime.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 = order.CreationTime; - // 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; - } - } #endregion } -- Gitblit v1.9.1