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"); } } }