refactor:修改api获取ip的方法

This commit is contained in:
SikongJueluo 2025-07-17 16:58:09 +08:00
parent 53eaac43e3
commit 2ff735e06a
No known key found for this signature in database
2 changed files with 73 additions and 100 deletions

View File

@ -19,41 +19,37 @@ public class NetConfigController : ControllerBase
/// <summary> /// <summary>
/// 设置主机IP地址 /// 设置主机IP地址
/// </summary> /// </summary>
/// <param name="boardId">板卡ID</param> /// <param name="boardIp">板卡IP地址</param>
/// <param name="boardPort">板卡端口</param>
/// <param name="hostIp">主机IP地址</param> /// <param name="hostIp">主机IP地址</param>
/// <returns>操作结果</returns> /// <returns>操作结果</returns>
[HttpPost("SetHostIP")] [HttpPost("SetHostIP")]
[EnableCors("Users")] [EnableCors("Users")]
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)] [ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> SetHostIP(Guid boardId, string hostIp) public async Task<IActionResult> SetHostIP(string boardIp, int boardPort, string hostIp)
{ {
if (boardId == Guid.Empty) if (string.IsNullOrWhiteSpace(boardIp))
return BadRequest("板卡ID不能为空"); return BadRequest("板卡IP地址不能为空");
if (boardPort <= 0 || boardPort > 65535)
return BadRequest("板卡端口号无效");
if (string.IsNullOrWhiteSpace(hostIp)) if (string.IsNullOrWhiteSpace(hostIp))
return BadRequest("主机IP地址不能为空"); return BadRequest("主机IP地址不能为空");
if (!IPAddress.TryParse(hostIp, out var ipAddress)) if (!IPAddress.TryParse(boardIp, out _))
return BadRequest("IP地址格式不正确"); return BadRequest("板卡IP地址格式不正确");
if (!IPAddress.TryParse(hostIp, out var hostIpAddress))
return BadRequest("主机IP地址格式不正确");
try try
{ {
// 获取板卡信息
using var db = new Database.AppDataConnection();
var boardRet = db.GetBoardByID(boardId);
if (!boardRet.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!boardRet.Value.HasValue)
return NotFound("未找到对应的板卡");
var board = boardRet.Value.Value;
// 创建网络配置客户端 // 创建网络配置客户端
var netConfig = new NetConfig(board.IpAddr, board.Port, 0); var netConfig = new NetConfig(boardIp, boardPort, 0);
var result = await netConfig.SetHostIP(ipAddress); var result = await netConfig.SetHostIP(hostIpAddress);
if (!result.IsSuccessful) if (!result.IsSuccessful)
{ {
@ -73,41 +69,37 @@ public class NetConfigController : ControllerBase
/// <summary> /// <summary>
/// 设置板卡IP地址 /// 设置板卡IP地址
/// </summary> /// </summary>
/// <param name="boardId">板卡ID</param> /// <param name="currentBoardIp">当前板卡IP地址</param>
/// <param name="boardIp">板卡IP地址</param> /// <param name="boardPort">板卡端口</param>
/// <param name="newBoardIp">新的板卡IP地址</param>
/// <returns>操作结果</returns> /// <returns>操作结果</returns>
[HttpPost("SetBoardIP")] [HttpPost("SetBoardIP")]
[EnableCors("Users")] [EnableCors("Users")]
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)] [ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> SetBoardIP(Guid boardId, string boardIp) public async Task<IActionResult> SetBoardIP(string currentBoardIp, int boardPort, string newBoardIp)
{ {
if (boardId == Guid.Empty) if (string.IsNullOrWhiteSpace(currentBoardIp))
return BadRequest("板卡ID不能为空"); return BadRequest("当前板卡IP地址不能为空");
if (string.IsNullOrWhiteSpace(boardIp)) if (boardPort <= 0 || boardPort > 65535)
return BadRequest("板卡IP地址不能为空"); return BadRequest("板卡端口号无效");
if (!IPAddress.TryParse(boardIp, out var ipAddress)) if (string.IsNullOrWhiteSpace(newBoardIp))
return BadRequest("IP地址格式不正确"); return BadRequest("新的板卡IP地址不能为空");
if (!IPAddress.TryParse(currentBoardIp, out _))
return BadRequest("当前板卡IP地址格式不正确");
if (!IPAddress.TryParse(newBoardIp, out var newIpAddress))
return BadRequest("新的板卡IP地址格式不正确");
try try
{ {
// 获取板卡信息
using var db = new Database.AppDataConnection();
var boardRet = db.GetBoardByID(boardId);
if (!boardRet.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!boardRet.Value.HasValue)
return NotFound("未找到对应的板卡");
var board = boardRet.Value.Value;
// 创建网络配置客户端 // 创建网络配置客户端
var netConfig = new NetConfig(board.IpAddr, board.Port, 0); var netConfig = new NetConfig(currentBoardIp, boardPort, 0);
var result = await netConfig.SetBoardIP(ipAddress); var result = await netConfig.SetBoardIP(newIpAddress);
if (!result.IsSuccessful) if (!result.IsSuccessful)
{ {
@ -115,13 +107,6 @@ public class NetConfigController : ControllerBase
return StatusCode(StatusCodes.Status500InternalServerError, $"设置失败: {result.Error}"); return StatusCode(StatusCodes.Status500InternalServerError, $"设置失败: {result.Error}");
} }
var ret = db.UpdateBoardIpAddr(boardId, ipAddress.ToString());
if (ret <= 0)
{
logger.Error($"数据库更新失败");
return StatusCode(StatusCodes.Status500InternalServerError, $"数据库更新失败");
}
return Ok(result.Value); return Ok(result.Value);
} }
catch (Exception ex) catch (Exception ex)
@ -134,41 +119,37 @@ public class NetConfigController : ControllerBase
/// <summary> /// <summary>
/// 设置主机MAC地址 /// 设置主机MAC地址
/// </summary> /// </summary>
/// <param name="boardId">板卡ID</param> /// <param name="boardIp">板卡IP地址</param>
/// <param name="boardPort">板卡端口</param>
/// <param name="hostMac">主机MAC地址格式AA:BB:CC:DD:EE:FF</param> /// <param name="hostMac">主机MAC地址格式AA:BB:CC:DD:EE:FF</param>
/// <returns>操作结果</returns> /// <returns>操作结果</returns>
[HttpPost("SetHostMAC")] [HttpPost("SetHostMAC")]
[EnableCors("Users")] [EnableCors("Users")]
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)] [ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> SetHostMAC(Guid boardId, string hostMac) public async Task<IActionResult> SetHostMAC(string boardIp, int boardPort, string hostMac)
{ {
if (boardId == Guid.Empty) if (string.IsNullOrWhiteSpace(boardIp))
return BadRequest("板卡ID不能为空"); return BadRequest("板卡IP地址不能为空");
if (boardPort <= 0 || boardPort > 65535)
return BadRequest("板卡端口号无效");
if (string.IsNullOrWhiteSpace(hostMac)) if (string.IsNullOrWhiteSpace(hostMac))
return BadRequest("主机MAC地址不能为空"); return BadRequest("主机MAC地址不能为空");
if (!IPAddress.TryParse(boardIp, out _))
return BadRequest("板卡IP地址格式不正确");
// 解析MAC地址 // 解析MAC地址
if (!TryParseMacAddress(hostMac, out var macBytes)) if (!TryParseMacAddress(hostMac, out var macBytes))
return BadRequest("MAC地址格式不正确请使用格式AA:BB:CC:DD:EE:FF"); return BadRequest("MAC地址格式不正确请使用格式AA:BB:CC:DD:EE:FF");
try try
{ {
// 获取板卡信息
using var db = new Database.AppDataConnection();
var boardRet = db.GetBoardByID(boardId);
if (!boardRet.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!boardRet.Value.HasValue)
return NotFound("未找到对应的板卡");
var board = boardRet.Value.Value;
// 创建网络配置客户端 // 创建网络配置客户端
var netConfig = new NetConfig(board.IpAddr, board.Port, 0); var netConfig = new NetConfig(boardIp, boardPort, 0);
var result = await netConfig.SetHostMAC(macBytes); var result = await netConfig.SetHostMAC(macBytes);
if (!result.IsSuccessful) if (!result.IsSuccessful)
@ -189,18 +170,24 @@ public class NetConfigController : ControllerBase
/// <summary> /// <summary>
/// 更新主机MAC地址 /// 更新主机MAC地址
/// </summary> /// </summary>
/// <param name="boardId">板卡ID</param> /// <param name="boardIp">板卡IP地址</param>
/// <param name="boardPort">板卡端口</param>
/// <returns>操作结果</returns> /// <returns>操作结果</returns>
[HttpPost("UpdateHostMAC")] [HttpPost("UpdateHostMAC")]
[EnableCors("Users")] [EnableCors("Users")]
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)] [ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> UpdateHostMAC(Guid boardId) public async Task<IActionResult> UpdateHostMAC(string boardIp, int boardPort)
{ {
if (boardId == Guid.Empty) if (string.IsNullOrWhiteSpace(boardIp))
return BadRequest("板卡ID不能为空"); return BadRequest("板卡IP地址不能为空");
if (boardPort <= 0 || boardPort > 65535)
return BadRequest("板卡端口号无效");
if (!IPAddress.TryParse(boardIp, out _))
return BadRequest("板卡IP地址格式不正确");
byte[]? macBytes = null; byte[]? macBytes = null;
try try
@ -216,18 +203,8 @@ public class NetConfigController : ControllerBase
if (macBytes == null) if (macBytes == null)
return StatusCode(StatusCodes.Status500InternalServerError, "无法获取本机MAC地址"); return StatusCode(StatusCodes.Status500InternalServerError, "无法获取本机MAC地址");
// 获取板卡信息
using var db = new Database.AppDataConnection();
var boardRet = db.GetBoardByID(boardId);
if (!boardRet.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!boardRet.Value.HasValue)
return NotFound("未找到对应的板卡");
var board = boardRet.Value.Value;
// 创建网络配置客户端 // 创建网络配置客户端
var netConfig = new NetConfig(board.IpAddr, board.Port, 0); var netConfig = new NetConfig(boardIp, boardPort, 0);
var result = await netConfig.SetHostMAC(macBytes); var result = await netConfig.SetHostMAC(macBytes);
if (!result.IsSuccessful) if (!result.IsSuccessful)
@ -248,41 +225,37 @@ public class NetConfigController : ControllerBase
/// <summary> /// <summary>
/// 设置板卡MAC地址 /// 设置板卡MAC地址
/// </summary> /// </summary>
/// <param name="boardId">板卡ID</param> /// <param name="boardIp">板卡IP地址</param>
/// <param name="boardPort">板卡端口</param>
/// <param name="boardMac">板卡MAC地址格式AA:BB:CC:DD:EE:FF</param> /// <param name="boardMac">板卡MAC地址格式AA:BB:CC:DD:EE:FF</param>
/// <returns>操作结果</returns> /// <returns>操作结果</returns>
[HttpPost("SetBoardMAC")] [HttpPost("SetBoardMAC")]
[EnableCors("Users")] [EnableCors("Users")]
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)] [ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> SetBoardMAC(Guid boardId, string boardMac) public async Task<IActionResult> SetBoardMAC(string boardIp, int boardPort, string boardMac)
{ {
if (boardId == Guid.Empty) if (string.IsNullOrWhiteSpace(boardIp))
return BadRequest("板卡ID不能为空"); return BadRequest("板卡IP地址不能为空");
if (boardPort <= 0 || boardPort > 65535)
return BadRequest("板卡端口号无效");
if (string.IsNullOrWhiteSpace(boardMac)) if (string.IsNullOrWhiteSpace(boardMac))
return BadRequest("板卡MAC地址不能为空"); return BadRequest("板卡MAC地址不能为空");
if (!IPAddress.TryParse(boardIp, out _))
return BadRequest("板卡IP地址格式不正确");
// 解析MAC地址 // 解析MAC地址
if (!TryParseMacAddress(boardMac, out var macBytes)) if (!TryParseMacAddress(boardMac, out var macBytes))
return BadRequest("MAC地址格式不正确请使用格式AA:BB:CC:DD:EE:FF"); return BadRequest("MAC地址格式不正确请使用格式AA:BB:CC:DD:EE:FF");
try try
{ {
// 获取板卡信息
using var db = new Database.AppDataConnection();
var boardRet = db.GetBoardByID(boardId);
if (!boardRet.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!boardRet.Value.HasValue)
return NotFound("未找到对应的板卡");
var board = boardRet.Value.Value;
// 创建网络配置客户端 // 创建网络配置客户端
var netConfig = new NetConfig(board.IpAddr, board.Port, 0); var netConfig = new NetConfig(boardIp, boardPort, 0);
var result = await netConfig.SetBoardMAC(macBytes); var result = await netConfig.SetBoardMAC(macBytes);
if (!result.IsSuccessful) if (!result.IsSuccessful)

View File

@ -111,8 +111,8 @@ const boardManager = useBoardManager()!;
// //
const form = reactive({ const form = reactive({
name: '', name: 'Board1',
ipAddr: '', ipAddr: '169.254.103.0',
port: 1234 port: 1234
}); });
@ -176,8 +176,8 @@ function validateForm(): boolean {
// //
function resetForm() { function resetForm() {
form.name = ''; form.name = 'Board1';
form.ipAddr = ''; form.ipAddr = '169.254.103.0';
form.port = 1234; form.port = 1234;
errors.name = ''; errors.name = '';
errors.ipAddr = ''; errors.ipAddr = '';