From 65e7b312659c358970262b027901bb55d764f0f9 Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期日, 30 三月 2025 07:32:35 +0800 Subject: [PATCH] fix:拉取收支流水 --- LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 73 +++++++++++++++++++++++------------- 1 files changed, 46 insertions(+), 27 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs index 6f42071..f199443 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs @@ -13,6 +13,7 @@ using ZeroD.Util; using LifePayment.Domain; using static LifePayment.Domain.Shared.LifePaymentConstant; +using Newtonsoft.Json; namespace LifePayment.Application.LifePay { @@ -100,31 +101,42 @@ } } + /// <summary> + /// 鑾峰彇鏀舵敮娴佹按 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<LifePayExpensesReceiptsPageOutput<LifePayExpensesReceiptsListOutput>> GetLifePayExpensesReceiptsPage(LifePayExpensesReceiptsPageInput input) + { + var list = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false) + .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.OutOrderNo.Contains(input.KeyWord)) + .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) + .WhereIf(input.ExpensesReceiptsType.HasValue, x => x.ExpensesReceiptsType == input.ExpensesReceiptsType) + .WhereIf(input.TimeBegin.HasValue, x => x.FinishTime >= input.TimeBegin) + .WhereIf(input.TimeEnd.HasValue, x => x.FinishTime <= input.TimeEnd) - //public async Task<LifePayExpensesReceiptsPageOutput<LifePayExpensesReceiptsListOutput>> GetLifePayExpensesReceiptsPage(LifePayExpensesReceiptsPageInput input) - //{ - // var list = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false) - // .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord)) - // .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) - // .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) - // .Select(x => new LifePayRechargeReceiptsListOutput() - // { - // Id = x.Id, - // OrderNo = x.OrderNo, - // RechargeAmount = x.RechargeAmount, - // Remark = x.Remark, - // Voucher = x.Voucher.GetOssPath(), - // CreationTime = x.CreationTime, - // }) - // .GetPageResult(input.PageModel); + .Select(x => new LifePayExpensesReceiptsListOutput() + { + Id = x.Id, + OrderNo = x.OrderNo, + OutOrderNo = x.OutOrderNo, + LifePayType = x.LifePayType, + ExpensesReceiptsType = x.ExpensesReceiptsType, + Amount = x.Amount, + FinishTime = x.FinishTime + }) + .GetPageResult(input.PageModel); - // var total = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.RechargeAmount); - // LifePayRechargeReceiptsPageOutput<LifePayRechargeReceiptsListOutput> result = new LifePayRechargeReceiptsPageOutput<LifePayRechargeReceiptsListOutput>(); - // result.Data = list.Data; - // result.TotalRechargeAmount = total; - // return result; - //} + var totalIncome = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses).SumAsync(x => x.Amount); + var totalRefund = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Receipts).SumAsync(x => x.Amount); + LifePayExpensesReceiptsPageOutput<LifePayExpensesReceiptsListOutput> result = new LifePayExpensesReceiptsPageOutput<LifePayExpensesReceiptsListOutput>(); + result.Data = list.Data; + result.TotalIncome = totalIncome; + result.TotalRefund = totalRefund; + result.RealIncome = totalIncome - totalRefund; + return result; + } /// <summary> /// 鎻掑叆鏀舵敮娴佹按 @@ -144,7 +156,7 @@ OutOrderNo = input.OutOrderNo, LifePayType = input.LifePayType, ExpensesReceiptsType = input.ExpensesReceiptsType, - Amount = input.Amount + Amount = input.Amount, }; switch (input.LifePayType) @@ -153,8 +165,11 @@ if (input.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses) { var query = await _aliPayApi.OrderInQuiry(new OrderInQuiryInput() { OutTradeNo = input.OrderNo }); - if (query.Code == AlipayResultCode.Success && query.TradeStatus == AlipayStatus.TRADESUCCESS) + if (query.Code == AlipayResultCode.Success && (query.TradeStatus == AlipayStatus.TRADESUCCESS + || query.TradeStatus == AlipayStatus.TRADECLOSED)) { + data.ExtraProperties = JsonConvert.SerializeObject(query); + data.FinishTime = Convert.ToDateTime(query.SendPayDate); await _lifePayExpensesReceiptsRepository.InsertAsync(data); } } @@ -163,6 +178,8 @@ var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo }); if (query.Code == AlipayResultCode.Success && query.RefundStatus == AlipayRefundStatus.Success) { + data.ExtraProperties = JsonConvert.SerializeObject(query); + //data.FinishTime = Convert.ToDateTime(query.SendPayDate); await _lifePayExpensesReceiptsRepository.InsertAsync(data); } } @@ -171,8 +188,10 @@ if (input.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses) { var query = await _wxPayApi.WxPayTradeQuery(input.OrderNo); - if (query.Code == AlipayResultCode.Success && query.Status == WxPayStatus.鏀粯鎴愬姛) + if (query.TradeState == WxPayStatus.鏀粯鎴愬姛 || query.TradeState == WxPayStatus.杞叆閫�娆�) { + data.ExtraProperties = JsonConvert.SerializeObject(query); + data.FinishTime = Convert.ToDateTime(query.SuccessTime); await _lifePayExpensesReceiptsRepository.InsertAsync(data); } } @@ -181,14 +200,14 @@ var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OrderNo); if (query.Code == AlipayResultCode.Success && query.RefundStatus == WxPayRefundStatus.閫�娆炬垚鍔�) { + data.ExtraProperties = JsonConvert.SerializeObject(query); + data.FinishTime = Convert.ToDateTime(query.SuccessTime); await _lifePayExpensesReceiptsRepository.InsertAsync(data); } } break; default: break; } - - } } } -- Gitblit v1.9.1