using MediatR;
using TakeoutSaaS.Application.App.Members.PointsMall.Dto;

namespace TakeoutSaaS.Application.App.Members.PointsMall.Queries;

/// <summary>
/// 查询积分商城兑换记录分页。
/// </summary>
public sealed class GetPointMallRecordListQuery : IRequest<MemberPointMallRecordListResultDto>
{
    /// <summary>
    /// 门店标识。
    /// </summary>
    public long StoreId { get; init; }

    /// <summary>
    /// 兑换类型（product/coupon/physical）。
    /// </summary>
    public string? RedeemType { get; init; }

    /// <summary>
    /// 状态（pending_pickup/issued/completed/canceled）。
    /// </summary>
    public string? Status { get; init; }

    /// <summary>
    /// 开始日期（UTC，可空）。
    /// </summary>
    public DateTime? StartDateUtc { get; init; }

    /// <summary>
    /// 结束日期（UTC，可空）。
    /// </summary>
    public DateTime? EndDateUtc { get; init; }

    /// <summary>
    /// 关键字。
    /// </summary>
    public string? Keyword { get; init; }

    /// <summary>
    /// 页码。
    /// </summary>
    public int Page { get; init; } = 1;

    /// <summary>
    /// 每页条数。
    /// </summary>
    public int PageSize { get; init; } = 10;
}
