Project.Fengling.QoderVersion/Backend/src/Fengling.Backend.Web/Endpoints/Admin/MarketingCodes/MarketingCodeQueryEndpoints.cs
sam d88ec60ef4 feat(marketing): 扩展营销码支持品类信息并完善通知机制
- 在MarketingCode聚合中新增品类ID和品类名称字段,完善产品信息结构
- 迁移生成营销码命令,支持传入品类ID和品类名称参数
- 积分发放失败时发送积分获得失败通知集成事件
- 新增通知发送及积分失败通知的集成事件处理器,使用SSE推送通知
- 在积分相关集成事件处理器中添加发送积分变动通知功能
- 移除Notification聚合,相关数据库表删除
- 新增分页结果类型PagedResult,支持营销码查询分页返回
- 营销码查询支持分页参数,返回分页结果数据
2026-02-13 19:00:06 +08:00

61 lines
1.8 KiB
C#

using FastEndpoints;
using Fengling.Backend.Web.Application.Queries.MarketingCodes;
namespace Fengling.Backend.Web.Endpoints.Admin.MarketingCodes;
/// <summary>
/// 查询营销码请求
/// </summary>
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;
}
/// <summary>
/// 查询营销码列表端点
/// </summary>
[Tags("Admin-MarketingCodes")]
[HttpGet("/api/admin/marketing-codes")]
[AllowAnonymous]
public class GetMarketingCodesEndpoint(IMediator mediator)
: Endpoint<GetMarketingCodesRequest, ResponseData<PagedResult<MarketingCodeDto>>>
{
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);
}
}
/// <summary>
/// 查询营销码批次列表端点
/// </summary>
[Tags("Admin-MarketingCodes")]
[HttpGet("/api/admin/marketing-codes/batches")]
[AllowAnonymous]
public class GetMarketingCodeBatchesEndpoint(IMediator mediator)
: EndpointWithoutRequest<ResponseData<List<MarketingCodeBatchDto>>>
{
public override async Task HandleAsync(CancellationToken ct)
{
var query = new GetMarketingCodeBatchesQuery();
var result = await mediator.Send(query, ct);
await Send.OkAsync(result.AsResponseData(), ct);
}
}