using MediatR; using TakeoutSaaS.Application.App.Billings.Dto; using TakeoutSaaS.Domain.Tenants.Enums; using TakeoutSaaS.Shared.Abstractions.Results; namespace TakeoutSaaS.Application.App.Billings.Queries; /// /// 分页查询账单列表。 /// public sealed record GetBillingListQuery : IRequest> { /// /// 租户 ID(可选,管理员可查询所有租户)。 /// public long? TenantId { get; init; } /// /// 账单状态筛选。 /// public TenantBillingStatus? Status { get; init; } /// /// 账单类型筛选。 /// public BillingType? BillingType { get; init; } /// /// 账单起始时间(UTC)筛选。 /// public DateTime? StartDate { get; init; } /// /// 账单结束时间(UTC)筛选。 /// public DateTime? EndDate { get; init; } /// /// 关键词搜索(账单编号)。 /// public string? Keyword { get; init; } /// /// 最小应付金额筛选(包含)。 /// public decimal? MinAmount { get; init; } /// /// 最大应付金额筛选(包含)。 /// public decimal? MaxAmount { get; init; } /// /// 页码(从 1 开始)。 /// public int PageNumber { get; init; } = 1; /// /// 每页条数。 /// public int PageSize { get; init; } = 20; /// /// 排序字段(DueDate/CreatedAt/AmountDue)。 /// public string? SortBy { get; init; } /// /// 是否降序排序。 /// public bool SortDesc { get; init; } }