using MassTransit;
using Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Events;
namespace TakeoutSaaS.Infrastructure.Logs.Publishers;
///
/// 身份模块操作日志发布器(基于 MassTransit Outbox)。
///
public sealed class IdentityOperationLogPublisher(
ILogger logger,
IPublishEndpoint? publishEndpoint = null) : IIdentityOperationLogPublisher
{
///
public Task PublishAsync(IdentityUserOperationLogMessage message, CancellationToken cancellationToken = default)
{
if (publishEndpoint is null)
{
logger.LogDebug("未配置 MassTransit,已跳过操作日志消息发布:{OperationType}", message.OperationType);
return Task.CompletedTask;
}
// 1. (空行后) 已配置 MassTransit 时正常发布消息
return publishEndpoint.Publish(message, cancellationToken);
}
}