You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.1 KiB
5.1 KiB
网络配置管理功能
概述
网络配置管理功能提供了对RAN、IMS、MME三种网络配置的统一管理,支持配置的创建、查询、更新和删除操作。
配置类型
1. RAN配置 (Radio Access Network)
- 用途: 无线接入网络配置
- 特点:
- 不需要PLMN字段
- 不需要配置索引
- 包含频段、带宽、功率控制、天线配置等参数
2. IMS配置 (IP Multimedia Subsystem)
- 用途: IP多媒体子系统配置
- 特点:
- 必须提供PLMN字段
- 必须提供配置索引(可等于0)
- 包含P-CSCF、S-CSCF、I-CSCF、HSS等服务器配置
3. MME配置 (Mobility Management Entity)
- 用途: 移动性管理实体配置
- 特点:
- 必须提供PLMN字段
- 必须提供配置索引(可等于0)
- 包含MME代码、TAC列表、网关配置等参数
数据库设计
表结构
CREATE TABLE "NetworkConfigs" (
"Id" character varying(450) NOT NULL,
"ConfigType" integer NOT NULL,
"Name" character varying(100) NOT NULL,
"ConfigIndex" integer,
"Plmn" character varying(10),
"ConfigContent" jsonb NOT NULL,
"Description" character varying(500),
"IsDisabled" boolean NOT NULL DEFAULT false,
"CreatedAt" timestamp with time zone NOT NULL,
"UpdatedAt" timestamp with time zone NOT NULL,
"CreatedBy" character varying(450) NOT NULL,
"UpdatedBy" character varying(450) NOT NULL,
"IsDeleted" boolean NOT NULL DEFAULT false,
CONSTRAINT "PK_NetworkConfigs" PRIMARY KEY ("Id")
);
索引
IX_NetworkConfigs_ConfigType
- 配置类型索引IX_NetworkConfigs_Name
- 名称唯一索引IX_NetworkConfigs_Plmn
- PLMN索引IX_NetworkConfigs_ConfigIndex
- 配置索引IX_NetworkConfigs_IsDisabled
- 禁用状态索引IX_NetworkConfigs_ConfigType_Plmn
- 配置类型和PLMN复合索引IX_NetworkConfigs_ConfigType_ConfigIndex
- 配置类型和索引复合索引
约束
CK_NetworkConfigs_ConfigIndex_RAN
- RAN类型不能有配置索引CK_NetworkConfigs_ConfigIndex_IMS_MME
- IMS/MME类型必须有配置索引CK_NetworkConfigs_Plmn_IMS_MME
- IMS/MME类型必须有PLMN
API接口
1. 创建网络配置
POST /api/NetworkConfigs
Content-Type: application/json
{
"configType": 1,
"name": "RAN_Config_Default",
"configIndex": null,
"plmn": null,
"configContent": "{\"frequencyBands\":[\"B1\",\"B3\"]}",
"description": "默认RAN配置",
"isDisabled": false
}
2. 获取网络配置列表
GET /api/NetworkConfigs?configType=1&onlyEnabled=true
3. 根据类型获取配置
GET /api/NetworkConfigs/type/1
4. 根据PLMN获取配置
GET /api/NetworkConfigs/plmn/46000
5. 搜索网络配置
GET /api/NetworkConfigs/search?keyword=RAN&configType=1
使用示例
创建RAN配置
var command = new CreateNetworkConfigCommand
{
ConfigType = NetworkConfigType.RAN,
Name = "RAN_Config_Default",
ConfigContent = JsonSerializer.Serialize(new
{
frequencyBands = new[] { "B1", "B3", "B5", "B8" },
bandwidth = "20MHz",
powerControl = new
{
maxPower = 43,
minPower = 23,
powerStep = 1
}
}),
Description = "默认RAN配置"
};
var result = await mediator.Send(command);
创建IMS配置
var command = new CreateNetworkConfigCommand
{
ConfigType = NetworkConfigType.IMS,
Name = "IMS_Config_ChinaMobile",
ConfigIndex = 0,
Plmn = "46000",
ConfigContent = JsonSerializer.Serialize(new
{
pCscfServers = new[]
{
new { address = "10.1.1.100", port = 5060, transport = "UDP" }
},
sCscfServers = new[]
{
new { address = "10.2.1.100", port = 5060, transport = "UDP" }
}
}),
Description = "中国移动IMS配置"
};
var result = await mediator.Send(command);
查询配置
// 获取所有启用的配置
var query = new GetNetworkConfigsQuery { OnlyEnabled = true };
var result = await mediator.Send(query);
// 根据类型和PLMN查询
var query = new GetNetworkConfigsQuery
{
ConfigType = NetworkConfigType.IMS,
Plmn = "46000"
};
var result = await mediator.Send(query);
业务规则
- 配置名称唯一性: 所有配置的名称必须唯一
- RAN配置规则:
- 不能有配置索引
- 不能有PLMN字段
- IMS/MME配置规则:
- 必须有PLMN字段
- 必须有配置索引(可等于0)
- 配置内容: 必须为有效的JSON格式
- 软删除: 支持软删除,删除后数据仍保留但不可见
性能优化
- JSONB索引: 对ConfigContent字段使用JSONB类型,支持高效的JSON查询
- 复合索引: 针对常用查询场景创建复合索引
- 查询优化: 使用仓储模式,支持灵活的查询条件组合
扩展性
- 配置类型扩展: 可以通过添加新的枚举值来支持更多配置类型
- 字段扩展: 可以在ConfigContent中添加新的配置参数
- 验证规则扩展: 可以为不同配置类型添加特定的验证规则