using MediatR;
using TakeoutSaaS.Application.App.Subscriptions.Contracts;
using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Shared.Abstractions.Results;
namespace TakeoutSaaS.Application.App.Subscriptions.Queries;
///
/// 获取订阅列表查询。
///
public sealed record ListSubscriptionsQuery : IRequest>
{
///
/// 订阅状态。
///
public SubscriptionStatus? Status { get; init; }
///
/// 套餐 ID。
///
public long? TenantPackageId { get; init; }
///
/// 租户 ID。
///
public long? TenantId { get; init; }
///
/// 租户关键词(名称或编码)。
///
public string? TenantKeyword { get; init; }
///
/// 即将到期天数筛选(N 天内到期)。
///
public int? ExpiringWithinDays { get; init; }
///
/// 是否自动续费。
///
public bool? AutoRenew { get; init; }
///
/// 到期时间范围开始。
///
public DateTime? ExpireFrom { get; init; }
///
/// 到期时间范围结束。
///
public DateTime? ExpireTo { get; init; }
///
/// 页码(从 1 开始)。
///
public int Page { get; init; } = 1;
///
/// 每页条数。
///
public int PageSize { get; init; } = 10;
}