From 2ff735e06ad8c720b89c1bcc6fefb847c937f58c Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Thu, 17 Jul 2025 16:58:09 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9A=E4=BF=AE=E6=94=B9api=E8=8E=B7?= =?UTF-8?q?=E5=8F=96ip=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/Controllers/NetConfigController.cs | 165 ++++++++---------- src/views/User/AddBoardDialog.vue | 8 +- 2 files changed, 73 insertions(+), 100 deletions(-) diff --git a/server/src/Controllers/NetConfigController.cs b/server/src/Controllers/NetConfigController.cs index 0573f8b..078bd2a 100644 --- a/server/src/Controllers/NetConfigController.cs +++ b/server/src/Controllers/NetConfigController.cs @@ -19,41 +19,37 @@ public class NetConfigController : ControllerBase /// /// 设置主机IP地址 /// - /// 板卡ID + /// 板卡IP地址 + /// 板卡端口 /// 主机IP地址 /// 操作结果 [HttpPost("SetHostIP")] [EnableCors("Users")] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task SetHostIP(Guid boardId, string hostIp) + public async Task SetHostIP(string boardIp, int boardPort, string hostIp) { - if (boardId == Guid.Empty) - return BadRequest("板卡ID不能为空"); + if (string.IsNullOrWhiteSpace(boardIp)) + return BadRequest("板卡IP地址不能为空"); + + if (boardPort <= 0 || boardPort > 65535) + return BadRequest("板卡端口号无效"); if (string.IsNullOrWhiteSpace(hostIp)) return BadRequest("主机IP地址不能为空"); - if (!IPAddress.TryParse(hostIp, out var ipAddress)) - return BadRequest("IP地址格式不正确"); + if (!IPAddress.TryParse(boardIp, out _)) + return BadRequest("板卡IP地址格式不正确"); + + if (!IPAddress.TryParse(hostIp, out var hostIpAddress)) + return BadRequest("主机IP地址格式不正确"); 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 result = await netConfig.SetHostIP(ipAddress); + var netConfig = new NetConfig(boardIp, boardPort, 0); + var result = await netConfig.SetHostIP(hostIpAddress); if (!result.IsSuccessful) { @@ -73,41 +69,37 @@ public class NetConfigController : ControllerBase /// /// 设置板卡IP地址 /// - /// 板卡ID - /// 板卡IP地址 + /// 当前板卡IP地址 + /// 板卡端口 + /// 新的板卡IP地址 /// 操作结果 [HttpPost("SetBoardIP")] [EnableCors("Users")] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task SetBoardIP(Guid boardId, string boardIp) + public async Task SetBoardIP(string currentBoardIp, int boardPort, string newBoardIp) { - if (boardId == Guid.Empty) - return BadRequest("板卡ID不能为空"); + if (string.IsNullOrWhiteSpace(currentBoardIp)) + return BadRequest("当前板卡IP地址不能为空"); - if (string.IsNullOrWhiteSpace(boardIp)) - return BadRequest("板卡IP地址不能为空"); + if (boardPort <= 0 || boardPort > 65535) + return BadRequest("板卡端口号无效"); - if (!IPAddress.TryParse(boardIp, out var ipAddress)) - return BadRequest("IP地址格式不正确"); + if (string.IsNullOrWhiteSpace(newBoardIp)) + return BadRequest("新的板卡IP地址不能为空"); + + if (!IPAddress.TryParse(currentBoardIp, out _)) + return BadRequest("当前板卡IP地址格式不正确"); + + if (!IPAddress.TryParse(newBoardIp, out var newIpAddress)) + return BadRequest("新的板卡IP地址格式不正确"); 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 result = await netConfig.SetBoardIP(ipAddress); + var netConfig = new NetConfig(currentBoardIp, boardPort, 0); + var result = await netConfig.SetBoardIP(newIpAddress); if (!result.IsSuccessful) { @@ -115,13 +107,6 @@ public class NetConfigController : ControllerBase 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); } catch (Exception ex) @@ -134,41 +119,37 @@ public class NetConfigController : ControllerBase /// /// 设置主机MAC地址 /// - /// 板卡ID + /// 板卡IP地址 + /// 板卡端口 /// 主机MAC地址(格式:AA:BB:CC:DD:EE:FF) /// 操作结果 [HttpPost("SetHostMAC")] [EnableCors("Users")] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task SetHostMAC(Guid boardId, string hostMac) + public async Task SetHostMAC(string boardIp, int boardPort, string hostMac) { - if (boardId == Guid.Empty) - return BadRequest("板卡ID不能为空"); + if (string.IsNullOrWhiteSpace(boardIp)) + return BadRequest("板卡IP地址不能为空"); + + if (boardPort <= 0 || boardPort > 65535) + return BadRequest("板卡端口号无效"); if (string.IsNullOrWhiteSpace(hostMac)) return BadRequest("主机MAC地址不能为空"); + if (!IPAddress.TryParse(boardIp, out _)) + return BadRequest("板卡IP地址格式不正确"); + // 解析MAC地址 if (!TryParseMacAddress(hostMac, out var macBytes)) return BadRequest("MAC地址格式不正确,请使用格式:AA:BB:CC:DD:EE:FF"); 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); if (!result.IsSuccessful) @@ -189,18 +170,24 @@ public class NetConfigController : ControllerBase /// /// 更新主机MAC地址 /// - /// 板卡ID + /// 板卡IP地址 + /// 板卡端口 /// 操作结果 [HttpPost("UpdateHostMAC")] [EnableCors("Users")] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task UpdateHostMAC(Guid boardId) + public async Task UpdateHostMAC(string boardIp, int boardPort) { - if (boardId == Guid.Empty) - return BadRequest("板卡ID不能为空"); + if (string.IsNullOrWhiteSpace(boardIp)) + return BadRequest("板卡IP地址不能为空"); + + if (boardPort <= 0 || boardPort > 65535) + return BadRequest("板卡端口号无效"); + + if (!IPAddress.TryParse(boardIp, out _)) + return BadRequest("板卡IP地址格式不正确"); byte[]? macBytes = null; try @@ -216,18 +203,8 @@ public class NetConfigController : ControllerBase if (macBytes == null) 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); if (!result.IsSuccessful) @@ -248,41 +225,37 @@ public class NetConfigController : ControllerBase /// /// 设置板卡MAC地址 /// - /// 板卡ID + /// 板卡IP地址 + /// 板卡端口 /// 板卡MAC地址(格式:AA:BB:CC:DD:EE:FF) /// 操作结果 [HttpPost("SetBoardMAC")] [EnableCors("Users")] [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task SetBoardMAC(Guid boardId, string boardMac) + public async Task SetBoardMAC(string boardIp, int boardPort, string boardMac) { - if (boardId == Guid.Empty) - return BadRequest("板卡ID不能为空"); + if (string.IsNullOrWhiteSpace(boardIp)) + return BadRequest("板卡IP地址不能为空"); + + if (boardPort <= 0 || boardPort > 65535) + return BadRequest("板卡端口号无效"); if (string.IsNullOrWhiteSpace(boardMac)) return BadRequest("板卡MAC地址不能为空"); + if (!IPAddress.TryParse(boardIp, out _)) + return BadRequest("板卡IP地址格式不正确"); + // 解析MAC地址 if (!TryParseMacAddress(boardMac, out var macBytes)) return BadRequest("MAC地址格式不正确,请使用格式:AA:BB:CC:DD:EE:FF"); 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); if (!result.IsSuccessful) diff --git a/src/views/User/AddBoardDialog.vue b/src/views/User/AddBoardDialog.vue index f1a6da6..24854f4 100644 --- a/src/views/User/AddBoardDialog.vue +++ b/src/views/User/AddBoardDialog.vue @@ -111,8 +111,8 @@ const boardManager = useBoardManager()!; // 表单数据 const form = reactive({ - name: '', - ipAddr: '', + name: 'Board1', + ipAddr: '169.254.103.0', port: 1234 }); @@ -176,8 +176,8 @@ function validateForm(): boolean { // 重置表单 function resetForm() { - form.name = ''; - form.ipAddr = ''; + form.name = 'Board1'; + form.ipAddr = '169.254.103.0'; form.port = 1234; errors.name = ''; errors.ipAddr = '';