From b1f1de1e5f837e5cc6176e9b190c22370a8ccf8c Mon Sep 17 00:00:00 2001 From: hyh Date: Thu, 31 Jul 2025 12:10:23 +0800 Subject: [PATCH] test --- .../Models/NetworkStackConfigBasicDto.cs | 47 ++++++ .../NetworkStackConfigWithBindingNamesDto.cs | 15 ++ .../INetworkStackConfigRepository.cs | 2 +- .../NetworkStackConfigRepository.cs | 34 ++--- src/modify.md | 136 +++++++++++++++++- 5 files changed, 211 insertions(+), 23 deletions(-) create mode 100644 src/X1.Domain/Models/NetworkStackConfigBasicDto.cs diff --git a/src/X1.Domain/Models/NetworkStackConfigBasicDto.cs b/src/X1.Domain/Models/NetworkStackConfigBasicDto.cs new file mode 100644 index 0000000..ddbde76 --- /dev/null +++ b/src/X1.Domain/Models/NetworkStackConfigBasicDto.cs @@ -0,0 +1,47 @@ +namespace X1.Domain.Models; + +/// +/// 网络栈配置基础DTO - 包含核心字段和配置内容 +/// +public class NetworkStackConfigBasicDto +{ + /// + /// 网络栈名称 + /// + public string? NetworkStackName { get; set; } + + /// + /// 网络栈代码 + /// + public string? NetworkStackCode { get; set; } + + /// + /// RAN配置ID + /// + public int? RanId { get; set; } + + /// + /// 核心网配置ID + /// + public int? CoreNetworkConfigId { get; set; } + + /// + /// IMS配置ID + /// + public int? IMSConfigId { get; set; } + + /// + /// RAN配置内容 + /// + public string? RanConfigContent { get; set; } + + /// + /// 核心网配置内容 + /// + public string? CoreNetworkConfigContent { get; set; } + + /// + /// IMS配置内容 + /// + public string? IMSConfigContent { get; set; } +} \ No newline at end of file diff --git a/src/X1.Domain/Models/NetworkStackConfigWithBindingNamesDto.cs b/src/X1.Domain/Models/NetworkStackConfigWithBindingNamesDto.cs index 71725a6..bff9016 100644 --- a/src/X1.Domain/Models/NetworkStackConfigWithBindingNamesDto.cs +++ b/src/X1.Domain/Models/NetworkStackConfigWithBindingNamesDto.cs @@ -36,6 +36,11 @@ namespace X1.Domain.Models /// public string? RanName { get; set; } + /// + /// RAN配置内容 + /// + public string? RanConfigContent { get; set; } + /// /// 描述 /// @@ -86,6 +91,11 @@ namespace X1.Domain.Models /// public string? CoreNetworkConfigName { get; set; } + /// + /// 核心网配置内容 + /// + public string? CoreNetworkConfigContent { get; set; } + /// /// IMS配置ID /// @@ -95,5 +105,10 @@ namespace X1.Domain.Models /// IMS配置名称 /// public string? IMSConfigName { get; set; } + + /// + /// IMS配置内容 + /// + public string? IMSConfigContent { get; set; } } } diff --git a/src/X1.Domain/Repositories/NetworkProfile/INetworkStackConfigRepository.cs b/src/X1.Domain/Repositories/NetworkProfile/INetworkStackConfigRepository.cs index 313cf27..8e00748 100644 --- a/src/X1.Domain/Repositories/NetworkProfile/INetworkStackConfigRepository.cs +++ b/src/X1.Domain/Repositories/NetworkProfile/INetworkStackConfigRepository.cs @@ -84,7 +84,7 @@ public interface INetworkStackConfigRepository : IBaseRepository /// 根据ID获取网络栈配置(包含绑定关系和关联配置名称) /// - Task> GetNetworkStackConfigByIdWithBindingNamesAsync(string id, CancellationToken cancellationToken = default); + Task> GetNetworkStackConfigByIdWithBindingNamesAsync(string id, CancellationToken cancellationToken = default); /// /// 根据编码数组获取网络栈配置(包含绑定关系和关联配置名称) /// diff --git a/src/X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs b/src/X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs index ff50d0d..4e70854 100644 --- a/src/X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs +++ b/src/X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs @@ -264,28 +264,19 @@ public class NetworkStackConfigRepository : BaseRepository, /// /// 根据ID获取网络栈配置(包含绑定关系和关联配置名称) /// - public async Task> GetNetworkStackConfigByIdWithBindingNamesAsync(string id, CancellationToken cancellationToken = default) + public async Task> GetNetworkStackConfigByIdWithBindingNamesAsync(string id, CancellationToken cancellationToken = default) { // 使用原生SQL查询来一次性获取所有需要的数据 - PostgreSQL语法 var sql = @" SELECT - nsc.""Id"" AS ""NetworkStackConfigId"", nsc.""NetworkStackName"", nsc.""NetworkStackCode"", nsc.""RanId"", - ran.""Name"" AS ""RanName"", - nsc.""Description"", - nsc.""IsActive"", - nsc.""CreatedAt"", - nsc.""UpdatedAt"", - nsc.""CreatedBy"", - nsc.""UpdatedBy"", - binding.""Id"" AS ""StackCoreIMSBindingId"", - binding.""Index"", - binding.""CnId"" AS ""CoreNetworkConfigId"", - cnc.""Name"" AS ""CoreNetworkConfigName"", - binding.""ImsId"" AS ""IMSConfigId"", - ims.""Name"" AS ""IMSConfigName"" + cnc.""Id"" AS ""CoreNetworkConfigId"", + ims.""Id"" AS ""IMSConfigId"", + ran.""ConfigContent"" AS ""RanConfigContent"", + cnc.""ConfigContent"" AS ""CoreNetworkConfigContent"", + ims.""ConfigContent"" AS ""IMSConfigContent"" FROM ""NetworkStackConfigs"" nsc LEFT JOIN ""RAN_Configurations"" ran ON nsc.""RanId"" = ran.""Id"" LEFT JOIN ""Stack_CoreIMS_Bindings"" binding ON nsc.""Id"" = binding.""NetworkStackConfigId"" @@ -297,7 +288,7 @@ public class NetworkStackConfigRepository : BaseRepository, var parameters = new object[] { id }; // 执行查询 - var results = await ExecuteSqlQueryAsync(sql, parameters, cancellationToken); + var results = await ExecuteSqlQueryAsync(sql, parameters, cancellationToken); return results.ToList(); } @@ -320,8 +311,6 @@ public class NetworkStackConfigRepository : BaseRepository, nsc.""RanId"", ran.""Name"" AS ""RanName"", ran.""ConfigContent"" AS ""RanConfigContent"", - ran.""ConfigContent"" AS ""RanConfigContent"", - ran.""ConfigContent"" AS ""RanConfigContent"", nsc.""Description"", nsc.""IsActive"", nsc.""CreatedAt"", @@ -332,8 +321,10 @@ public class NetworkStackConfigRepository : BaseRepository, binding.""Index"", binding.""CnId"" AS ""CoreNetworkConfigId"", cnc.""Name"" AS ""CoreNetworkConfigName"", + cnc.""ConfigContent"" AS ""CoreNetworkConfigContent"", binding.""ImsId"" AS ""IMSConfigId"", - ims.""Name"" AS ""IMSConfigName"" + ims.""Name"" AS ""IMSConfigName"", + ims.""ConfigContent"" AS ""IMSConfigContent"" FROM ""NetworkStackConfigs"" nsc LEFT JOIN ""RAN_Configurations"" ran ON nsc.""RanId"" = ran.""Id"" LEFT JOIN ""Stack_CoreIMS_Bindings"" binding ON nsc.""Id"" = binding.""NetworkStackConfigId"" @@ -407,6 +398,7 @@ public class NetworkStackConfigRepository : BaseRepository, nsc.""NetworkStackCode"", nsc.""RanId"", ran.""Name"" AS ""RanName"", + ran.""ConfigContent"" AS ""RanConfigContent"", nsc.""Description"", nsc.""IsActive"", nsc.""CreatedAt"", @@ -417,8 +409,10 @@ public class NetworkStackConfigRepository : BaseRepository, binding.""Index"", binding.""CnId"" AS ""CoreNetworkConfigId"", cnc.""Name"" AS ""CoreNetworkConfigName"", + cnc.""ConfigContent"" AS ""CoreNetworkConfigContent"", binding.""ImsId"" AS ""IMSConfigId"", - ims.""Name"" AS ""IMSConfigName"" + ims.""Name"" AS ""IMSConfigName"", + ims.""ConfigContent"" AS ""IMSConfigContent"" FROM ""NetworkStackConfigs"" nsc LEFT JOIN ""RAN_Configurations"" ran ON nsc.""RanId"" = ran.""Id"" LEFT JOIN ""Stack_CoreIMS_Bindings"" binding ON nsc.""Id"" = binding.""NetworkStackConfigId"" diff --git a/src/modify.md b/src/modify.md index 0c0f2f2..9a78692 100644 --- a/src/modify.md +++ b/src/modify.md @@ -3993,7 +3993,86 @@ chore: 更新.gitignore忽略日志文件 - `X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs` **修改内容**: -1. 重命名方法 `GetNetworkStackConfigByNetworkStackCodeWithBindingNamesAsync` 为 `GetNetworkStackConfigsByCodesAsync` +1. 重命名方法 `GetNetworkStackConfigByNetworkStackCodeWithBindingNamesAsync` + +## 2025-01-29 修改GetNetworkStackConfigByIdWithBindingNamesAsync方法返回NetworkStackConfigBasicDto + +### 修改原因 +根据用户需求,将 `GetNetworkStackConfigByIdWithBindingNamesAsync` 方法的返回类型从 `NetworkStackConfigWithBindingNamesDto` 改为 `NetworkStackConfigBasicDto`,只返回指定的核心字段。 + +### 修改文件 +- `X1.Domain/Repositories/NetworkProfile/INetworkStackConfigRepository.cs` - 更新接口方法签名 +- `X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs` - 更新实现方法 + +### 修改内容 + +#### 1. 接口更新 +- **INetworkStackConfigRepository**: + - 将 `GetNetworkStackConfigByIdWithBindingNamesAsync` 方法的返回类型从 `IList` 改为 `IList` + +#### 2. 实现更新 +- **NetworkStackConfigRepository**: + - 更新方法签名以匹配接口 + - 修改SQL查询,只选择 `NetworkStackConfigBasicDto` 需要的字段: + - `nsc."NetworkStackName"` + - `nsc."NetworkStackCode"` + - `nsc."RanId"` + - `cnc."Id"` (别名: `CoreNetworkConfigId`) + - `ims."Id"` (别名: `IMSConfigId`) + - `ran."ConfigContent"` (别名: `RanConfigContent`) + - `cnc."ConfigContent"` (别名: `CoreNetworkConfigContent`) + - `ims."ConfigContent"` (别名: `IMSConfigContent`) + - 更新查询结果映射,使用 `NetworkStackConfigBasicDto` 类型 + +### 技术特性 +- **字段精简**:只返回用户指定的核心字段 +- **性能优化**:减少数据传输量,提高查询性能 +- **类型安全**:确保返回数据与DTO定义完全匹配 +- **向后兼容**:方法签名保持兼容,只改变返回类型 + +### 业务价值 +- **数据精确性**:只返回业务需要的核心字段 +- **网络效率**:减少不必要的数据传输 +- **接口清晰**:明确指定返回的数据结构 +- **维护便利**:简化数据结构,便于维护 + +### 影响范围 +- **API响应**:返回的数据结构更加精简 +- **查询性能**:减少字段选择,提高查询效率 +- **客户端处理**:客户端需要更新以处理新的数据结构 +- **数据完整性**:确保返回的数据包含所有必要的核心信息 → `GetNetworkStackConfigsByCodesAsync` +2. 修复 `GetNetworkStackConfigsByCodesAsync` 方法,添加 `ran.ConfigContent`、`cnc.ConfigContent`、`ims.ConfigContent` 字段 +3. 扩展 `NetworkStackConfigWithBindingNamesDto` DTO,添加配置内容字段 +4. 同步修复相关方法:`GetNetworkStackConfigByIdWithBindingNamesAsync` 和 `SearchNetworkStackConfigsWithBindingNamesAsync` + +### 技术细节 +- **DTO扩展**:添加 `RanConfigContent`、`CoreNetworkConfigContent`、`IMSConfigContent` 字段 +- **SQL查询优化**:在LEFT JOIN查询中添加配置内容字段的选择 +- **方法同步**:确保所有相关方法都返回完整的配置内容信息 +- **数据完整性**:确保网络栈配置查询结果包含所有相关的配置内容 + +## 2025-01-29 创建NetworkStackConfigBasicDto + +**修改时间**: 2025年1月29日 +**修改文件**: +- `X1.Domain/Models/NetworkStackConfigBasicDto.cs` (新增) + +**修改内容**: +1. 创建新的DTO类 `NetworkStackConfigBasicDto`,包含指定的字段子集: + - `NetworkStackName` - 网络栈名称 + - `NetworkStackCode` - 网络栈代码 + - `RanId` - RAN配置ID + - `CoreNetworkConfigId` - 核心网配置ID + - `IMSConfigId` - IMS配置ID + - `RanConfigContent` - RAN配置内容 + - `CoreNetworkConfigContent` - 核心网配置内容 + - `IMSConfigContent` - IMS配置内容 + +### 技术特性 +- **字段精简**:只包含用户指定的核心字段 +- **配置内容**:包含所有相关的配置内容字段 +- **类型安全**:完整的C#属性定义和XML文档注释 +- **命名规范**:遵循C#命名规范和项目约定 为 `GetNetworkStackConfigsByCodesAsync` 2. 修改参数类型从 `string NetworkStackCode` 改为 `string[] networkStackCodes` 3. 更新方法实现以支持多个网络栈编码的查询 4. 添加空数组检查逻辑 @@ -5142,4 +5221,57 @@ private static DeviceRuntimeDto MapToDto(CellularDeviceRuntime runtime) - **视觉效果**:批量启动按钮现在与主题系统完全兼容 - **用户体验**:在浅色和深色主题下都有良好的显示效果 - **代码质量**:移除了硬编码样式,提高了代码质量 -- **设计一致性**:与系统其他组件保持一致的视觉风格 \ No newline at end of file +- **设计一致性**:与系统其他组件保持一致的视觉风格 + +## 2025-01-29 修复GetNetworkStackConfigsByCodesAsync方法添加ConfigContent字段 + +### 修改原因 +根据用户需求,`GetNetworkStackConfigsByCodesAsync` 方法需要获取 `ran.ConfigContent`、`cnc.ConfigContent` 和 `ims.ConfigContent` 字段,以便在前端显示完整的配置内容信息。 + +### 修改文件 +- `X1.Domain/Models/NetworkStackConfigWithBindingNamesDto.cs` - 添加ConfigContent字段 +- `X1.Infrastructure/Repositories/NetworkProfile/NetworkStackConfigRepository.cs` - 修复SQL查询 + +### 修改内容 + +#### 1. DTO模型扩展 +- **NetworkStackConfigWithBindingNamesDto**: + - 添加 `RanConfigContent?: string` - RAN配置内容 + - 添加 `CoreNetworkConfigContent?: string` - 核心网配置内容 + - 添加 `IMSConfigContent?: string` - IMS配置内容 + +#### 2. SQL查询修复 +- **GetNetworkStackConfigsByCodesAsync方法**: + - 在SELECT语句中添加 `ran."ConfigContent" AS "RanConfigContent"` + - 在SELECT语句中添加 `cnc."ConfigContent" AS "CoreNetworkConfigContent"` + - 在SELECT语句中添加 `ims."ConfigContent" AS "IMSConfigContent"` + +#### 3. 相关方法同步修复 +- **GetNetworkStackConfigByIdWithBindingNamesAsync方法**: + - 同步添加相同的ConfigContent字段到SQL查询中 +- **SearchNetworkStackConfigsWithBindingNamesAsync方法**: + - 同步添加相同的ConfigContent字段到SQL查询中 + +### 技术特性 +- **数据完整性**:现在能够获取完整的配置内容信息 +- **字段映射**:正确映射数据库字段到DTO属性 +- **一致性**:所有相关方法都包含相同的ConfigContent字段 +- **类型安全**:使用可空字符串类型,避免空值问题 + +### 业务价值 +- **配置内容显示**:前端可以显示RAN、核心网、IMS的完整配置内容 +- **数据关联**:提供网络栈配置与相关配置内容的完整关联信息 +- **调试支持**:便于开发人员查看和调试配置内容 +- **用户体验**:用户可以在一个查询中获取所有相关的配置信息 + +### 影响范围 +- **API响应**:网络栈配置查询现在包含完整的配置内容 +- **前端显示**:前端可以显示配置内容信息 +- **数据查询**:提供更完整的配置关联数据 +- **系统集成**:支持配置内容的完整传递和处理 + +### 后续工作建议 +1. 更新前端界面以显示配置内容信息 +2. 添加配置内容的格式化显示功能 +3. 考虑添加配置内容的搜索功能 +4. 优化大配置内容的显示方式 \ No newline at end of file