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;
}
}