RobotStatusChangedDomainEventHandler.cs 1.18 KB
using Microsoft.Extensions.Logging;
using Rcs.Application.Services;
using Rcs.Domain.Entities.DomainEvents.Robot;

namespace Rcs.Infrastructure.MessageBus.Handlers.Events.Robot;

/// <summary>
/// 机器人状态变更领域事件处理器。
/// </summary>
public class RobotStatusChangedDomainEventHandler
{
    private readonly ILogger<RobotStatusChangedDomainEventHandler> _logger;
    private readonly IChargingFlowService _chargingFlowService;

    public RobotStatusChangedDomainEventHandler(
        ILogger<RobotStatusChangedDomainEventHandler> logger,
        IChargingFlowService chargingFlowService)
    {
        _logger = logger;
        _chargingFlowService = chargingFlowService;
    }

    public async Task Handle(RobotStatusChangedDomainEvent domainEvent)
    {
        try
        {
            await _chargingFlowService.HandleRobotStatusChangedAsync(domainEvent);
        }
        catch (Exception ex)
        {
            _logger.LogError(
                ex,
                "Handle RobotStatusChangedDomainEvent failed. RobotId={RobotId}, RobotCode={RobotCode}",
                domainEvent.RobotId,
                domainEvent.RobotCode);
            throw;
        }
    }
}