From 8c1dce43d197565302ead9d3ae78dff8ea4f9687 Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期三, 02 四月 2025 06:05:21 +0800 Subject: [PATCH] fix:bug修复 --- LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 109 insertions(+), 11 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs index 6e9e7e5..3b0b1da 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 { @@ -23,6 +24,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 +34,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 +208,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 +253,6 @@ } } - /// <summary> /// 鎻掑叆鏀舵敮娴佹按 /// </summary> @@ -223,11 +267,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 +281,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 +307,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,9 +315,10 @@ } 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); @@ -279,6 +327,34 @@ 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.HasValue? item.PlatformDeductionAmount.Value : 0, + }; + if (item.ACOOLYStatus != null) + { + switch (item.ACOOLYStatus) + { + case ACOOLYStatusEnum.鍏呭�间腑: + await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item, lifePayConsumption); + break; + } + } + } } @@ -315,15 +391,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); } - } } } @@ -383,6 +458,29 @@ return list; } + + private async Task CreatLifePayConsumption(ACOOLYStatusEnum status, LifePayOrder order, LifePayConsumption 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; + + var 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