feat: 增加分页排序与FluentValidation
This commit is contained in:
@@ -52,6 +52,7 @@ public sealed class CreatePaymentCommandHandler(IPaymentRepository paymentReposi
|
||||
PaidAt = payment.PaidAt,
|
||||
Remark = payment.Remark,
|
||||
Payload = payment.Payload,
|
||||
CreatedAt = payment.CreatedAt,
|
||||
Refunds = refunds.Select(x => new PaymentRefundDto
|
||||
{
|
||||
Id = x.Id,
|
||||
|
||||
@@ -45,6 +45,7 @@ public sealed class GetPaymentByIdQueryHandler(
|
||||
PaidAt = payment.PaidAt,
|
||||
Remark = payment.Remark,
|
||||
Payload = payment.Payload,
|
||||
CreatedAt = payment.CreatedAt,
|
||||
Refunds = refunds.Select(x => new PaymentRefundDto
|
||||
{
|
||||
Id = x.Id,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using MediatR;
|
||||
using TakeoutSaaS.Application.App.Payments.Dto;
|
||||
using TakeoutSaaS.Application.App.Payments.Queries;
|
||||
using TakeoutSaaS.Domain.Payments.Entities;
|
||||
using TakeoutSaaS.Domain.Payments.Repositories;
|
||||
using TakeoutSaaS.Shared.Abstractions.Tenancy;
|
||||
|
||||
@@ -28,7 +29,13 @@ public sealed class SearchPaymentsQueryHandler(
|
||||
payments = payments.Where(x => x.OrderId == request.OrderId.Value).ToList();
|
||||
}
|
||||
|
||||
return payments.Select(payment => new PaymentDto
|
||||
var sorted = ApplySorting(payments, request.SortBy, request.SortDescending);
|
||||
var paged = sorted
|
||||
.Skip((request.Page - 1) * request.PageSize)
|
||||
.Take(request.PageSize)
|
||||
.ToList();
|
||||
|
||||
return paged.Select(payment => new PaymentDto
|
||||
{
|
||||
Id = payment.Id,
|
||||
TenantId = payment.TenantId,
|
||||
@@ -40,7 +47,22 @@ public sealed class SearchPaymentsQueryHandler(
|
||||
ChannelTransactionId = payment.ChannelTransactionId,
|
||||
PaidAt = payment.PaidAt,
|
||||
Remark = payment.Remark,
|
||||
Payload = payment.Payload
|
||||
Payload = payment.Payload,
|
||||
CreatedAt = payment.CreatedAt
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
private static IOrderedEnumerable<Domain.Payments.Entities.PaymentRecord> ApplySorting(
|
||||
IReadOnlyCollection<Domain.Payments.Entities.PaymentRecord> payments,
|
||||
string? sortBy,
|
||||
bool sortDescending)
|
||||
{
|
||||
return sortBy?.ToLowerInvariant() switch
|
||||
{
|
||||
"paidat" => sortDescending ? payments.OrderByDescending(x => x.PaidAt) : payments.OrderBy(x => x.PaidAt),
|
||||
"status" => sortDescending ? payments.OrderByDescending(x => x.Status) : payments.OrderBy(x => x.Status),
|
||||
"amount" => sortDescending ? payments.OrderByDescending(x => x.Amount) : payments.OrderBy(x => x.Amount),
|
||||
_ => sortDescending ? payments.OrderByDescending(x => x.CreatedAt) : payments.OrderBy(x => x.CreatedAt)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ public sealed class UpdatePaymentCommandHandler(
|
||||
PaidAt = payment.PaidAt,
|
||||
Remark = payment.Remark,
|
||||
Payload = payment.Payload,
|
||||
CreatedAt = payment.CreatedAt,
|
||||
Refunds = refunds.Select(x => new PaymentRefundDto
|
||||
{
|
||||
Id = x.Id,
|
||||
|
||||
Reference in New Issue
Block a user