using FastEndpoints;
using Fengling.Backend.Web.Application.Queries.MarketingCodes;
namespace Fengling.Backend.Web.Endpoints.Admin.MarketingCodes;
///
/// 查询营销码请求
///
public record GetMarketingCodesRequest
{
public string? BatchNo { get; init; }
public Guid? ProductId { get; init; }
public bool? IsUsed { get; init; }
public DateTime? StartDate { get; init; }
public DateTime? EndDate { get; init; }
public int Page { get; init; } = 1;
public int PageSize { get; init; } = 20;
}
///
/// 查询营销码列表端点
///
[Tags("Admin-MarketingCodes")]
[HttpGet("/api/admin/marketing-codes")]
[AllowAnonymous]
public class GetMarketingCodesEndpoint(IMediator mediator)
: Endpoint>>
{
public override async Task HandleAsync(GetMarketingCodesRequest req, CancellationToken ct)
{
var query = new GetMarketingCodesQuery(
req.BatchNo,
req.ProductId,
req.IsUsed,
req.StartDate,
req.EndDate,
req.Page,
req.PageSize);
var result = await mediator.Send(query, ct);
await Send.OkAsync(result.AsResponseData(), ct);
}
}
///
/// 查询营销码批次列表端点
///
[Tags("Admin-MarketingCodes")]
[HttpGet("/api/admin/marketing-codes/batches")]
[AllowAnonymous]
public class GetMarketingCodeBatchesEndpoint(IMediator mediator)
: EndpointWithoutRequest>>
{
public override async Task HandleAsync(CancellationToken ct)
{
var query = new GetMarketingCodeBatchesQuery();
var result = await mediator.Send(query, ct);
await Send.OkAsync(result.AsResponseData(), ct);
}
}