using BuildFlow.Shared.Domain.Common; using IM.Application.Chat.Commands; using MediatR; namespace BuildFlow.Host.Endpoints.im.Chat; /// /// 撤回消息 REST 端点(SignalR 的非实时兜底通道)。 /// 权限与时间窗校验在 RecallMessageCommandHandler 内统一执行。 /// public class RecallMessageEndpoint(IMediator mediator, ICurrentUserContext userContext) : Endpoint { public override void Configure() => Post("/conversations/{ConversationId}/messages/{MessageId}/recall"); public override async Task HandleAsync(RecallMessageEndpointRequest req, CancellationToken ct) { var userId = userContext.GetRequiredUserGuid(); await mediator.Send(new RecallMessageCommand(req.ConversationId, req.MessageId, userId), ct); await Send.OkAsync(ct); } }