From 95798bbe8e398d3dd75926e18dfef2e14d1bc7cc Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期一, 31 三月 2025 10:18:10 +0800
Subject: [PATCH] fix:流水分页数据返回结果更新
---
LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 136 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 103 insertions(+), 33 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index 6f42071..f17ba62 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
{
@@ -20,17 +21,20 @@
{
private readonly IRepository<LifePayRechargeReceipts, Guid> _lifePayRechargeReceiptsRepository;
private readonly IRepository<LifePayExpensesReceipts, Guid> _lifePayExpensesReceiptsRepository;
+ private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository;
private readonly IAliPayApi _aliPayApi;
private readonly IWxPayApi _wxPayApi;
public LifePayOrderService(
IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository,
IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository,
+ IRepository<LifePayOrder, Guid> lifePayOrderRepository,
IAliPayApi aliPayApi,
IWxPayApi wxPayApi)
{
_lifePayRechargeReceiptsRepository = lifePayRechargeReceiptsRepository;
_lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository;
+ _lifePayOrderRepository = lifePayOrderRepository;
_aliPayApi = aliPayApi;
_wxPayApi = wxPayApi;
}
@@ -40,7 +44,7 @@
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
- public async Task<LifePayRechargeReceiptsPageOutput<LifePayRechargeReceiptsListOutput>> GetLifePayRechargeReceiptsPage(LifePayRechargeReceiptsPageInput input)
+ public async Task<PageOutput<LifePayRechargeReceiptsListOutput>> GetLifePayRechargeReceiptsPage(LifePayRechargeReceiptsPageInput input)
{
var list = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false)
.WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord))
@@ -58,10 +62,10 @@
.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;
+ LifePayRechargeReceiptsStatistics objectData = new LifePayRechargeReceiptsStatistics();
+ objectData.TotalRechargeAmount = total;
+ list.ObjectData = objectData;
+ return list;
}
@@ -100,31 +104,42 @@
}
}
+ /// <summary>
+ /// 鑾峰彇鏀舵敮娴佹按
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<PageOutput<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.Value,
+ 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);
+ LifePayExpensesReceiptsStatistics objectData = new LifePayExpensesReceiptsStatistics();
+ objectData.TotalIncome = totalIncome;
+ objectData.TotalRefund = totalRefund;
+ objectData.RealIncome = totalIncome - totalRefund;
+ list.ObjectData = objectData;
+ return list;
+ }
/// <summary>
/// 鎻掑叆鏀舵敮娴佹按
@@ -144,7 +159,7 @@
OutOrderNo = input.OutOrderNo,
LifePayType = input.LifePayType,
ExpensesReceiptsType = input.ExpensesReceiptsType,
- Amount = input.Amount
+ Amount = input.Amount,
};
switch (input.LifePayType)
@@ -153,8 +168,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 +181,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.GmtRefundPay);
await _lifePayExpensesReceiptsRepository.InsertAsync(data);
}
}
@@ -171,25 +191,75 @@
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);
}
}
else
{
var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OrderNo);
- if (query.Code == AlipayResultCode.Success && query.RefundStatus == WxPayRefundStatus.閫�娆炬垚鍔�)
+ if (query.Status == WxPayRefundStatus.閫�娆炬垚鍔�)
{
+ data.ExtraProperties = JsonConvert.SerializeObject(query);
+ data.FinishTime = Convert.ToDateTime(query.SuccessTime);
await _lifePayExpensesReceiptsRepository.InsertAsync(data);
}
}
break;
default: break;
}
-
-
}
}
+
+ public async Task GetAllLifePayExpensesReceipts()
+ {
+ var orderlist = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus >= LifePayStatusEnum.宸叉敮浠�)
+ join b in _lifePayExpensesReceiptsRepository on a.OrderNo equals b.OrderNo into temp
+ from b in temp.DefaultIfEmpty()
+ select new LifePayExpensesReceiptsTemp()
+ {
+ OrderNo = a.OrderNo,
+ OutOrderNo = a.OutOrderNo,
+ RefundOrderNo = a.RefundOrderNo,
+ LifePayType = a.LifePayType.Value,
+ Amount = a.PayAmount.Value,
+ ExpensesReceiptsType = b.ExpensesReceiptsType
+ }).ToListAsync();
+ foreach (var item in orderlist)
+ {
+ if (!item.ExpensesReceiptsType.HasValue)
+ {
+ /// 鍏ヨ处
+ AddLifePayExpensesReceiptsInput input = new AddLifePayExpensesReceiptsInput()
+ {
+ OrderNo = item.OrderNo,
+ OutOrderNo = item.OutOrderNo,
+ LifePayType = item.LifePayType,
+ Amount = item.Amount,
+ ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses
+ };
+
+ await AddLifePayExpensesReceipts(input);
+
+ /// 鍑鸿处
+ if (item.RefundOrderNo.IsNotNullOrEmpty())
+ {
+ if (input.LifePayType == LifePayTypeEnum.WxPay)
+ {
+ input.OrderNo = item.RefundOrderNo;
+ }
+
+ input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
+ await AddLifePayExpensesReceipts(input);
+ }
+
+
+ }
+ }
+
+ }
}
}
--
Gitblit v1.9.1