From 7c70f69f1a1b54e08aa0895838137a7fe46d7c46 Mon Sep 17 00:00:00 2001 From: root <295172551@qq.com> Date: Sat, 14 Jun 2025 00:27:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E5=91=BD=E4=BB=A4=E7=B1=BB=E5=9E=8B=E5=92=8C=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=80=BB=E8=BE=91=201.=20=E9=87=8D=E6=9E=84NetworkCom?= =?UTF-8?q?mandType=E6=9E=9A=E4=B8=BE=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E7=9A=84=E5=91=BD=E4=BB=A4=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=202.=20=E4=BC=98=E5=8C=96ExecuteInitializeCommandsAsync?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E6=B7=BB=E5=8A=A0bStartInit?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=8E=A7=E5=88=B6PreNetworkOperation?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/System/NetworkCommandType.cs | 24 +++++++--- .../Network/CellularNetworkService.cs | 48 +++++++++++++------ 2 files changed, 50 insertions(+), 22 deletions(-) diff --git a/CoreAgent.Domain/Models/System/NetworkCommandType.cs b/CoreAgent.Domain/Models/System/NetworkCommandType.cs index 06002a6..405b235 100644 --- a/CoreAgent.Domain/Models/System/NetworkCommandType.cs +++ b/CoreAgent.Domain/Models/System/NetworkCommandType.cs @@ -6,22 +6,32 @@ namespace CoreAgent.Domain.Models.System; public enum NetworkCommandType { /// - /// 初始化命令 + /// 初始化命令 - 系统初始化时执行 /// Initialize = 0, /// - /// 启动命令 + /// 网络前置命令 - 执行网络操作前的准备工作 /// - Start = 1, + PreNetworkOperation = 1, /// - /// 停止命令 + /// 网络执行命令 - 执行网络操作 /// - Stop = 2, + NetworkOperation = 2, /// - /// 状态命令 + /// 网络后置命令 - 执行网络操作后的清理工作 /// - Status = 3 + PostNetworkOperation = 3, + + /// + /// 停止网络命令 - 停止网络操作 + /// + StopNetwork = 4, + + /// + /// 状态检查命令 - 检查网络状态 + /// + StatusCheck = 5 } \ No newline at end of file diff --git a/CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs b/CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs index 0be6664..364b9ac 100644 --- a/CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs +++ b/CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs @@ -96,7 +96,7 @@ public class CellularNetworkService : ICellularNetworkService if (commands?.NetworkCommands != null) { var stopCommands = commands.NetworkCommands - .Where(s => s.Type == NetworkCommandType.Stop) + .Where(s => s.Type == NetworkCommandType.StopNetwork) .ToArray(); foreach (var cmd in stopCommands) @@ -145,7 +145,7 @@ public class CellularNetworkService : ICellularNetworkService } // 3. 执行初始化命令 - await ExecuteInitializeCommandsAsync(); + await ExecuteInitializeCommandsAsync(true); // 4. 启动网络接口 _logger.LogInformation("正在启动蜂窝网络接口: {InterfaceName}", key); @@ -166,14 +166,14 @@ public class CellularNetworkService : ICellularNetworkService return true; } - private async Task ExecuteInitializeCommandsAsync() + private async Task ExecuteInitializeCommandsAsync(bool bStartInit = false) { - var commands = _context.GetNetworkCommandConfig(); if (commands?.NetworkCommands != null) { var initCommands = commands.NetworkCommands - .Where(s => s.Type == NetworkCommandType.Initialize) + .Where(s => s.Type == NetworkCommandType.Initialize || + (bStartInit && s.Type == NetworkCommandType.PreNetworkOperation)) .ToArray(); foreach (var cmd in initCommands) @@ -224,7 +224,7 @@ public class CellularNetworkService : ICellularNetworkService } var commands = _context.GetNetworkCommandConfig(); - var startCommand = commands.NetworkCommands.FirstOrDefault(s => s.Type == NetworkCommandType.Start); + var startCommand = commands.NetworkCommands.FirstOrDefault(s => s.Type == NetworkCommandType.NetworkOperation); if (startCommand == null) { _logger.LogError("未找到启动命令配置"); @@ -268,31 +268,49 @@ public class CellularNetworkService : ICellularNetworkService Directory.CreateDirectory(_appSettings.TempDirectory); } - // 复制 RAG 配置值并更新路径 + // 复制 RAG 配置文件 if (!string.IsNullOrEmpty(networkConfig.RagConfig)) { + if (!File.Exists(networkConfig.RagConfig)) + { + _logger.LogError("RAG配置文件不存在: {FilePath}", networkConfig.RagConfig); + return false; + } + var ragFileName = Path.GetFileName(networkConfig.RagConfig); - var ragTempPath = $"{_appSettings.TempDirectory}{ragFileName}"; - await File.WriteAllTextAsync(ragTempPath, networkConfig.RagConfig); + var ragTempPath = Path.Combine(_appSettings.TempDirectory, ragFileName); + File.Copy(networkConfig.RagConfig, ragTempPath, true); networkConfig.RagConfig = ragTempPath; } - // 复制核心网络配置值和IMS配置值并更新路径 + // 复制核心网络配置文件和IMS配置文件 foreach (var config in networkConfig.CoreOrImsConfigs) { if (!string.IsNullOrEmpty(config.CoreNetworkConfig)) { + if (!File.Exists(config.CoreNetworkConfig)) + { + _logger.LogError("核心网络配置文件不存在: {FilePath}", config.CoreNetworkConfig); + return false; + } + var coreFileName = Path.GetFileName(config.CoreNetworkConfig); - var coreTempPath = $"{_appSettings.TempDirectory}{coreFileName}"; - await File.WriteAllTextAsync(coreTempPath, config.CoreNetworkConfig); + var coreTempPath = Path.Combine(_appSettings.TempDirectory, coreFileName); + File.Copy(config.CoreNetworkConfig, coreTempPath, true); config.CoreNetworkConfig = coreTempPath; } if (!string.IsNullOrEmpty(config.ImsConfig)) { + if (!File.Exists(config.ImsConfig)) + { + _logger.LogError("IMS配置文件不存在: {FilePath}", config.ImsConfig); + return false; + } + var imsFileName = Path.GetFileName(config.ImsConfig); - var imsTempPath = $"{_appSettings.TempDirectory}{imsFileName}"; - await File.WriteAllTextAsync(imsTempPath, config.ImsConfig); + var imsTempPath = Path.Combine(_appSettings.TempDirectory, imsFileName); + File.Copy(config.ImsConfig, imsTempPath, true); config.ImsConfig = imsTempPath; } } @@ -301,7 +319,7 @@ public class CellularNetworkService : ICellularNetworkService } catch (Exception ex) { - _logger.LogError(ex, "复制配置值到临时目录时发生错误"); + _logger.LogError(ex, "复制配置文件到临时目录时发生错误"); return false; } }