You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.9 KiB

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using CoreAgent.Application.Commands.RanAPI;
using CoreAgent.Domain.Models.Common;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace CoreAgent.API.Controllers;
/// <summary>
/// RAN API 控制器
/// 负责处理RAN相关的API操作
/// </summary>
[ApiController]
[Route("api/[controller]")]
public class RanAPIController : BaseApiController
{
private readonly ILogger<RanAPIController> _logger;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="mediator">MediatR中介者</param>
/// <param name="logger">日志记录器</param>
public RanAPIController(
IMediator mediator,
ILogger<RanAPIController> logger) : base(mediator, logger)
{
_logger = logger;
}
/// <summary>
/// 设置发送增益
/// </summary>
/// <param name="gainSettings">增益设置字典,key为端口号(int),value为增益值(double)</param>
/// <returns>设置结果</returns>
[HttpPost("set-tx-gain")]
public async Task<IActionResult> SetTxGain([FromBody] Dictionary<int, double> gainSettings)
{
try
{
_logger.LogInformation("收到设置发送增益请求,端口数量: {PortCount}", gainSettings?.Count);
var command = new SetTxGainCommand(gainSettings);
var result = await _mediator.Send(command);
_logger.LogInformation("设置发送增益请求处理完成");
return result;
}
catch (Exception ex)
{
_logger.LogError(ex, "处理设置发送增益请求时发生异常");
return ApiActionResult<bool>.Error(
$"处理请求失败: {ex.Message}",
"INTERNAL_ERROR",
System.Net.HttpStatusCode.InternalServerError);
}
}
/// <summary>
/// 设置所有端口发送增益
/// </summary>
/// <param name="gainValues">所有端口的增益值数组,按端口顺序排列</param>
/// <returns>设置结果</returns>
[HttpPost("set-all-tx-gain")]
public async Task<IActionResult> SetAllTxGain([FromBody] double[] gainValues)
{
try
{
_logger.LogInformation("收到设置所有端口发送增益请求,端口数量: {PortCount}", gainValues?.Length);
var command = new SetAllTxGainCommand(gainValues);
var result = await _mediator.Send(command);
_logger.LogInformation("设置所有端口发送增益请求处理完成");
return result;
}
catch (Exception ex)
{
_logger.LogError(ex, "处理设置所有端口发送增益请求时发生异常");
return ApiActionResult<bool>.Error(
$"处理请求失败: {ex.Message}",
"INTERNAL_ERROR",
System.Net.HttpStatusCode.InternalServerError);
}
}
}