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, 68 insertions(+), 5 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs index 6eb97db..f199443 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs @@ -12,6 +12,8 @@ using Microsoft.EntityFrameworkCore; using ZeroD.Util; using LifePayment.Domain; +using static LifePayment.Domain.Shared.LifePaymentConstant; +using Newtonsoft.Json; namespace LifePayment.Application.LifePay { @@ -100,6 +102,43 @@ } /// <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) + + .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 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> /// 鎻掑叆鏀舵敮娴佹按 /// </summary> /// <param name="input"></param> @@ -117,7 +156,7 @@ OutOrderNo = input.OutOrderNo, LifePayType = input.LifePayType, ExpensesReceiptsType = input.ExpensesReceiptsType, - Amount = input.Amount + Amount = input.Amount, }; switch (input.LifePayType) @@ -126,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); } } @@ -136,15 +178,36 @@ 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); } } break; - case LifePayTypeEnum.WxPay: break; + case LifePayTypeEnum.WxPay: + if (input.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses) + { + var query = await _wxPayApi.WxPayTradeQuery(input.OrderNo); + if (query.TradeState == WxPayStatus.鏀粯鎴愬姛 || query.TradeState == WxPayStatus.杞叆閫�娆�) + { + data.ExtraProperties = JsonConvert.SerializeObject(query); + data.FinishTime = Convert.ToDateTime(query.SuccessTime); + await _lifePayExpensesReceiptsRepository.InsertAsync(data); + } + } + else + { + 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