using CoreAgent.Application.Commands.System;
using CoreAgent.Domain.Interfaces.System;
using CoreAgent.Domain.Models.Common;
using CoreAgent.Domain.Models.System;
using MediatR;
using Microsoft.Extensions.Logging;
namespace CoreAgent.Application.Handlers.System;
///
/// 获取设备序列号命令处理器
///
public class GetSerialNumberCommandHandler : IRequestHandler>
{
private readonly IDeviceService _deviceService;
private readonly ILogger _logger;
public GetSerialNumberCommandHandler(
IDeviceService deviceService,
ILogger logger)
{
_deviceService = deviceService ?? throw new ArgumentNullException(nameof(deviceService));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task> Handle(GetSerialNumberCommand request, CancellationToken cancellationToken)
{
try
{
_logger.LogInformation("开始处理获取设备序列号命令");
var deviceInfo = await _deviceService.GetSerialNumberAsync();
if (deviceInfo.IsSuccess)
{
_logger.LogInformation("成功获取设备序列号: {SerialNumber}", deviceInfo.SerialNumber);
// 创建DeviceInfoResponse对象,不包含IsSuccess字段
var resultDeviceInfo = new DeviceInfoResponse
{
SerialNumber = deviceInfo.SerialNumber,
Timestamp = deviceInfo.Timestamp
};
return ApiActionResult.Ok(resultDeviceInfo, "获取设备序列号成功");
}
else
{
_logger.LogWarning("获取设备序列号失败,返回的序列号: {SerialNumber}", deviceInfo.SerialNumber);
return ApiActionResult.Error("获取设备序列号失败", "DEVICE_SN_NOT_FOUND");
}
}
catch (Exception ex)
{
_logger.LogError(ex, "处理获取设备序列号命令时发生异常");
return ApiActionResult.Error("获取设备序列号失败", "DEVICE_SN_ERROR");
}
}
}