- 移除文件端点的权限控制以支持无权限访问 - 添加 IPlatformNotificationPublisher 接口定义跨模块通知发布能力 - 实现 WorkflowNotificationPublisher 将工作流通知转发到平台消息中心 - 在 NotificationService 中集成平台通知发布功能 - 添加 NoOpPlatformNotificationPublisher 用于单元测试 - 配置服务注册将工作流通知连接到平台消息系统 - 支持按用户ID批量发布工作流通知到平台通知表 - 复用平台的 fanout 落库和 SignalR 铃铛推送机制 - 实现容错机制确保通知失败不影响工作流主链路
30 lines
964 B
C#
30 lines
964 B
C#
using File.Application.Features.Shares.Commands;
|
|
using File.Application.Features.Shares.DTOs;
|
|
using MediatR;
|
|
|
|
namespace BuildFlow.Host.Endpoints.file.Shares;
|
|
|
|
|
|
/// <summary>创建分享链接端点。POST /api/share。</summary>
|
|
[Authorize]
|
|
/// <summary>
|
|
/// undefined
|
|
/// </summary>
|
|
public class CreateShareEndpoint(IMediator mediator) : Endpoint<CreateShareRequest, ShareLinkDto>
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Post("/share");
|
|
}
|
|
|
|
public override async Task HandleAsync(CreateShareRequest req, CancellationToken ct)
|
|
{
|
|
var expiresAt = string.IsNullOrEmpty(req.ExpiresAt)
|
|
? (DateTime?)null
|
|
: DateTime.Parse(req.ExpiresAt, null, System.Globalization.DateTimeStyles.RoundtripKind);
|
|
var result = await mediator.Send(new CreateShareCommand(req.ResourceType,
|
|
Guid.Parse(req.ResourceId), req.Password, expiresAt, req.MaxDownloads), ct);
|
|
await Send.OkAsync(result, ct);
|
|
}
|
|
}
|