using CellularManagement.Domain.Common; using CellularManagement.Domain.Entities.Device; using CellularManagement.Domain.Repositories; using CellularManagement.Domain.Repositories.Device; using MediatR; using Microsoft.Extensions.Logging; namespace CellularManagement.Application.Features.Devices.Queries.GetDeviceById; /// /// 根据ID获取设备查询处理器 /// public class GetDeviceByIdQueryHandler : IRequestHandler> { private readonly ICellularDeviceRepository _deviceRepository; private readonly ILogger _logger; /// /// 初始化查询处理器 /// public GetDeviceByIdQueryHandler( ICellularDeviceRepository deviceRepository, ILogger logger) { _deviceRepository = deviceRepository; _logger = logger; } /// /// 处理查询请求 /// public async Task> Handle(GetDeviceByIdQuery request, CancellationToken cancellationToken) { try { _logger.LogInformation("开始查询设备,设备ID: {DeviceId}", request.DeviceId); var device = await _deviceRepository.GetDeviceByIdAsync(request.DeviceId, cancellationToken); if (device == null) { _logger.LogWarning("未找到设备,设备ID: {DeviceId}", request.DeviceId); return OperationResult.CreateFailure($"未找到ID为 {request.DeviceId} 的设备"); } var response = new GetDeviceByIdResponse { DeviceId = device.Id, DeviceName = device.Name, SerialNumber = device.SerialNumber, DeviceType = device.DeviceType?.Name ?? "未知", Status = device.Status?.Name ?? "未知", ProtocolVersion = device.ProtocolVersion?.Version ?? "未知", FirmwareVersion = device.FirmwareVersion, CreatedAt = device.CreatedAt }; _logger.LogInformation("成功查询到设备,设备ID: {DeviceId}", request.DeviceId); return OperationResult.CreateSuccess(response); } catch (Exception ex) { _logger.LogError(ex, "查询设备时发生错误,设备ID: {DeviceId}", request.DeviceId); return OperationResult.CreateFailure($"查询设备时发生错误: {ex.Message}"); } } }