using MediatR;
using Microsoft.Extensions.Logging;
using CellularManagement.Domain.Common;
using CellularManagement.Domain.Repositories.Device;
using CellularManagement.Domain.Repositories.Terminal;
namespace CellularManagement.Application.Features.TerminalDevices.Queries.GetTerminalDeviceById;
///
/// 根据ID获取终端设备查询处理器
///
public class GetTerminalDeviceByIdQueryHandler : IRequestHandler>
{
private readonly ITerminalDeviceRepository _deviceRepository;
private readonly ILogger _logger;
///
/// 初始化查询处理器
///
public GetTerminalDeviceByIdQueryHandler(
ITerminalDeviceRepository deviceRepository,
ILogger logger)
{
_deviceRepository = deviceRepository;
_logger = logger;
}
///
/// 处理根据ID获取终端设备查询
///
public async Task> Handle(GetTerminalDeviceByIdQuery 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("终端设备不存在");
}
// 构建响应
var response = new GetTerminalDeviceByIdResponse
{
Id = device.Id,
Name = device.Name,
DeviceCode = device.DeviceCode,
Description = device.Description,
AgentPort = device.AgentPort,
IpAddress = device.IpAddress,
IsEnabled = device.IsEnabled,
DeviceType = device.DeviceType.ToString(),
CreatedAt = device.CreatedAt,
UpdatedAt = device.UpdatedAt,
CreatedBy = device.CreatedBy,
UpdatedBy = device.UpdatedBy
};
_logger.LogInformation("获取终端设备详情成功,设备ID: {DeviceId}, 设备名称: {DeviceName}",
device.Id, device.Name);
return OperationResult.CreateSuccess(response);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取终端设备详情时发生错误,设备ID: {DeviceId}", request.DeviceId);
return OperationResult.CreateFailure("获取终端设备详情时发生错误");
}
}
}