Compare commits
69 Commits
2.2505.4-2
...
nbi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
682cb6ecd8 | ||
|
|
7b6ad5ccab | ||
|
|
5dfa6fa04d | ||
|
|
46ccc0ab83 | ||
|
|
d4923d008c | ||
|
|
1a5b2cd15a | ||
|
|
3e7c60ecd0 | ||
|
|
f7f9572aef | ||
|
|
d4b0b12c7b | ||
|
|
13c07004b4 | ||
|
|
9fa77a139a | ||
|
|
01975afe9c | ||
|
|
a5e5b3cf6e | ||
|
|
3a7dd5279c | ||
|
|
8338dd3a60 | ||
|
|
3e4b9819dc | ||
|
|
f4a7c4cf82 | ||
|
|
cec34122da | ||
|
|
ff4e221e27 | ||
|
|
4c782f45ab | ||
|
|
f1c7e4fc1f | ||
|
|
88054f9c93 | ||
|
|
3e2ba34fd1 | ||
|
|
b31ee42265 | ||
|
|
9507879854 | ||
|
|
ccd2f0218c | ||
|
|
f7cb6f84b0 | ||
|
|
d1f9f77f7e | ||
|
|
167f02b065 | ||
|
|
d973c8af49 | ||
|
|
8705ac68c1 | ||
|
|
55b6aa348b | ||
|
|
af4d2b70cc | ||
|
|
85afb33c59 | ||
|
|
e880eae549 | ||
|
|
9d63210d25 | ||
|
|
2662dd26e8 | ||
|
|
ac6df17e16 | ||
|
|
b46157bff7 | ||
|
|
9c50e6ef70 | ||
|
|
6c8383925d | ||
|
|
4f118b895b | ||
|
|
39bfe64828 | ||
|
|
72fc915481 | ||
|
|
7e42dd91e4 | ||
|
|
a982a41e05 | ||
|
|
38f5eea82e | ||
|
|
5237710c8e | ||
|
|
f95847c915 | ||
|
|
2fe05c9850 | ||
|
|
705d02aa78 | ||
|
|
3e9a8fc067 | ||
|
|
74e6c75a05 | ||
|
|
8595a1c0cb | ||
|
|
986624c48f | ||
|
|
32630fbb4a | ||
|
|
e0336bb0f3 | ||
|
|
041125fb7a | ||
|
|
dcf513bcfd | ||
|
|
88d6f36a18 | ||
|
|
4fd359add4 | ||
|
|
12f5330f85 | ||
|
|
1c1c564691 | ||
|
|
f61f546d55 | ||
|
|
4451705e67 | ||
|
|
f08c1e02ed | ||
|
|
760f840791 | ||
|
|
344e9802d8 | ||
|
|
55dd32b124 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -17,6 +17,7 @@ restagent/upload/
|
||||
restagent/software/
|
||||
restagent/database/
|
||||
restagent/license/
|
||||
restagent/restagent
|
||||
|
||||
sshsvc/sshsvc
|
||||
sshsvc/mmllog/
|
||||
@@ -33,6 +34,8 @@ vendor
|
||||
*.vsix
|
||||
*.log
|
||||
*.log-*
|
||||
*.log.*
|
||||
*.bak
|
||||
*.bak*
|
||||
*.exe
|
||||
__debug_bin*
|
||||
|
||||
44
CHANGELOG.md
44
CHANGELOG.md
@@ -1,5 +1,49 @@
|
||||
# 版本发布日志
|
||||
|
||||
## 2.2503.5-20250412
|
||||
|
||||
- 更新 角色系统参数配置权限分配
|
||||
|
||||
## 2.2503.4-20250331
|
||||
|
||||
- 更新 更新部分kpi_title_en名称
|
||||
|
||||
## 2.2503.3-20250321
|
||||
|
||||
- 更新 SMF/UPF参数配置
|
||||
- 重构 UPF流量总计7,30天累计数据查询
|
||||
- 优化 默认获取Redis实例时支持不指定数据源
|
||||
|
||||
## 2.2503.2-20250314
|
||||
|
||||
- 更新 AMF参数配置systemFeatOpt
|
||||
- 优化 调度任务进行告警检查网元状态
|
||||
- 优化 系统菜单按钮权限状态可修改
|
||||
- 优化 网元状态请求超时时间至2000毫秒
|
||||
|
||||
## 2.2503.1-20250308
|
||||
|
||||
- 优化 告警转发邮件优化
|
||||
- 优化 优化UPF流量统计逻辑
|
||||
- 优化 看板菜单权限控制部分显示
|
||||
|
||||
## 2.2502.4-20250228
|
||||
|
||||
- 修复 SGW-C导出管理多语言显示
|
||||
- 优化 网元状态告警处理逻辑,增加状态更新时间戳
|
||||
- 修复 CDR/Event 查询时间格式统一时间戳int64
|
||||
|
||||
## 2.2502.3-20250221
|
||||
|
||||
- 修复 网元授权序号查询
|
||||
- 更新 SGWC导出表格数据字段修改/兼容3G的SGWC字段
|
||||
|
||||
## 2.2502.2-20250214
|
||||
|
||||
- 修复 修改调度任务导出SMSC-CDR时间格式错误
|
||||
- 修复 导出备份配置文件同步FTP功能配置调整
|
||||
- 更新 调整/路由提示信息
|
||||
|
||||
## 2.2502.1-20250208
|
||||
|
||||
- 新增 基站状态记录上报和导出功能
|
||||
|
||||
10
config/etc/default/alarm_relation_rules.yaml
Normal file
10
config/etc/default/alarm_relation_rules.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
# alarm relation rules
|
||||
derived:
|
||||
- parentCode: 10001
|
||||
childCode: 10002
|
||||
- parentCode: 20001
|
||||
childCode: 20002
|
||||
related:
|
||||
- codes: [30005, 30006, 30007]
|
||||
neType: "AMF"
|
||||
timeWindow: 60 # 秒
|
||||
4
config/etc/default/nbi_pm.yaml
Normal file
4
config/etc/default/nbi_pm.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
schemaPath: /usr/local/omc/etc/schema
|
||||
randomMin: 1
|
||||
randomMax: 100
|
||||
mergeMode: merge # none: Merge Mode None/merge: Merge Mode Merge/schema: Merge Mode Schema
|
||||
@@ -186,4 +186,14 @@ params:
|
||||
|
||||
testConfig:
|
||||
enabled: false
|
||||
file: /usr/local/omc/etc/testconfig.yaml
|
||||
file: /usr/local/omc/etc/testconfig.yaml
|
||||
|
||||
nbiConfig:
|
||||
enabled: true
|
||||
pmConfig:
|
||||
enabled: true
|
||||
file: /usr/local/omc/etc/nbi_pm.yaml
|
||||
# alarm_relation_rules.yaml
|
||||
relationRules:
|
||||
enabled: true
|
||||
file: /usr/local/omc/etc/alarm_relation_rules.yaml
|
||||
1278
config/etc/schema/amf-nbi-pm-schema.json
Normal file
1278
config/etc/schema/amf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
269
config/etc/schema/pcf-nbi-pm-schema.json
Normal file
269
config/etc/schema/pcf-nbi-pm-schema.json
Normal file
@@ -0,0 +1,269 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "PcfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 12
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.PcfSubNbr",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1287
config/etc/schema/smf-nbi-pm-schema.json
Normal file
1287
config/etc/schema/smf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
373
config/etc/schema/udm-nbi-pm-schema.json
Normal file
373
config/etc/schema/udm-nbi-pm-schema.json
Normal file
@@ -0,0 +1,373 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "UdmFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.UecmDeregNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetDataNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegNoPsSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRatNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReAuth",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegDnnNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.5gSupi",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gActSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "AusfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1257
config/etc/schema/upf-nbi-pm-schema.json
Normal file
1257
config/etc/schema/upf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -504,6 +504,41 @@ amf:
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "statusReportEnabled"
|
||||
comment: ""
|
||||
- name: "getTraceDataFromUdm"
|
||||
type: "bool"
|
||||
value: "0"
|
||||
access: "read-write"
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "getTraceDataFromUdm"
|
||||
comment: ""
|
||||
- name: "disableLocationReportControl"
|
||||
type: "bool"
|
||||
value: "0"
|
||||
access: "read-write"
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "disableLocationReportControl"
|
||||
comment: ""
|
||||
- name: "sendDnnOiToSmf"
|
||||
type: "bool"
|
||||
value: "0"
|
||||
access: "read-write"
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "sendDnnOiToSmf"
|
||||
comment: ""
|
||||
- name: "udsfEnabled"
|
||||
type: "bool"
|
||||
value: "0"
|
||||
access: "read-write"
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "udsfEnabled"
|
||||
comment: ""
|
||||
- name: "enableHttpPprof"
|
||||
type: "bool"
|
||||
value: "0"
|
||||
access: "read-write"
|
||||
filter: '{"0":"false","1":"true"}'
|
||||
display: "enableHttpPprof"
|
||||
comment: ""
|
||||
gnbList:
|
||||
display: "Gnb List Config"
|
||||
sort: 13
|
||||
|
||||
1278
config/schema/amf-nbi-pm-schema.json
Normal file
1278
config/schema/amf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
269
config/schema/pcf-nbi-pm-schema.json
Normal file
269
config/schema/pcf-nbi-pm-schema.json
Normal file
@@ -0,0 +1,269 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "PcfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 12
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.PcfSubNbr",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1287
config/schema/smf-nbi-pm-schema.json
Normal file
1287
config/schema/smf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
373
config/schema/udm-nbi-pm-schema.json
Normal file
373
config/schema/udm-nbi-pm-schema.json
Normal file
@@ -0,0 +1,373 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "UdmFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.UecmDeregNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetDataNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegNoPsSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRatNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReAuth",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegDnnNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.5gSupi",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gActSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "AusfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1257
config/schema/upf-nbi-pm-schema.json
Normal file
1257
config/schema/upf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -36,8 +36,8 @@ CREATE TABLE `kpi_title` (
|
||||
-- Records of kpi_title
|
||||
-- ----------------------------
|
||||
INSERT INTO `kpi_title` VALUES (1, 'AMF', 'AMF.01', '{\"cn\": \"AMF注册态用户数\", \"en\": \"AMF.RegSub\"}', 'AMF注册态用户数', 'AMF.RegSub');
|
||||
INSERT INTO `kpi_title` VALUES (2, 'AMF', 'AMF.02', '{\"cn\": \"AMF初始注册请求次数\", \"en\": \"AMF.AttInitReg\"}', 'AMF初始注册请求次数', 'AMF.AttInitReg');
|
||||
INSERT INTO `kpi_title` VALUES (3, 'AMF', 'AMF.03', '{\"cn\": \"AMF初始注册成功次数\", \"en\": \"AMF.SuccInitReg\"}', 'AMF初始注册成功次数', 'AMF.SuccInitReg');
|
||||
INSERT INTO `kpi_title` VALUES (2, 'AMF', 'AMF.02', '{\"cn\": \"AMF初始注册请求次数\", \"en\": \"AMF.AttInitReg\"}', 'AMF初始注册请求次数', '5G Registration Request');
|
||||
INSERT INTO `kpi_title` VALUES (3, 'AMF', 'AMF.03', '{\"cn\": \"AMF初始注册成功次数\", \"en\": \"AMF.SuccInitReg\"}', 'AMF初始注册成功次数', '5G Registration Success');
|
||||
INSERT INTO `kpi_title` VALUES (4, 'AMF', 'AMF.04', '{\"cn\": \"AMF初始注册失败次数_非法用户\", \"en\": \"AMF.FailedInitReg.3\"}', 'AMF初始注册失败次数_非法用户', 'AMF.FailedInitReg.3');
|
||||
INSERT INTO `kpi_title` VALUES (5, 'AMF', 'AMF.05', '{\"cn\": \"AMF初始注册失败次数_PEI不允许\", \"en\": \"AMF.FailedInitReg.5\"}', 'AMF初始注册失败次数_PEI不允许', 'AMF.FailedInitReg.5');
|
||||
INSERT INTO `kpi_title` VALUES (6, 'AMF', 'AMF.06', '{\"cn\": \"AMF初始注册失败次数_非法设备\", \"en\": \"AMF.FailedInitReg.6\"}', 'AMF初始注册失败次数_非法设备', 'AMF.FailedInitReg.6');
|
||||
@@ -80,8 +80,8 @@ INSERT INTO `kpi_title` VALUES (42, 'AUSF', 'AUSF.02', '{\"cn\": \"鉴权请求
|
||||
INSERT INTO `kpi_title` VALUES (43, 'UPF', 'UPF.01', '{\"cn\": \"PFCP会话建立成功次数\", \"en\": \"UPF.PfcpSessionEstabSucc\"}', 'PFCP会话建立成功次数', 'UPF.PfcpSessionEstabSucc');
|
||||
INSERT INTO `kpi_title` VALUES (44, 'UPF', 'UPF.02', '{\"cn\": \"PFCP会话建立请求次数\", \"en\": \"UPF.PfcpSessionEstabReq\"}', 'PFCP会话建立请求次数', 'UPF.PfcpSessionEstabReq');
|
||||
INSERT INTO `kpi_title` VALUES (45, 'UPF', 'UPF.03', '{\"cn\": \"N6接口上行字节数\", \"en\": \"UPF.N6OgOct\"}', 'N6接口上行字节数', 'UPF.N6OgOct');
|
||||
INSERT INTO `kpi_title` VALUES (46, 'UPF', 'UPF.04', '{\"cn\": \"N6接口下行字节数\", \"en\": \"UPF.N6IncOct\"}', 'N6接口下行字节数', 'UPF.N6IncOct');
|
||||
INSERT INTO `kpi_title` VALUES (47, 'UPF', 'UPF.05', '{\"cn\": \"N3接口上行字节数\", \"en\": \"UPF.N3OgOct\"}', 'N3接口上行字节数', 'UPF.N3OgOct');
|
||||
INSERT INTO `kpi_title` VALUES (46, 'UPF', 'UPF.04', '{\"cn\": \"N6接口下行字节数\", \"en\": \"UPF.N6IncOct\"}', 'N6接口下行字节数', 'UPF Downlink Throughput');
|
||||
INSERT INTO `kpi_title` VALUES (47, 'UPF', 'UPF.05', '{\"cn\": \"N3接口上行字节数\", \"en\": \"UPF.N3OgOct\"}', 'N3接口上行字节数', 'UPF Uplink Throughput');
|
||||
INSERT INTO `kpi_title` VALUES (48, 'UPF', 'UPF.06', '{\"cn\": \"N3接口下行字节数\", \"en\": \"UPF.N3IncOct\"}', 'N3接口下行字节数', 'UPF.N3IncOct');
|
||||
INSERT INTO `kpi_title` VALUES (49, 'UPF', 'UPF.07', '{\"cn\": \"SGi接口上行字节数\", \"en\": \"IP.PeakThroughputUlSgi\"}', 'SGi接口上行字节数', 'IP.PeakThroughputUlSgi');
|
||||
INSERT INTO `kpi_title` VALUES (50, 'UPF', 'UPF.08', '{\"cn\": \"SGi接口下行字节数\", \"en\": \"IP.PeakThroughputDlSgi\"}', 'SGi接口下行字节数', 'IP.PeakThroughputDlSgi');
|
||||
@@ -209,12 +209,12 @@ INSERT INTO `kpi_title` VALUES (171, 'MOCNGW', 'MOCNGW.32', '{\"cn\":\"DownlinkG
|
||||
INSERT INTO `kpi_title` VALUES (172, 'MOCNGW', 'MOCNGW.33', '{\"cn\":\"UplinkGenericNasTransport\",\"en\":\"UplinkGenericNasTransport\"}', 'UplinkGenericNasTransport', 'UplinkGenericNasTransport');
|
||||
INSERT INTO `kpi_title` VALUES (173, 'IMS', 'SCSCF.01', '{\"cn\": \"LTE接入注册用户数\",\"en\": \"UR.SubsLTE.fromVoLTE\"}', 'LTE接入注册用户数', 'UR.SubsLTE.fromVoLTE');
|
||||
INSERT INTO `kpi_title` VALUES (174, 'IMS', 'SCSCF.02', '{\"cn\": \"5G接入注册用户数\",\"en\": \"UR.Subs5G.fromVo5G\"}', '5G接入注册用户数', 'UR.Subs5G.fromVo5G');
|
||||
INSERT INTO `kpi_title` VALUES (175, 'IMS', 'SCSCF.03', '{\"cn\": \"初始注册成功次数\",\"en\": \"UR.SuccInitReg\"}', '初始注册成功次数', 'UR.SuccInitReg');
|
||||
INSERT INTO `kpi_title` VALUES (176, 'IMS', 'SCSCF.04', '{\"cn\": \"初始注册请求次数\",\"en\": \"UR.AttInitReg\"}', '初始注册请求次数', 'UR.AttInitReg');
|
||||
INSERT INTO `kpi_title` VALUES (175, 'IMS', 'SCSCF.03', '{\"cn\": \"初始注册成功次数\",\"en\": \"UR.SuccInitReg\"}', '初始注册成功次数', 'VoNR Registration Success');
|
||||
INSERT INTO `kpi_title` VALUES (176, 'IMS', 'SCSCF.04', '{\"cn\": \"初始注册请求次数\",\"en\": \"UR.AttInitReg\"}', '初始注册请求次数', 'VoNR Registration Request');
|
||||
INSERT INTO `kpi_title` VALUES (177, 'IMS', 'SCSCF.05', '{\"cn\": \"主叫接通次数\",\"en\": \"SC.SuccSessionOrig\"}', '主叫接通次数', 'SC.SuccSessionOrig');
|
||||
INSERT INTO `kpi_title` VALUES (178, 'IMS', 'SCSCF.06', '{\"cn\": \"主叫试呼次数\",\"en\": \"SC.AttSessionOrig\"}', '主叫试呼次数', 'SC.AttSessionOrig');
|
||||
INSERT INTO `kpi_title` VALUES (178, 'IMS', 'SCSCF.06', '{\"cn\": \"主叫试呼次数\",\"en\": \"SC.AttSessionOrig\"}', '主叫试呼次数', 'MO Call Attempt');
|
||||
INSERT INTO `kpi_title` VALUES (179, 'IMS', 'SCSCF.07', '{\"cn\": \"被叫接通次数\",\"en\": \"SC.SuccSessionTerm\"}', '被叫接通次数', 'SC.SuccSessionTerm');
|
||||
INSERT INTO `kpi_title` VALUES (180, 'IMS', 'SCSCF.08', '{\"cn\": \"被叫试呼次数\",\"en\": \"SC.AttSessionTerm\"}', '被叫试呼次数', 'SC.AttSessionTerm');
|
||||
INSERT INTO `kpi_title` VALUES (180, 'IMS', 'SCSCF.08', '{\"cn\": \"被叫试呼次数\",\"en\": \"SC.AttSessionTerm\"}', '被叫试呼次数', 'MT Call Attempt');
|
||||
INSERT INTO `kpi_title` VALUES (181, 'IMS', 'SCSCF.09', '{\"cn\": \"主叫应答次数\",\"en\": \"SC.AnsSessionOrig\"}', '主叫应答次数', 'SC.AnsSessionOrig');
|
||||
INSERT INTO `kpi_title` VALUES (182, 'IMS', 'SCSCF.10', '{\"cn\": \"主叫早释次数\",\"en\": \"SC.OrigRelBeforeRing\"}', '主叫早释次数', 'SC.OrigRelBeforeRing');
|
||||
INSERT INTO `kpi_title` VALUES (183, 'IMS', 'SCSCF.11', '{\"cn\": \"主叫振铃早释次数\",\"en\": \"SC.OrigRelAfterRing\"}', '主叫振铃早释次数', 'SC.OrigRelAfterRing');
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,48 +1,34 @@
|
||||
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: 192.168.2.219 Database: omc_db
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.3.38-MariaDB
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `alarm_relation`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `alarm_relation`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `alarm_relation` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`created_at` datetime(3) DEFAULT NULL,
|
||||
`updated_at` datetime(3) DEFAULT NULL,
|
||||
`deleted_at` datetime(3) DEFAULT NULL,
|
||||
`root_alarm_id` varchar(64) DEFAULT NULL,
|
||||
`alarm_id` varchar(64) DEFAULT NULL,
|
||||
`relation_type` varchar(64) DEFAULT NULL,
|
||||
`add_info` varchar(64) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_alarm_relation_deleted_at` (`deleted_at`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2024-03-06 17:26:55
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : root@192.168.2.165
|
||||
Source Server Type : MariaDB
|
||||
Source Server Version : 100335 (10.3.35-MariaDB)
|
||||
Source Host : 192.168.2.165:33066
|
||||
Source Schema : omc_db
|
||||
|
||||
Target Server Type : MariaDB
|
||||
Target Server Version : 100335 (10.3.35-MariaDB)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 16/05/2025 10:48:43
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for alarm_relation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `alarm_relation`;
|
||||
CREATE TABLE `alarm_relation` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`root_alarm_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`alarm_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`relation_type` enum('derived','related') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '衍生关系:derived/related: 父子/兄弟',
|
||||
`add_info` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -27,7 +27,7 @@ INSERT INTO `kpi_c_title` VALUES (4, 'AMF', 'AMF.C.04', '5G Register Subscriber'
|
||||
INSERT INTO `kpi_c_title` VALUES (5, 'SMF', 'SMF.C.01', 'SA_MeanPduSession', '\'SMF.01\'', ' ', 'Active', '', 'admin', '2024-12-12 19:32:45');
|
||||
INSERT INTO `kpi_c_title` VALUES (6, 'SMF', 'SMF.C.02', 'PDU Session Establishment Success Rate', '(\'SMF.02\'/\'SMF.03\')*100', '%', 'Active', '', 'admin', '2024-12-12 19:33:27');
|
||||
INSERT INTO `kpi_c_title` VALUES (7, 'SMF', 'SMF.C.03', 'IMS Session Establishment Success Rate', '(\'SMF.04\'/\'SMF.05\')*100', '%', 'Active', '', 'admin', '2024-12-12 19:34:07');
|
||||
INSERT INTO `kpi_c_title` VALUES (8, 'MME', 'MME.C.01', 'Attach Success Rate ', '(\'MME.A.02\'/\'MME.A.01\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:09');
|
||||
INSERT INTO `kpi_c_title` VALUES (8, 'MME', 'MME.C.01', 'Attach Success Rate ', '(\'MME.A.05\'/\'MME.A.04\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:09');
|
||||
INSERT INTO `kpi_c_title` VALUES (9, 'UPF', 'UPF.C.01', 'PFCP Establish Success Rate ', '(\'UPF.01\'/\'UPF.02\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:40');
|
||||
INSERT INTO `kpi_c_title` VALUES (10, 'UPF', 'UPF.C.02', 'N6_Uplink_Throughout', '(\'UPF.03\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-20 09:26:06');
|
||||
INSERT INTO `kpi_c_title` VALUES (11, 'UPF', 'UPF.C.03', 'N3_Uplink_Throughout', '(\'UPF.06\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-20 09:26:57');
|
||||
@@ -38,7 +38,7 @@ INSERT INTO `kpi_c_title` VALUES (15, 'IMS', 'IMS.C.02', 'MO_Success_Rate', '(\'
|
||||
INSERT INTO `kpi_c_title` VALUES (16, 'IMS', 'IMS.C.03', 'MT_Success_Rate', '(\'SCSCF.07\'/\'SCSCF.08\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:30:49');
|
||||
INSERT INTO `kpi_c_title` VALUES (17, 'IMS', 'IMS.C.04', 'Service_Success_Rate ', '((\'SCSCF.05\'+\'SCSCF.07\')/(\'SCSCF.06\'+\'SCSCF.08\'))*100', '%', 'Active', '', 'admin', '2024-12-12 20:31:41');
|
||||
INSERT INTO `kpi_c_title` VALUES (18, 'SMF', 'SMF.C.06', 'IMS_DefaultBear_Success_Rate ', '(\'SMF.13\'/\'SMF.14\')*100', '%', 'Active', '', 'admin', '2024-12-13 10:49:00');
|
||||
INSERT INTO `kpi_c_title` VALUES (19, 'SMF', 'SMF.C.07', 'Bear_Success_Rate_new', '((\'SMF.09\'+\'SMF.11\')/(\'SMF.10\'+\'SMF.12\') )*100', '%', 'Active', '', 'admin', '2024-12-13 11:16:04');
|
||||
INSERT INTO `kpi_c_title` VALUES (19, 'SMF', 'SMF.C.07', 'Bear_Success_Rate_new', '((\'SMF.09\'+\'SMF.11\')/(\'SMF.10\'+\'SMF.12\') )*100', '%', 'Deleted', '', 'admin', '2024-12-13 11:16:04');
|
||||
INSERT INTO `kpi_c_title` VALUES (22, 'UPF', 'UPF.C.06', 'N3_Downlink_Throughout', '(\'UPF.05\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-15 02:53:32');
|
||||
INSERT INTO `kpi_c_title` VALUES (23, 'UPF', 'UPF.C.07', 'N6_Downlink_Throughout', '(\'UPF.04\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-15 02:53:32');
|
||||
|
||||
|
||||
@@ -1,54 +1,39 @@
|
||||
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: 192.168.2.219 Database: omc_db
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.3.38-MariaDB
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `nbi_cm`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `nbi_cm`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `nbi_cm` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`timestamp` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`time_zone` varchar(10) DEFAULT NULL,
|
||||
`vendor_name` varchar(65) DEFAULT NULL,
|
||||
`ne_type` varchar(16) DEFAULT NULL,
|
||||
`cm_version` varchar(32) DEFAULT NULL,
|
||||
`rm_uid` varchar(32) DEFAULT NULL,
|
||||
`ne_id` varchar(32) DEFAULT NULL,
|
||||
`user_label` varchar(64) DEFAULT NULL,
|
||||
`object_type` varchar(32) DEFAULT NULL,
|
||||
`pv_flag` enum('PNF','VNF') DEFAULT 'PNF',
|
||||
`vm_id` varchar(128) DEFAULT '0',
|
||||
`vnf_instance_id` varchar(64) DEFAULT NULL,
|
||||
`value_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
|
||||
`status` enum('Original','Created','Updated','Deleted') NOT NULL DEFAULT 'Original',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=311439 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2024-03-06 17:26:56
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : root@192.168.2.165
|
||||
Source Server Type : MariaDB
|
||||
Source Server Version : 100335 (10.3.35-MariaDB)
|
||||
Source Host : 192.168.2.165:33066
|
||||
Source Schema : omc_db
|
||||
|
||||
Target Server Type : MariaDB
|
||||
Target Server Version : 100335 (10.3.35-MariaDB)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 26/05/2025 17:26:21
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for nbi_cm
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `nbi_cm`;
|
||||
CREATE TABLE `nbi_cm` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`cm_version` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`event_type` enum('ObjectOriginalEvent','ObjectCreationEvent','ObjectDeletionEvent','ObjectAttributeValueChangeEvent') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'ObjectCreationEvent',
|
||||
`object_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`value_json` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx-ne-id-rmuid`(`ne_type`, `ne_id`, `rm_uid`) USING BTREE,
|
||||
INDEX `idx-timestamp`(`timestamp`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 93 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -1,44 +1,59 @@
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
--
|
||||
-- Table structure for table `ne_license`
|
||||
--
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `ne_license`;
|
||||
CREATE TABLE `ne_license` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型',
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID',
|
||||
`activation_request_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '激活申请代码',
|
||||
`license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '激活授权文件',
|
||||
`serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '序列号',
|
||||
`expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '许可证到期日期',
|
||||
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态 0无效 1有效',
|
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
|
||||
`create_time` bigint DEFAULT '0' COMMENT '创建时间',
|
||||
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
|
||||
`update_time` bigint DEFAULT '0' COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_type_id` (`ne_type`,`ne_id`) USING BTREE COMMENT '唯一网元类型和网元ID'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元授权激活信息';
|
||||
|
||||
-- 初始数据对应网元
|
||||
INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (2, 'IMS', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (3, 'AMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (4, 'AUSF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (5, 'UDM', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (6, 'SMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (7, 'PCF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (8, 'NSSF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (9, 'NRF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (10, 'UPF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (11, 'LMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (12, 'NEF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (13, 'MME', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (14, 'N3IWF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : omc@192.168.2.164
|
||||
Source Server Type : MariaDB
|
||||
Source Server Version : 100528 (10.5.28-MariaDB)
|
||||
Source Host : 192.168.2.164:33066
|
||||
Source Schema : omc_db
|
||||
|
||||
Target Server Type : MariaDB
|
||||
Target Server Version : 100528 (10.5.28-MariaDB)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 29/04/2025 14:45:48
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for ne_license
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ne_license`;
|
||||
CREATE TABLE `ne_license` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型',
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID',
|
||||
`activation_request_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '激活申请代码',
|
||||
`license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '激活授权文件',
|
||||
`serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' COMMENT '序列号',
|
||||
`expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' COMMENT '许可证到期日期',
|
||||
`capability` int(11) NULL DEFAULT 0,
|
||||
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态 0无效 1有效',
|
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` bigint(20) NULL DEFAULT 0 COMMENT '创建时间',
|
||||
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` bigint(20) NULL DEFAULT 0 COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uk_type_id`(`ne_type`, `ne_id`) USING BTREE COMMENT '唯一网元类型和网元ID'
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网元授权激活信息' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- 初始数据对应网元
|
||||
INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (2, 'IMS', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (3, 'AMF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (4, 'AUSF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (5, 'UDM', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (6, 'SMF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (7, 'PCF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (8, 'NSSF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (9, 'NRF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (10, 'UPF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (11, 'LMF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (12, 'NEF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (13, 'MME', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
INSERT INTO `ne_license` VALUES (14, 'N3IWF', '001', '', '', '', '', 0, '0', '', 'supervisor', 1713928436971, '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -42,7 +42,7 @@ INSERT INTO `sys_config` VALUES (108, 'config.sys.i18nOpen', 'sys.i18n.open', 't
|
||||
INSERT INTO `sys_config` VALUES (109, 'config.sys.i18nDefault', 'sys.i18n.default', 'en_US', 'Y', 'supervisor', 1700000000000, NULL, 0, 'config.sys.i18nDefaultRemark');
|
||||
INSERT INTO `sys_config` VALUES (110, 'config.sys.lockTime', 'sys.lockTime', '0', 'Y', 'supervisor', 1704960008300, 'admin', 1706838764703, 'config.sys.lockTimeRemark');
|
||||
INSERT INTO `sys_config` VALUES (111, 'config.sys.homePage', 'sys.homePage', 'configManage/neOverview/index', 'Y', 'supervisor', 1704960008300, 'admin', 1706838764703, 'config.sys.homePageRemark');
|
||||
INSERT INTO `sys_config` VALUES (112, 'config.sys.exportTable', 'sys.exportTable', '43t6VAMQmdnt9ynWGJIR1ufeQOvr1doHDsjWUFT8JVzxTVEYgZ1Xvrk47JaPeCHMPKk9zLhJCU9MmA7JAWslQyWBLHzVOMUmA1ppIL1sVIkWGrdDiw0XuMdvXpUu/adrXHhqo42NP3hxcvwXvkWvgedezzCnUsvqfMt+Yw1Wick=', 'Y', 'supervisor', 1737355823940, 'supervisor', 1737363302083, 'config.sys.exportTableRemark');
|
||||
INSERT INTO `sys_config` VALUES (112, 'config.sys.exportTable', 'sys.exportTable', 'B1n9hW6Z2S2wZw4MVPAX6Q4wCuyWKdMk+qH1ZKqpLJxwvq2FBRgAT6WWw+j6O+ExHIJhpJ3XCpMBoiNN/RkW6EPurmqM82gnXWUIf/s6gk7OWrhdvQDD2jjNVBkLCmPLEH3ZLdgnQOZOePA7WyUdXA==', 'Y', 'supervisor', 1737355823940, 'supervisor', 1737363302083, 'config.sys.exportTableRemark');
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -168,5 +168,24 @@ INSERT INTO `sys_dict_data` VALUES (140, 21, 'dictData.cdr_cause_code.41', '41',
|
||||
INSERT INTO `sys_dict_data` VALUES (141, 22, 'dictData.cdr_cause_code.42', '42', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (142, 23, 'dictData.cdr_cause_code.47', '47', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (143, 30, 'dictData.cdr_cause_code.50', '50', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (144, 1, 'dictData.trace_msg_type.0', '0', 'trace_msg_type', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (145, 2, 'dictData.trace_msg_type.1', '1', 'trace_msg_type', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (146, 1, 'dictData.trace_msg_direct.0', '0', 'trace_msg_direct', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (147, 2, 'dictData.trace_msg_direct.1', '1', 'trace_msg_direct', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (148, 1, 'dictData.trace_interfaces.1', 'N1', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (149, 2, 'dictData.trace_interfaces.2', 'N2', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (150, 3, 'dictData.trace_interfaces.3', 'N1/N2', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (151, 4, 'dictData.trace_interfaces.4', 'N4', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (152, 8, 'dictData.trace_interfaces.8', 'N8', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (153, 10, 'dictData.trace_interfaces.10', 'N10', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (154, 11, 'dictData.trace_interfaces.11', 'N11', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (155, 12, 'dictData.trace_interfaces.12', 'N12', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (156, 13, 'dictData.trace_interfaces.13', 'N13', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (157, 7, 'dictData.trace_interfaces.7', 'N7', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (158, 15, 'dictData.trace_interfaces.15', 'N15', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (159, 17, 'dictData.trace_interfaces.17', 'N17', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (160, 20, 'dictData.trace_interfaces.20', 'N20', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (161, 22, 'dictData.trace_interfaces.22', 'N22', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (162, 40, 'dictData.trace_interfaces.40', 'N40', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -79,7 +79,7 @@ INSERT INTO `sys_dict_data` VALUES (1071, 1071, 'menu.ueUser.onlineUE', 'UE在
|
||||
INSERT INTO `sys_dict_data` VALUES (1072, 1072, 'menu.ueUser.base5G', '基站信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1073, 1073, 'menu.trace', '跟踪', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '网元跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '网元跟踪数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.taskData', '网元跟踪任务数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1076, 1076, 'menu.trace.pcap', '信令抓包', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1077, 1077, 'menu.fault', '监控', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1078, 1078, 'config.sys.exportTable', '备份文件FTP服务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -89,7 +89,7 @@ INSERT INTO `sys_dict_data` VALUES (1081, 1081, 'menu.ueUser.onlineUERemark', 'U
|
||||
INSERT INTO `sys_dict_data` VALUES (1082, 1082, 'menu.ueUser.base5GRemark', '5G基站信息菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1083, 1083, 'menu.traceRemark', '跟踪管理目录', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1084, 1084, 'menu.trace.taskRemark', '跟踪任务菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1085, 1085, 'menu.trace.analysisRemark', '信令分析菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
-- INSERT INTO `sys_dict_data` VALUES (1085, 1085, 'menu.trace.analysisRemark', '信令分析菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1086, 1086, 'menu.trace.pcapRemark', '信令抓包菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1087, 1087, 'menu.faultRemark', '故障管理目录', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (1088, 1088, 'menu.fault.active', '活动告警', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -656,7 +656,7 @@ INSERT INTO `sys_dict_data` VALUES (2145, 2145, 'menu.system.user.editPost', '
|
||||
INSERT INTO `sys_dict_data` VALUES (2146, 2146, 'menu.dashboard.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1717051745866, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2147, 2147, 'log.operate.title.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2148, 2148, 'menu.trace.pcapFile', '信令抓包文件', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2149, 2149, 'menu.trace.taskAnalyze', '跟踪数据分析', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2149, 2149, 'menu.trace.taskAnalyze', '网元跟踪任务分析', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2150, 2150, 'job.ne_data_udm', '网元数据-UDM数据刷新同步', 'i18n_zh', '', '', '1', 'supervisor', 1730173767412, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2151, 2151, 'menu.system.setting.doc', '系统使用文档', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2152, 2152, 'menu.system.setting.official', '官网链接', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
@@ -695,5 +695,47 @@ INSERT INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定
|
||||
INSERT INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2189, 2189, 'table.cdr_event_sgwc', '漫游数据话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2190, 2190, 'menu.dashboard.overview.smfUeNum', '展示数据会话数', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2191, 2191, 'menu.dashboard.overview.imsUeNum', '展示语音会话数', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2192, 2192, 'menu.dashboard.overview.gnbBase', '展示5G基站在线信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2193, 2193, 'menu.dashboard.overview.enbBase', '展示4G基站在线信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2194, 2194, 'menu.ueUser.imsUDM', 'IMS签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2195, 2195, 'menu.ueUser.imsUDMRemark', 'IMS签约用户菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2196, 2196, 'menu.ueUser.voipUDM', 'VoIP鉴权数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2197, 2197, 'menu.ueUser.voipUDMRemark', 'VoIP鉴权数据菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2198, 2198, 'menu.ueUser.exportFile', '文件管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2199, 2199, 'menu.ueUser.exportFileRemark', '文件管理菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2200, 2200, 'job.backup.ue.data', '定期备份UE用户和数据表', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2201, 2201, 'table.u_auth_user', 'UDM鉴权用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2202, 2202, 'table.u_sub_user', 'UDM签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2203, 2203, 'table.u_voip_auth', 'VoIP鉴权数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2204, 2204, 'table.u_ims_user', 'IMS签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2205, 2205, 'dictType.trace_msg_type', '跟踪消息类型', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2206, 2206, 'dictData.trace_msg_type.0', '请求', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2207, 2207, 'dictData.trace_msg_type.1', '响应', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2208, 2208, 'dictType.trace_msg_direct', '跟踪消息方向', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2209, 2209, 'dictData.trace_msg_direct.0', '接收', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2210, 2210, 'dictData.trace_msg_direct.1', '发送', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2211, 2211, 'dictData.trace_interfaces.1', 'N1', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2212, 2212, 'dictData.trace_interfaces.2', 'N2', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2213, 2213, 'dictData.trace_interfaces.3', 'N1/N2', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2214, 2214, 'dictData.trace_interfaces.4', 'N4', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2215, 2215, 'dictData.trace_interfaces.8', 'N8', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2216, 2216, 'dictData.trace_interfaces.10', 'N10', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2217, 2217, 'dictData.trace_interfaces.11', 'N11', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2218, 2218, 'dictData.trace_interfaces.12', 'N12', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2219, 2219, 'dictData.trace_interfaces.13', 'N13', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2220, 2220, 'dictData.trace_interfaces.7', 'N7', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2221, 2221, 'dictData.trace_interfaces.15', 'N15', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2222, 2222, 'dictData.trace_interfaces.17', 'N17', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2223, 2223, 'dictData.trace_interfaces.20', 'N20', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2224, 2224, 'dictData.trace_interfaces.22', 'N22', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (2225, 2225, 'dictData.trace_interfaces.40', 'N40', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2226, 2226, 'job.nbi.syncNRM', '定期同步网元资源数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2227, 2227, 'job.nbi.syncNRM.remark', '定期同步网元资源数据任务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2228, 2228, 'job.deleteExpiredNbiCm', '定期删除北向资源数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2229, 2229, 'job.deleteExpiredNbiCm.remark', '定期删除北向资源数据任务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -79,7 +79,7 @@ INSERT INTO `sys_dict_data` VALUES (3071, 3071, 'menu.ueUser.onlineUE', 'UE Onli
|
||||
INSERT INTO `sys_dict_data` VALUES (3072, 3072, 'menu.ueUser.base5G', 'Radio Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3073, 3073, 'menu.trace', 'Trace', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'NE Trace Task', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'NE Trace Task Data', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.taskData', 'NE Trace Task Data', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3076, 3076, 'menu.trace.pcap', 'Signaling Capture', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3077, 3077, 'menu.fault', 'Monitor', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3078, 3078, 'config.sys.exportTable', 'Backup file FTP service', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -89,7 +89,7 @@ INSERT INTO `sys_dict_data` VALUES (3081, 3081, 'menu.ueUser.onlineUERemark', 'U
|
||||
INSERT INTO `sys_dict_data` VALUES (3082, 3082, 'menu.ueUser.base5GRemark', '5G Base Station Information Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3083, 3083, 'menu.traceRemark', 'Tracking Management Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3084, 3084, 'menu.trace.taskRemark', 'Tracking Task Menu', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (3085, 3085, 'menu.trace.analysisRemark', 'Signaling Analysis Menu', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, '');
|
||||
-- INSERT INTO `sys_dict_data` VALUES (3085, 3085, 'menu.trace.analysisRemark', 'Signaling Analysis Menu', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (3086, 3086, 'menu.trace.pcapRemark', 'Signaling Capture Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3087, 3087, 'menu.faultRemark', 'Fault Management Catalog', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (3088, 3088, 'menu.fault.active', 'Active Alarms', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -656,7 +656,7 @@ INSERT INTO `sys_dict_data` VALUES (4145, 4145, 'menu.system.user.editPost', 'Mo
|
||||
INSERT INTO `sys_dict_data` VALUES (4146, 4146, 'menu.dashboard.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4147, 4147, 'log.operate.title.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4148, 4148, 'menu.trace.pcapFile', 'Signaling Capture File', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4149, 4149, 'menu.trace.taskAnalyze', 'Tracking Data Analysis', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4149, 4149, 'menu.trace.taskAnalyze', 'NE Trace Task Analysis', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4150, 4150, 'job.ne_data_udm', 'NE Data Sync UDM', 'i18n_en', '', '', '1', 'supervisor', 1730173767412, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4151, 4151, 'menu.system.setting.doc', 'System User Documentation', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4152, 4152, 'menu.system.setting.official', 'Official Website', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
@@ -695,5 +695,47 @@ INSERT INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom H
|
||||
INSERT INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4189, 4189, 'table.cdr_event_sgwc', 'Roaming Data CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4190, 4190, 'menu.dashboard.overview.smfUeNum', 'Display data session number', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4191, 4191, 'menu.dashboard.overview.imsUeNum', 'Display the number of voice sessions', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4192, 4192, 'menu.dashboard.overview.gnbBase', 'Display 5G base station online information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4193, 4193, 'menu.dashboard.overview.enbBase', 'Display 4G base station online information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4194, 4194, 'menu.ueUser.imsUDM', 'IMS Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4195, 4195, 'menu.ueUser.imsUDMRemark', 'IMS Subscribers Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4196, 4196, 'menu.ueUser.voipUDM', 'VoIP Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4197, 4197, 'menu.ueUser.voipUDMRemark', 'VoIP Authentication Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4198, 4198, 'menu.ueUser.exportFile', 'File Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4199, 4199, 'menu.ueUser.exportFileRemark', 'File Management Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4200, 4200, 'job.backup.ue.data', 'Backup regularly UE users and data tables', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4201, 4201, 'table.u_auth_user', 'UDM Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4202, 4202, 'table.u_sub_user', 'UDM Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4203, 4203, 'table.u_voip_auth', 'VoIP Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4204, 4204, 'table.u_ims_user', 'IMS Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4205, 4205, 'dictType.trace_msg_type', 'Trace Message Type', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4206, 4206, 'dictData.trace_msg_type.0', 'Request', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4207, 4207, 'dictData.trace_msg_type.1', 'Response', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4208, 4208, 'dictType.trace_msg_direct', 'Track Message Directio', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4209, 4209, 'dictData.trace_msg_direct.0', 'Receive', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4210, 4210, 'dictData.trace_msg_direct.1', 'Send', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4211, 4211, 'dictData.trace_interfaces.1', 'N1', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4212, 4212, 'dictData.trace_interfaces.2', 'N2', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4213, 4213, 'dictData.trace_interfaces.3', 'N1/N2', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4214, 4214, 'dictData.trace_interfaces.4', 'N4', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4215, 4215, 'dictData.trace_interfaces.8', 'N8', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4216, 4216, 'dictData.trace_interfaces.10', 'N10', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4217, 4217, 'dictData.trace_interfaces.11', 'N11', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4218, 4218, 'dictData.trace_interfaces.12', 'N12', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4219, 4219, 'dictData.trace_interfaces.13', 'N13', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4220, 4220, 'dictData.trace_interfaces.7', 'N7', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4221, 4221, 'dictData.trace_interfaces.15', 'N15', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4222, 4222, 'dictData.trace_interfaces.17', 'N17', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4223, 4223, 'dictData.trace_interfaces.20', 'N20', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4224, 4224, 'dictData.trace_interfaces.22', 'N22', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (4225, 4225, 'dictData.trace_interfaces.40', 'N40', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4226, 4226, 'job.nbi.syncNRM', 'Scheduled Synchronization of NEs Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4227, 4227, 'job.nbi.syncNRM.remark', 'Scheduled Task for Synchronization of NEs Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4228, 4228, 'job.deleteExpiredNbiCm', 'Scheduled Deletion of Northbound Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4229, 4229, 'job.deleteExpiredNbiCm.remark', 'Scheduled Task for Deleting Northbound Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -56,6 +56,9 @@ INSERT INTO `sys_dict_type` VALUES (121, 'dictType.ne_host_cmd_groupId', 'ne_hos
|
||||
INSERT INTO `sys_dict_type` VALUES (122, 'dictType.ne_info_status', 'ne_info_status', '1', 'supervisor', 1702020000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_type` VALUES (123, 'dictType.ne_license_status', 'ne_license_status', '1', 'supervisor', 1702020000000, '', 0, '');
|
||||
INSERT INTO `sys_dict_type` VALUES (124, 'dictType.cdr_cause_code', 'cdr_cause_code', '1', 'supervisor', 1725877564156, '', 0, '');
|
||||
INSERT INTO `sys_dict_type` VALUES (125, 'dictType.trace_msg_type', 'trace_msg_type', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
INSERT INTO `sys_dict_type` VALUES (126, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
INSERT INTO `sys_dict_type` VALUES (127, 'dictType.trace_interfaces', 'trace_interfaces', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -37,11 +37,14 @@ INSERT INTO `sys_job` VALUES (6, 'job.deleteExpiredKpiRecord', 'SYSTEM', 'delete
|
||||
INSERT INTO `sys_job` VALUES (7, 'job.backupEtcFromNE', 'SYSTEM', 'backupEtcFromNE', NULL, '0 30 0 * * ?', '3', '0', '0', '1', 'supervisor', 1698478134843, NULL, 0, 'job.backupEtcFromNERemark');
|
||||
INSERT INTO `sys_job` VALUES (8, 'job.deleteExpiredNeStateRecord', 'SYSTEM', 'deleteExpiredRecord', '{\"duration\":1,\"tableName\":\"ne_state\",\"colName\":\"timestamp\"}', '0 25 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1703668901929, 'job.deleteExpiredNeStateRecordRemark');
|
||||
INSERT INTO `sys_job` VALUES (9, 'job.getStateFromNE', 'SYSTEM', 'getStateFromNE', '', '0/10 * * * * ?', '3', '0', '0', '0', 'supervisor', 1698478134842, 'admin', 1713231120503, 'job.getStateFromNERemark');
|
||||
INSERT INTO `sys_job` VALUES (10, 'job.genNeStateAlarm', 'SYSTEM', 'genNeStateAlarm', '{\"alarmID\":\"HXEMSSM10000\",\"alarmCode\":10000,\"alarmTitle\":\"The system state is abnormal\",\"neType\":\"OMC\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\": \"Major\",\"objectName\":\"EMS;SystemManagement;Heartbeat\",\"objectType\":\"SystemState\",\"specificProblem\":\"Alarm cause: the system state of target NE has not been received for {threshold} seconds\", \"specificProblemID\":\"AC10000\",\"threshold\":30}', '0/5 * * * * ?', '3', '0', '0', '0', 'supervisor', 1698478134842, 'admin', 1713781643031, 'job.genNeStateAlarmRemark');
|
||||
INSERT INTO `sys_job` VALUES (10, 'job.genNeStateAlarm', 'SYSTEM', 'genNeStateAlarm', '{\"alarmID\":\"HXEMSSM10000\",\"alarmCode\":10000,\"alarmTitle\":\"The system state is abnormal\",\"neType\":\"OMC\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\": \"Major\",\"objectName\":\"EMS;SystemManagement;Heartbeat\",\"objectType\":\"SystemState\",\"specificProblem\":\"Alarm cause: the system state of target NE has not been received for {threshold} seconds\", \"specificProblemID\":\"AC10000\",\"threshold\":30}', '0/5 * * * * ?', '3', '0', '1', '0', 'supervisor', 1698478134842, 'admin', 1713781643031, 'job.genNeStateAlarmRemark');
|
||||
INSERT INTO `sys_job` VALUES (11, 'job.exportOperateLog', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"sys_log_operate\",\"timeCol\":\"oper_time\",\"timeUnit\":\"milli\",\"columns\":\"oper_id,omc_get_dict_value(title, \\\"i18n_en\\\") as title,business_type,method,request_method,operator_type,oper_name,dept_name,oper_url,oper_ip,oper_location,oper_param,oper_msg,status,oper_time,cost_time\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/operate_log\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724833786290, 'job.exportOperateLog');
|
||||
INSERT INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_ims\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callType\')) as call_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callDuration\')) as call_duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceResult\')) as service_result,DATE_FORMAT(FROM_UNIXTIME(timestamp), \'%Y-%m-%d %H:%i:%s\') AS timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/ims_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1722224659251, '');
|
||||
INSERT INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,ne_type,ne_name,rm_uid,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
INSERT INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,DATE_FORMAT(FROM_UNIXTIME(JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\'))), \'%Y-%m-%d %H:%i:%s\') as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
INSERT INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
INSERT INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, '');
|
||||
INSERT INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
INSERT INTO `sys_job` VALUES (17, 'job.nbi.syncNRM', 'SYSTEM', 'syncNbiNRM', '', '0 0/5 * * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.nbi.syncNRM.remark');
|
||||
INSERT INTO `sys_job` VALUES (18, 'job.deleteExpiredNbiCm', 'SYSTEM', 'deleteExpiredRecord', '{\"duration\":30,\"tableName\":\"nbi_cm\",\"colName\":\"timestamp\",\"extras\":\"\"}', '0 40 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134841, NULL, 0, 'job.deleteExpiredNbiCm.remark');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -136,8 +136,8 @@ INSERT INTO `sys_menu` VALUES (2080, 'menu.ueUser.onlineIMS', 5, 4, 'ims', 'neUs
|
||||
INSERT INTO `sys_menu` VALUES (2081, 'menu.ueUser.onlineUE', 5, 6, 'ue', 'neUser/ue/index', '1', '0', 'M', '1', '1', 'neUser:ue:index', 'icon-xiangmuchengyuan', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.onlineUERemark');
|
||||
INSERT INTO `sys_menu` VALUES (2082, 'menu.ueUser.base5G', 5, 7, 'base5G', 'neUser/base5G/index', '1', '0', 'M', '0', '1', 'neUser:base5G:index', 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.base5GRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2083, 'menu.trace', 2087, 30, 'traceManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.traceRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '0', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1713176976458, 'menu.trace.taskRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 4, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '1', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1744453890548, 'menu.trace.taskRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.taskData', 2083, 4, 'task/inline/data', 'traceManage/task/data', '1', '0', 'M', '0', '1', 'traceManage:task:data', '#', 'supervisor', 1700000000000, 'admin', 1744453921381, '');
|
||||
INSERT INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 11, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2087, 'menu.fault', 0, 2, 'faultManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-jinggao', 'supervisor', 1700000000000, NULL, 0, 'menu.faultRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active-alarm', 'faultManage/active-alarm/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', 'supervisor', 1700000000000, NULL, 0, 'menu.fault.activemRemark');
|
||||
@@ -210,9 +210,13 @@ INSERT INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 12, 'pcap/inli
|
||||
INSERT INTO `sys_menu` VALUES (2159, 'menu.log.exportFile', 2089, 100, 'exportFile', 'logManage/exportFile/index', '1', '1', 'M', '1', '1', 'logManage:exportFile:index', 'icon-wenjian', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '0', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 6, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '0', '1', 'traceManage:taskHLR:index', 'icon-chexiao', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:taskAnalyze:index', '#', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:task:analyze', '#', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 'traceManage/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 2083, 16, 'wireshark', 'traceManage/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2165, 'menu.config.neOverview', 4, 1, 'neOverview', 'configManage/neOverview/index', '1', '0', 'M', '1', '1', 'configManage:neOverview:index', 'icon-tubiaoku', 'supervisor', 1700000000000, NULL, 0, 'menu.config.neOverviewRemark');
|
||||
INSERT INTO `sys_menu` VALUES (2166, 'menu.dashboard.overview.smfUeNum', 2132, 2, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:smfUeNum', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2167, 'menu.dashboard.overview.imsUeNum', 2132, 4, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:imsUeNum', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2168, 'menu.dashboard.overview.gnbBase', 2132, 6, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:gnbBase', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2169, 'menu.dashboard.overview.enbBase', 2132, 8, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:enbBase', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -22,8 +22,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 61);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 63);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 64);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 100);
|
||||
@@ -34,7 +32,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 117);
|
||||
@@ -66,20 +63,13 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1022);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1023);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1024);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1030);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1031);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1033);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1040);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1043);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1049);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1050);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1051);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1052);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1053);
|
||||
@@ -90,10 +80,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2080);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2081);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2082);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2084);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2085);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2086);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2087);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2088);
|
||||
@@ -103,14 +91,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2096);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2098);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2099);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2100);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2101);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2102);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2103);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2104);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2105);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2106);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2107);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2109);
|
||||
@@ -118,17 +102,13 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2117);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2118);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2119);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2120);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2121);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2122);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2123);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2124);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2125);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2128);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2129);
|
||||
@@ -158,25 +138,22 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2159);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2160);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2162);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2163);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2164);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 5);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1031);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1032);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1048);
|
||||
@@ -184,7 +161,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2009);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2080);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2081);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2082);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
||||
@@ -193,15 +169,14 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2089);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2091);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2096);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2119);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2120);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
||||
@@ -220,22 +195,21 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2146);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2147);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2148);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 501);
|
||||
@@ -254,7 +228,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
||||
@@ -268,21 +242,18 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2141);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2151);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2163);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2130);
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -5,19 +5,21 @@
|
||||
DROP TABLE IF EXISTS `trace_data`;
|
||||
CREATE TABLE `trace_data` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`task_id` int NOT NULL COMMENT '跟踪任务ID',
|
||||
`imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '',
|
||||
`msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '',
|
||||
`src_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '源地址带端口',
|
||||
`dst_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '目标地址带端口',
|
||||
`if_type` int DEFAULT NULL COMMENT '接口类型,未分类',
|
||||
`msg_type` int DEFAULT NULL,
|
||||
`msg_direct` int DEFAULT NULL,
|
||||
`length` int DEFAULT NULL COMMENT '去除头后的原始数据byte长度',
|
||||
`timestamp` bigint DEFAULT '0' COMMENT '毫秒',
|
||||
`raw_msg` text COLLATE utf8mb4_general_ci COMMENT '去除头后的原始数据byteBase64',
|
||||
`dec_msg` text COLLATE utf8mb4_general_ci COMMENT 'TCP内容消息',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务数据';
|
||||
`trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '跟踪任务ID',
|
||||
`imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UE类型 IMSI',
|
||||
`msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UE类型 可能存在',
|
||||
`src_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '源地址',
|
||||
`dst_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '目标地址',
|
||||
`if_type` varchar(16) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '接口类型,未分类',
|
||||
`msg_type` int DEFAULT NULL COMMENT '消息类型,0-req, 1-rsp',
|
||||
`msg_direct` int DEFAULT NULL COMMENT '消息方向,0-recv,1-send',
|
||||
`msg_ne` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '消息网元',
|
||||
`msg_event` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '消息事件,e.g: CreateContextReq',
|
||||
`length` int DEFAULT NULL COMMENT '原始数据byte长度',
|
||||
`timestamp` bigint DEFAULT '0' COMMENT '纳秒时间戳',
|
||||
`raw_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '原始数据byteBase64',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_task_id_time` (`trace_id`,`timestamp`) COMMENT '任务DI时间'
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务数据';
|
||||
|
||||
-- Dump completed on 2024-09-19 14:26:59
|
||||
-- Dump completed on 2025-04-14 14:26:59
|
||||
|
||||
@@ -6,26 +6,20 @@ DROP TABLE IF EXISTS `trace_task`;
|
||||
CREATE TABLE `trace_task` (
|
||||
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务编号',
|
||||
`trace_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '1-Interface,2-Device,3-User',
|
||||
`trace_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '1-Interface,2-Device,3-UE',
|
||||
`start_time` bigint DEFAULT '0' COMMENT '开始时间 毫秒',
|
||||
`end_time` bigint DEFAULT '0' COMMENT '结束时间 毫秒',
|
||||
`interfaces` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '接口跟踪必须 例如 N8,N10',
|
||||
`imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户跟踪必须',
|
||||
`msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户跟踪可选',
|
||||
`ue_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '设备跟踪必须 IP',
|
||||
`src_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '源地址IP',
|
||||
`dst_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '目标地址IP',
|
||||
`signal_port` int DEFAULT '0' COMMENT '地址IP端口',
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
|
||||
`create_time` bigint DEFAULT '0' COMMENT '创建时间',
|
||||
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
|
||||
`update_time` bigint DEFAULT '0' COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '备注',
|
||||
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型',
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID',
|
||||
`notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:29500',
|
||||
`fetch_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '任务下发请求响应消息',
|
||||
`ne_list` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元列表 neType_neId 例如 UDM_001,AMF_001',
|
||||
`notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:33033',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务';
|
||||
|
||||
-- Dump completed on 2024-09-19 14:26:59
|
||||
-- Dump completed on 2025-04-14 14:26:59
|
||||
|
||||
39
database/upgrade/nbi_cm1.sql
Executable file
39
database/upgrade/nbi_cm1.sql
Executable file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : root@192.168.2.165
|
||||
Source Server Type : MariaDB
|
||||
Source Server Version : 100335 (10.3.35-MariaDB)
|
||||
Source Host : 192.168.2.165:33066
|
||||
Source Schema : omc_db
|
||||
|
||||
Target Server Type : MariaDB
|
||||
Target Server Version : 100335 (10.3.35-MariaDB)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 26/05/2025 17:22:45
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for nbi_cm
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `nbi_cm`;
|
||||
CREATE TABLE `nbi_cm` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`cm_version` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`event_type` enum('ObjectOriginalEvent','ObjectCreationEvent','ObjectDeletionEvent','ObjectAttributeValueChangeEvent') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'ObjectCreationEvent',
|
||||
`object_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`value_json` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx-ne-id-rmuid`(`ne_type`, `ne_id`, `rm_uid`) USING BTREE,
|
||||
INDEX `idx-timestamp`(`timestamp`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 93 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
20
database/upgrade/upg_alarm_relation.sql
Normal file
20
database/upgrade/upg_alarm_relation.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `alarm_relation` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`root_alarm_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`alarm_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`relation_type` enum('derived','related') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '衍生关系:derived/related: 父子/兄弟',
|
||||
`add_info` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
ALTER TABLE `alarm_relation`
|
||||
DROP COLUMN IF EXISTS `updated_at`,
|
||||
DROP COLUMN IF EXISTS `deleted_at`,
|
||||
MODIFY COLUMN IF EXISTS `relation_type` enum('derived','related') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '衍生关系:derived/related: 父子/兄弟' AFTER `alarm_id`,
|
||||
MODIFY COLUMN IF EXISTS `created_at` datetime NULL DEFAULT NULL AFTER `add_info`;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -26,7 +26,7 @@ REPLACE INTO `kpi_c_title` VALUES (4, 'AMF', 'AMF.C.04', '5G Register Subscriber
|
||||
REPLACE INTO `kpi_c_title` VALUES (5, 'SMF', 'SMF.C.01', 'SA_MeanPduSession', '\'SMF.01\'', ' ', 'Active', '', 'admin', '2024-12-12 19:32:45');
|
||||
REPLACE INTO `kpi_c_title` VALUES (6, 'SMF', 'SMF.C.02', 'PDU Session Establishment Success Rate', '(\'SMF.02\'/\'SMF.03\')*100', '%', 'Active', '', 'admin', '2024-12-12 19:33:27');
|
||||
REPLACE INTO `kpi_c_title` VALUES (7, 'SMF', 'SMF.C.03', 'IMS Session Establishment Success Rate', '(\'SMF.04\'/\'SMF.05\')*100', '%', 'Active', '', 'admin', '2024-12-12 19:34:07');
|
||||
REPLACE INTO `kpi_c_title` VALUES (8, 'MME', 'MME.C.01', 'Attach Success Rate ', '(\'MME.A.02\'/\'MME.A.01\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:09');
|
||||
REPLACE INTO `kpi_c_title` VALUES (8, 'MME', 'MME.C.01', 'Attach Success Rate ', '(\'MME.A.05\'/\'MME.A.04\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:09');
|
||||
REPLACE INTO `kpi_c_title` VALUES (9, 'UPF', 'UPF.C.01', 'PFCP Establish Success Rate ', '(\'UPF.01\'/\'UPF.02\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:26:40');
|
||||
REPLACE INTO `kpi_c_title` VALUES (10, 'UPF', 'UPF.C.02', 'N6_Uplink_Throughout', '(\'UPF.03\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-20 09:26:06');
|
||||
REPLACE INTO `kpi_c_title` VALUES (11, 'UPF', 'UPF.C.03', 'N3_Uplink_Throughout', '(\'UPF.06\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-20 09:26:57');
|
||||
@@ -37,7 +37,7 @@ REPLACE INTO `kpi_c_title` VALUES (15, 'IMS', 'IMS.C.02', 'MO_Success_Rate', '(\
|
||||
REPLACE INTO `kpi_c_title` VALUES (16, 'IMS', 'IMS.C.03', 'MT_Success_Rate', '(\'SCSCF.07\'/\'SCSCF.08\')*100', '%', 'Active', '', 'admin', '2024-12-12 20:30:49');
|
||||
REPLACE INTO `kpi_c_title` VALUES (17, 'IMS', 'IMS.C.04', 'Service_Success_Rate ', '((\'SCSCF.05\'+\'SCSCF.07\')/(\'SCSCF.06\'+\'SCSCF.08\'))*100', '%', 'Active', '', 'admin', '2024-12-12 20:31:41');
|
||||
REPLACE INTO `kpi_c_title` VALUES (18, 'SMF', 'SMF.C.06', 'IMS_DefaultBear_Success_Rate ', '(\'SMF.13\'/\'SMF.14\')*100', '%', 'Active', '', 'admin', '2024-12-13 10:49:00');
|
||||
REPLACE INTO `kpi_c_title` VALUES (19, 'SMF', 'SMF.C.07', 'Bear_Success_Rate_new', '((\'SMF.09\'+\'SMF.11\')/(\'SMF.10\'+\'SMF.12\') )*100', '%', 'Active', '', 'admin', '2024-12-13 11:16:04');
|
||||
REPLACE INTO `kpi_c_title` VALUES (19, 'SMF', 'SMF.C.07', 'Bear_Success_Rate_new', '((\'SMF.09\'+\'SMF.11\')/(\'SMF.10\'+\'SMF.12\') )*100', '%', 'Deleted', '', 'admin', '2024-12-13 11:16:04');
|
||||
REPLACE INTO `kpi_c_title` VALUES (22, 'UPF', 'UPF.C.06', 'N3_Downlink_Throughout', '(\'UPF.05\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-15 02:53:32');
|
||||
REPLACE INTO `kpi_c_title` VALUES (23, 'UPF', 'UPF.C.07', 'N6_Downlink_Throughout', '(\'UPF.04\')*8/5/1000/1000', 'Mbps', 'Active', '', 'admin', '2025-01-15 02:53:32');
|
||||
|
||||
|
||||
46
database/upgrade/upg_nbi_cm.sql
Normal file
46
database/upgrade/upg_nbi_cm.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `nbi_cm` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`cm_version` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`event_type` enum('ObjectOriginalEvent','ObjectCreationEvent','ObjectDeletionEvent','ObjectAttributeValueChangeEvent') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'ObjectCreationEvent',
|
||||
`object_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`value_json` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx-ne-id-rmuid`(`ne_type`, `ne_id`, `rm_uid`) USING BTREE,
|
||||
INDEX `idx-timestamp`(`timestamp`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 93 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
ALTER TABLE `nbi_cm` ADD COLUMN IF NOT EXISTS `event_type` enum('ObjectOriginalEvent','ObjectCreationEvent','ObjectDeletionEvent','ObjectAttributeValueChangeEvent') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'ObjectCreationEvent' AFTER `rm_uid`;
|
||||
|
||||
ALTER TABLE `nbi_cm` MODIFY COLUMN `ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `ne_type`;
|
||||
|
||||
ALTER TABLE `nbi_cm` MODIFY COLUMN `value_json` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL AFTER `object_type`;
|
||||
|
||||
ALTER TABLE `nbi_cm` MODIFY COLUMN `timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP AFTER `value_json`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `time_zone`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `vendor_name`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `user_label`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `pv_flag`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `vm_id`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `vnf_instance_id`;
|
||||
|
||||
ALTER TABLE `nbi_cm` DROP COLUMN IF EXISTS `status`;
|
||||
|
||||
ALTER TABLE `nbi_cm`
|
||||
ADD INDEX IF NOT EXISTS `idx-ne-id-rmuid`(`ne_type`, `ne_id`, `rm_uid`) USING BTREE;
|
||||
|
||||
ALTER TABLE `nbi_cm`
|
||||
ADD INDEX `idx-timestamp`(`timestamp`) USING BTREE;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -47,6 +47,6 @@ ALTER TABLE `ne_license` DROP COLUMN IF EXISTS `created_at`;
|
||||
ALTER TABLE `ne_license` DROP COLUMN IF EXISTS `updated_at`;
|
||||
ALTER TABLE `ne_license` DROP COLUMN IF EXISTS `deleted_at`;
|
||||
ALTER TABLE `ne_license` ADD UNIQUE INDEX IF NOT EXISTS `uk_type_id`(`ne_type` ASC, `ne_id` ASC) USING BTREE COMMENT '唯一网元类型和网元ID';
|
||||
|
||||
ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `capability` int NULL DEFAULT 0 AFTER `expiry_date`;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -37,6 +37,6 @@ INSERT IGNORE INTO `sys_config` VALUES (108, 'config.sys.i18nOpen', 'sys.i18n.op
|
||||
INSERT IGNORE INTO `sys_config` VALUES (109, 'config.sys.i18nDefault', 'sys.i18n.default', 'en_US', 'Y', 'supervisor', 1700000000000, NULL, 0, 'config.sys.i18nDefaultRemark');
|
||||
INSERT IGNORE INTO `sys_config` VALUES (110, 'config.sys.lockTime', 'sys.lockTime', '0', 'Y', 'supervisor', 1704960008300, 'admin', 1706838764703, 'config.sys.lockTimeRemark');
|
||||
INSERT IGNORE INTO `sys_config` VALUES (111, 'config.sys.homePage', 'sys.homePage', 'configManage/neOverview/index', 'Y', 'supervisor', 1704960008300, 'admin', 1706838764703, 'config.sys.homePageRemark');
|
||||
INSERT IGNORE INTO `sys_config` VALUES (112, 'config.sys.exportTable', 'sys.exportTable', '43t6VAMQmdnt9ynWGJIR1ufeQOvr1doHDsjWUFT8JVzxTVEYgZ1Xvrk47JaPeCHMPKk9zLhJCU9MmA7JAWslQyWBLHzVOMUmA1ppIL1sVIkWGrdDiw0XuMdvXpUu/adrXHhqo42NP3hxcvwXvkWvgedezzCnUsvqfMt+Yw1Wick=', 'Y', 'supervisor', 1737355823940, 'supervisor', 1737363302083, 'config.sys.exportTableRemark');
|
||||
INSERT IGNORE INTO `sys_config` VALUES (112, 'config.sys.exportTable', 'sys.exportTable', 'B1n9hW6Z2S2wZw4MVPAX6Q4wCuyWKdMk+qH1ZKqpLJxwvq2FBRgAT6WWw+j6O+ExHIJhpJ3XCpMBoiNN/RkW6EPurmqM82gnXWUIf/s6gk7OWrhdvQDD2jjNVBkLCmPLEH3ZLdgnQOZOePA7WyUdXA==', 'Y', 'supervisor', 1737355823940, 'supervisor', 1737363302083, 'config.sys.exportTableRemark');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -168,6 +168,25 @@ REPLACE INTO `sys_dict_data` VALUES (140, 21, 'dictData.cdr_cause_code.41', '41'
|
||||
REPLACE INTO `sys_dict_data` VALUES (141, 22, 'dictData.cdr_cause_code.42', '42', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (142, 23, 'dictData.cdr_cause_code.47', '47', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (143, 30, 'dictData.cdr_cause_code.50', '50', 'cdr_cause_code', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (144, 1, 'dictData.trace_msg_type.0', '0', 'trace_msg_type', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (145, 2, 'dictData.trace_msg_type.1', '1', 'trace_msg_type', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (146, 1, 'dictData.trace_msg_direct.0', '0', 'trace_msg_direct', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (147, 2, 'dictData.trace_msg_direct.1', '1', 'trace_msg_direct', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (148, 1, 'dictData.trace_interfaces.1', 'N1', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (149, 2, 'dictData.trace_interfaces.2', 'N2', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (150, 3, 'dictData.trace_interfaces.3', 'N1/N2', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (151, 4, 'dictData.trace_interfaces.4', 'N4', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (152, 8, 'dictData.trace_interfaces.8', 'N8', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (153, 10, 'dictData.trace_interfaces.10', 'N10', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (154, 11, 'dictData.trace_interfaces.11', 'N11', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (155, 12, 'dictData.trace_interfaces.12', 'N12', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (156, 13, 'dictData.trace_interfaces.13', 'N13', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (157, 7, 'dictData.trace_interfaces.7', 'N7', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (158, 15, 'dictData.trace_interfaces.15', 'N15', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (159, 17, 'dictData.trace_interfaces.17', 'N17', 'trace_interfaces', '', '', '0', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (160, 20, 'dictData.trace_interfaces.20', 'N20', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (161, 22, 'dictData.trace_interfaces.22', 'N22', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (162, 40, 'dictData.trace_interfaces.40', 'N40', 'trace_interfaces', '', '', '1', 'supervisor', 1712720201349, '', 0, '');
|
||||
|
||||
|
||||
-- 指定记录条件更新
|
||||
|
||||
@@ -92,7 +92,7 @@ REPLACE INTO `sys_dict_data` VALUES (1071, 1071, 'menu.ueUser.onlineUE', 'UE在
|
||||
REPLACE INTO `sys_dict_data` VALUES (1072, 1072, 'menu.ueUser.base5G', '基站信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1073, 1073, 'menu.trace', '跟踪', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '网元跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '网元跟踪数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.taskData', '网元跟踪任务数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1076, 1076, 'menu.trace.pcap', '信令抓包', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1077, 1077, 'menu.fault', '监控', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1078, 1078, 'config.sys.exportTable', '备份文件FTP服务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -102,7 +102,7 @@ REPLACE INTO `sys_dict_data` VALUES (1081, 1081, 'menu.ueUser.onlineUERemark', '
|
||||
REPLACE INTO `sys_dict_data` VALUES (1082, 1082, 'menu.ueUser.base5GRemark', '5G基站信息菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1083, 1083, 'menu.traceRemark', '跟踪管理目录', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1084, 1084, 'menu.trace.taskRemark', '跟踪任务菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1085, 1085, 'menu.trace.analysisRemark', '信令分析菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
-- REPLACE INTO `sys_dict_data` VALUES (1085, 1085, 'menu.trace.analysisRemark', '信令分析菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1086, 1086, 'menu.trace.pcapRemark', '信令抓包菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1087, 1087, 'menu.faultRemark', '故障管理目录', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (1088, 1088, 'menu.fault.active', '活动告警', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -663,7 +663,7 @@ REPLACE INTO `sys_dict_data` VALUES (2145, 2145, 'menu.system.user.editPost', '
|
||||
REPLACE INTO `sys_dict_data` VALUES (2146, 2146, 'menu.dashboard.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1717051745866, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2147, 2147, 'log.operate.title.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2148, 2148, 'menu.trace.pcapFile', '信令抓包文件', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2149, 2149, 'menu.trace.taskAnalyze', '跟踪数据分析', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2149, 2149, 'menu.trace.taskAnalyze', '网元跟踪任务分析', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2150, 2150, 'job.ne_data_udm', '网元数据-UDM数据刷新同步', 'i18n_zh', '', '', '1', 'supervisor', 1730173767412, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2151, 2151, 'menu.system.setting.doc', '系统使用文档', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2152, 2152, 'menu.system.setting.official', '官网链接', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
@@ -702,5 +702,47 @@ REPLACE INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定
|
||||
REPLACE INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2189, 2189, 'table.cdr_event_sgwc', '漫游数据话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2190, 2190, 'menu.dashboard.overview.smfUeNum', '展示数据会话数', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2191, 2191, 'menu.dashboard.overview.imsUeNum', '展示语音会话数', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2192, 2192, 'menu.dashboard.overview.gnbBase', '展示5G基站在线信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2193, 2193, 'menu.dashboard.overview.enbBase', '展示4G基站在线信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2194, 2194, 'menu.ueUser.imsUDM', 'IMS签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2195, 2195, 'menu.ueUser.imsUDMRemark', 'IMS签约用户菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2196, 2196, 'menu.ueUser.voipUDM', 'VoIP鉴权数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2197, 2197, 'menu.ueUser.voipUDMRemark', 'VoIP鉴权数据菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2198, 2198, 'menu.ueUser.exportFile', '文件管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2199, 2199, 'menu.ueUser.exportFileRemark', '文件管理菜单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2200, 2200, 'job.backup.ue.data', '定期备份UE用户和数据表', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2201, 2201, 'table.u_auth_user', 'UDM鉴权用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2202, 2202, 'table.u_sub_user', 'UDM签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2203, 2203, 'table.u_voip_auth', 'VoIP鉴权数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2204, 2204, 'table.u_ims_user', 'IMS签约用户', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2205, 2205, 'dictType.trace_msg_type', '跟踪消息类型', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2206, 2206, 'dictData.trace_msg_type.0', '请求', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2207, 2207, 'dictData.trace_msg_type.1', '响应', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2208, 2208, 'dictType.trace_msg_direct', '跟踪消息方向', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2209, 2209, 'dictData.trace_msg_direct.0', '接收', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2210, 2210, 'dictData.trace_msg_direct.1', '发送', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2211, 2211, 'dictData.trace_interfaces.1', 'N1', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2212, 2212, 'dictData.trace_interfaces.2', 'N2', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2213, 2213, 'dictData.trace_interfaces.3', 'N1/N2', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2214, 2214, 'dictData.trace_interfaces.4', 'N4', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2215, 2215, 'dictData.trace_interfaces.8', 'N8', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2216, 2216, 'dictData.trace_interfaces.10', 'N10', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2217, 2217, 'dictData.trace_interfaces.11', 'N11', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2218, 2218, 'dictData.trace_interfaces.12', 'N12', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2219, 2219, 'dictData.trace_interfaces.13', 'N13', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2220, 2220, 'dictData.trace_interfaces.7', 'N7', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2221, 2221, 'dictData.trace_interfaces.15', 'N15', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2222, 2222, 'dictData.trace_interfaces.17', 'N17', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2223, 2223, 'dictData.trace_interfaces.20', 'N20', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2224, 2224, 'dictData.trace_interfaces.22', 'N22', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2225, 2225, 'dictData.trace_interfaces.40', 'N40', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2226, 2226, 'job.nbi.syncNRM', '定期同步网元资源数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2227, 2227, 'job.nbi.syncNRM.remark', '定期同步网元资源数据任务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2228, 2228, 'job.deleteExpiredNbiCm', '定期删除北向资源数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (2229, 2229, 'job.deleteExpiredNbiCm.remark', '定期删除北向资源数据任务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -90,7 +90,7 @@ REPLACE INTO `sys_dict_data` VALUES (3071, 3071, 'menu.ueUser.onlineUE', 'UE Onl
|
||||
REPLACE INTO `sys_dict_data` VALUES (3072, 3072, 'menu.ueUser.base5G', 'Radio Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3073, 3073, 'menu.trace', 'Trace', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'NE Trace Task', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'NE Trace Task Data', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.taskData', 'NE Trace Task Data', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3076, 3076, 'menu.trace.pcap', 'Signaling Capture', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3077, 3077, 'menu.fault', 'Monitor', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3078, 3078, 'config.sys.exportTable', 'Backup file FTP service', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -100,7 +100,7 @@ REPLACE INTO `sys_dict_data` VALUES (3081, 3081, 'menu.ueUser.onlineUERemark', '
|
||||
REPLACE INTO `sys_dict_data` VALUES (3082, 3082, 'menu.ueUser.base5GRemark', '5G Base Station Information Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3083, 3083, 'menu.traceRemark', 'Tracking Management Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3084, 3084, 'menu.trace.taskRemark', 'Tracking Task Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3085, 3085, 'menu.trace.analysisRemark', 'Signaling Analysis Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
-- REPLACE INTO `sys_dict_data` VALUES (3085, 3085, 'menu.trace.analysisRemark', 'Signaling Analysis Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3086, 3086, 'menu.trace.pcapRemark', 'Signaling Capture Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3087, 3087, 'menu.faultRemark', 'Fault Management Catalog', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (3088, 3088, 'menu.fault.active', 'Active Alarms', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
|
||||
@@ -662,7 +662,7 @@ REPLACE INTO `sys_dict_data` VALUES (4145, 4145, 'menu.system.user.editPost', 'M
|
||||
REPLACE INTO `sys_dict_data` VALUES (4146, 4146, 'menu.dashboard.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4147, 4147, 'log.operate.title.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4148, 4148, 'menu.trace.pcapFile', 'Signaling Capture File', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4149, 4149, 'menu.trace.taskAnalyze', 'Tracking Data Analysis', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4149, 4149, 'menu.trace.taskAnalyze', 'NE Trace Task Analysis', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4150, 4150, 'job.ne_data_udm', 'NE Data Sync UDM', 'i18n_en', '', '', '1', 'supervisor', 1730173767412, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4151, 4151, 'menu.system.setting.doc', 'System User Documentation', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4152, 4152, 'menu.system.setting.official', 'Official Website', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, '');
|
||||
@@ -701,5 +701,47 @@ REPLACE INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom
|
||||
REPLACE INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4189, 4189, 'table.cdr_event_sgwc', 'Roaming Data CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4190, 4190, 'menu.dashboard.overview.smfUeNum', 'Display data session number', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4191, 4191, 'menu.dashboard.overview.imsUeNum', 'Display the number of voice sessions', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4192, 4192, 'menu.dashboard.overview.gnbBase', 'Display 5G base station online information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4193, 4193, 'menu.dashboard.overview.enbBase', 'Display 4G base station online information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4194, 4194, 'menu.ueUser.imsUDM', 'IMS Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4195, 4195, 'menu.ueUser.imsUDMRemark', 'IMS Subscribers Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4196, 4196, 'menu.ueUser.voipUDM', 'VoIP Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4197, 4197, 'menu.ueUser.voipUDMRemark', 'VoIP Authentication Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4198, 4198, 'menu.ueUser.exportFile', 'File Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4199, 4199, 'menu.ueUser.exportFileRemark', 'File Management Menu', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4200, 4200, 'job.backup.ue.data', 'Backup regularly UE users and data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4201, 4201, 'table.u_auth_user', 'UDM Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4202, 4202, 'table.u_sub_user', 'UDM Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4203, 4203, 'table.u_voip_auth', 'VoIP Authentication', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4204, 4204, 'table.u_ims_user', 'IMS Subscribers', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4205, 4205, 'dictType.trace_msg_type', 'Trace Message Type', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4206, 4206, 'dictData.trace_msg_type.0', 'Request', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4207, 4207, 'dictData.trace_msg_type.1', 'Response', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4208, 4208, 'dictType.trace_msg_direct', 'Track Message Directio', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4209, 4209, 'dictData.trace_msg_direct.0', 'Receive', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4210, 4210, 'dictData.trace_msg_direct.1', 'Send', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4211, 4211, 'dictData.trace_interfaces.1', 'N1', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4212, 4212, 'dictData.trace_interfaces.2', 'N2', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4213, 4213, 'dictData.trace_interfaces.3', 'N1/N2', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4214, 4214, 'dictData.trace_interfaces.4', 'N4', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4215, 4215, 'dictData.trace_interfaces.8', 'N8', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4216, 4216, 'dictData.trace_interfaces.10', 'N10', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4217, 4217, 'dictData.trace_interfaces.11', 'N11', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4218, 4218, 'dictData.trace_interfaces.12', 'N12', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4219, 4219, 'dictData.trace_interfaces.13', 'N13', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4220, 4220, 'dictData.trace_interfaces.7', 'N7', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4221, 4221, 'dictData.trace_interfaces.15', 'N15', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4222, 4222, 'dictData.trace_interfaces.17', 'N17', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4223, 4223, 'dictData.trace_interfaces.20', 'N20', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4224, 4224, 'dictData.trace_interfaces.22', 'N22', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4225, 4225, 'dictData.trace_interfaces.40', 'N40', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4226, 4226, 'job.nbi.syncNRM', 'Scheduled Synchronization of NEs Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4227, 4227, 'job.nbi.syncNRM.remark', 'Scheduled Task for Synchronization of NEs Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4228, 4228, 'job.deleteExpiredNbiCm', 'Scheduled Deletion of Northbound Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (4229, 4229, 'job.deleteExpiredNbiCm.remark', 'Scheduled Task for Deleting Northbound Resource Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -54,5 +54,8 @@ INSERT IGNORE INTO `sys_dict_type` VALUES (121, 'dictType.ne_host_cmd_groupId',
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (122, 'dictType.ne_info_status', 'ne_info_status', '1', 'supervisor', 1702020000000, '', 0, '');
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (123, 'dictType.ne_license_status', 'ne_license_status', '1', 'supervisor', 1702020000000, '', 0, '');
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (124, 'dictType.cdr_cause_code', 'cdr_cause_code', '1', 'supervisor', 1725877564156, '', 0, '');
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (125, 'dictType.trace_msg_type', 'trace_msg_type', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (126, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
INSERT IGNORE INTO `sys_dict_type` VALUES (127, 'dictType.trace_interfaces', 'trace_interfaces', '1', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -45,7 +45,10 @@ REPLACE INTO `sys_job` VALUES (10, 'job.genNeStateAlarm', 'SYSTEM', 'genNeStateA
|
||||
REPLACE INTO `sys_job` VALUES (11, 'job.exportOperateLog', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"sys_log_operate\",\"timeCol\":\"oper_time\",\"timeUnit\":\"milli\",\"columns\":\"oper_id,omc_get_dict_value(title, \\\"i18n_en\\\") as title,business_type,method,request_method,operator_type,oper_name,dept_name,oper_url,oper_ip,oper_location,oper_param,oper_msg,status,oper_time,cost_time\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/operate_log\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724833786290, 'job.exportOperateLog');
|
||||
REPLACE INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_ims\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callType\')) as call_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callDuration\')) as call_duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceResult\')) as service_result,DATE_FORMAT(FROM_UNIXTIME(timestamp), \'%Y-%m-%d %H:%i:%s\') AS timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/ims_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1722224659251, '');
|
||||
REPLACE INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
REPLACE INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,DATE_FORMAT(FROM_UNIXTIME(JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\'))), \'%Y-%m-%d %H:%i:%s\') as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
REPLACE INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
REPLACE INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, '');
|
||||
REPLACE INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, '');
|
||||
REPLACE INTO `sys_job` VALUES (17, 'job.nbi.syncNRM', 'SYSTEM', 'syncNbiNRM', '', '0 0/5 * * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.nbi.syncNRM.remark');
|
||||
REPLACE INTO `sys_job` VALUES (18, 'job.deleteExpiredNbiCm', 'SYSTEM', 'deleteExpiredRecord', '{\"duration\":30,\"tableName\":\"nbi_cm\",\"colName\":\"timestamp\",\"extras\":\"\"}', '0 40 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134841, NULL, 0, 'job.deleteExpiredNbiCm.remark');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -119,8 +119,8 @@ REPLACE INTO `sys_menu` VALUES (2080, 'menu.ueUser.onlineIMS', 5, 4, 'ims', 'neU
|
||||
REPLACE INTO `sys_menu` VALUES (2081, 'menu.ueUser.onlineUE', 5, 6, 'ue', 'neUser/ue/index', '1', '0', 'M', '1', '1', 'neUser:ue:index', 'icon-xiangmuchengyuan', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.onlineUERemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2082, 'menu.ueUser.base5G', 5, 7, 'base5G', 'neUser/base5G/index', '1', '0', 'M', '0', '1', 'neUser:base5G:index', 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.base5GRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2083, 'menu.trace', 2087, 30, 'traceManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.traceRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '0', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1713176976458, 'menu.trace.taskRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 4, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '1', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1744453890548, 'menu.trace.taskRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2085, 'menu.trace.taskData', 2083, 4, 'task/inline/data', 'traceManage/task/data', '1', '0', 'M', '0', '1', 'traceManage:task:data', '#', 'supervisor', 1700000000000, 'admin', 1744453921381, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 11, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2087, 'menu.fault', 0, 2, 'faultManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-jinggao', 'supervisor', 1700000000000, NULL, 0, 'menu.faultRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active-alarm', 'faultManage/active-alarm/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', 'supervisor', 1700000000000, NULL, 0, 'menu.fault.activemRemark');
|
||||
@@ -191,12 +191,16 @@ REPLACE INTO `sys_menu` VALUES (2156, 'menu.common.edit', 2154, 2, '#', '', '1',
|
||||
REPLACE INTO `sys_menu` VALUES (2157, 'menu.dashboard.smscCDR', 2140, 9, 'smscCDR', 'dashboard/smscCDR/index', '1', '0', 'M', '1', '1', 'dashboard:cdr:index', 'icon-paixu', 'supervisor', 1723107637982, 'supervisor', 1723107637982, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 12, 'pcap/inline/file', 'traceManage/pcap/file', '1', '1', 'M', '0', '1', 'traceManage:pcap:index', '#', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2159, 'menu.log.exportFile', 2089, 100, 'exportFile', 'logManage/exportFile/index', '1', '1', 'M', '1', '1', 'logManage:exportFile:index', 'icon-wenjian', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '0', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '1', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 6, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '0', '1', 'traceManage:taskHLR:index', 'icon-chexiao', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:taskAnalyze:index', '#', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:task:analyze', '#', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 'traceManage/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 2083, 16, 'wireshark', 'traceManage/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2165, 'menu.config.neOverview', 4, 1, 'neOverview', 'configManage/neOverview/index', '1', '0', 'M', '1', '1', 'configManage:neOverview:index', 'icon-tubiaoku', 'supervisor', 1700000000000, NULL, 0, 'menu.config.neOverviewRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2166, 'menu.dashboard.overview.smfUeNum', 2132, 2, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:smfUeNum', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2167, 'menu.dashboard.overview.imsUeNum', 2132, 4, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:imsUeNum', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2168, 'menu.dashboard.overview.gnbBase', 2132, 6, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:gnbBase', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2169, 'menu.dashboard.overview.enbBase', 2132, 8, '#', '', '1', '1', 'B', '1', '1', 'dashboard:overview:enbBase', '#', 'supervisor', 1721902269805, '', 0, '');
|
||||
|
||||
-- 指定记录条件更新
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_role_menu
|
||||
-- ----------------------------
|
||||
@@ -10,17 +7,17 @@ CREATE TABLE IF NOT EXISTS `sys_role_menu` (
|
||||
PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_role_menu
|
||||
-- ----------------------------
|
||||
--
|
||||
-- Dumping data for table `sys_role_menu`
|
||||
--
|
||||
|
||||
LOCK TABLES `sys_role_menu` WRITE;
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 61);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 63);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 64);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 100);
|
||||
@@ -31,7 +28,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 117);
|
||||
@@ -63,20 +59,13 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1022);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1023);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1024);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1030);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1031);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1033);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1040);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1043);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1049);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1050);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1051);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1052);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1053);
|
||||
@@ -87,10 +76,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2080);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2081);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2082);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2084);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2085);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2086);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2087);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2088);
|
||||
@@ -98,16 +85,12 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2089);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2091);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2096);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2098);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2099);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2100);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2101);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2102);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2103);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2104);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2105);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2106);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2107);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2109);
|
||||
@@ -115,17 +98,13 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2117);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2118);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2119);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2120);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2121);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2122);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2123);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2124);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2125);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2128);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2129);
|
||||
@@ -155,25 +134,22 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2159);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2160);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2162);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2163);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2164);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 5);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1031);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1032);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1048);
|
||||
@@ -181,7 +157,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2009);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2080);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2081);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2082);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
||||
@@ -190,15 +165,14 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2089);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2091);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2096);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2111);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2119);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2120);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
||||
@@ -217,22 +191,21 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2146);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2147);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2148);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 60);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 65);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 66);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 501);
|
||||
@@ -251,7 +224,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2114);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
||||
@@ -265,20 +238,19 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2141);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2151);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2158);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2163);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2168);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2169);
|
||||
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 1);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 4);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2126);
|
||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2130);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Dump completed on 2024-04-12 21:19:19
|
||||
|
||||
44
database/upgrade/upg_trace_data.sql
Normal file
44
database/upgrade/upg_trace_data.sql
Normal file
@@ -0,0 +1,44 @@
|
||||
--
|
||||
-- Table structure for table `trace_data`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `trace_data` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '跟踪任务ID',
|
||||
`imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UE类型 IMSI',
|
||||
`msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UE类型 可能存在',
|
||||
`src_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '源地址',
|
||||
`dst_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '目标地址',
|
||||
`if_type` varchar(16) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '接口类型,未分类',
|
||||
`msg_type` int DEFAULT NULL COMMENT '消息类型,0-req, 1-rsp',
|
||||
`msg_direct` int DEFAULT NULL COMMENT '消息方向,0-recv,1-send',
|
||||
`msg_ne` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '消息网元',
|
||||
`msg_event` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '消息事件,e.g: CreateContextReq',
|
||||
`length` int DEFAULT NULL COMMENT '原始数据byte长度',
|
||||
`timestamp` bigint DEFAULT '0' COMMENT '纳秒时间戳',
|
||||
`raw_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '原始数据byteBase64',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_task_id_time` (`trace_id`,`timestamp`) COMMENT '任务DI时间'
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务数据';
|
||||
|
||||
-- Dump completed on 2025-04-14 14:26:59
|
||||
|
||||
ALTER TABLE `trace_data` COMMENT = '跟踪_任务数据';
|
||||
ALTER TABLE `trace_data` ADD COLUMN IF NOT EXISTS `trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '跟踪任务ID' AFTER `id`;
|
||||
ALTER TABLE `trace_data` ADD COLUMN IF NOT EXISTS `msg_ne` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息网元' AFTER `msg_direct`;
|
||||
ALTER TABLE `trace_data` ADD COLUMN IF NOT EXISTS `msg_event` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息事件,e.g: CreateContextReq' AFTER `msg_ne`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `id` int NOT NULL FIRST;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UE类型 IMSI' AFTER `trace_id`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UE类型 可能存在' AFTER `imsi`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `src_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '源地址' AFTER `msisdn`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `dst_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '目标地址' AFTER `src_addr`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `if_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '接口类型,未分类' AFTER `dst_addr`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `msg_type` int NULL DEFAULT NULL COMMENT '消息类型,0-req, 1-rsp' AFTER `if_type`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `msg_direct` int NULL DEFAULT NULL COMMENT '消息方向,0-recv,1-send' AFTER `msg_type`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `length` int NULL DEFAULT NULL COMMENT '原始数据byte长度' AFTER `msg_event`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `timestamp` bigint NULL DEFAULT 0 COMMENT '纳秒时间戳' AFTER `length`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `raw_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原始数据byteBase64' AFTER `timestamp`;
|
||||
ALTER TABLE `trace_data` MODIFY COLUMN `id` int NOT NULL AUTO_INCREMENT;
|
||||
ALTER TABLE `trace_data` DROP COLUMN IF EXISTS `task_id`;
|
||||
ALTER TABLE `trace_data` DROP COLUMN IF EXISTS `dec_msg`;
|
||||
ALTER TABLE `trace_data` ADD INDEX IF NOT EXISTS `idx_task_id_time`(`trace_id`, `timestamp`) USING BTREE COMMENT '任务DI时间';
|
||||
49
database/upgrade/upg_trace_task.sql
Normal file
49
database/upgrade/upg_trace_task.sql
Normal file
@@ -0,0 +1,49 @@
|
||||
--
|
||||
-- Table structure for table `trace_task`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `trace_task` (
|
||||
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务编号',
|
||||
`trace_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '1-Interface,2-Device,3-UE',
|
||||
`start_time` bigint DEFAULT '0' COMMENT '开始时间 毫秒',
|
||||
`end_time` bigint DEFAULT '0' COMMENT '结束时间 毫秒',
|
||||
`interfaces` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '接口跟踪必须 例如 N8,N10',
|
||||
`imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户跟踪必须',
|
||||
`msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户跟踪可选',
|
||||
`src_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '源地址IP',
|
||||
`dst_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '目标地址IP',
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
|
||||
`create_time` bigint DEFAULT '0' COMMENT '创建时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '备注',
|
||||
`ne_list` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元列表 neType_neId 例如 UDM_001,AMF_001',
|
||||
`notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:33033',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务';
|
||||
|
||||
-- Dump completed on 2025-04-14 14:26:59
|
||||
|
||||
ALTER TABLE `trace_task` COMMENT = '跟踪_任务';
|
||||
ALTER TABLE `trace_task` ADD COLUMN IF NOT EXISTS `ne_list` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元列表 neType_neId 例如 UDM_001,AMF_001' AFTER `remark`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `id` int NOT NULL COMMENT 'ID' FIRST;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `trace_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务编号' AFTER `id`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `trace_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '1-Interface,2-Device,3-UE' AFTER `trace_id`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `start_time` bigint NULL DEFAULT 0 COMMENT '开始时间 毫秒' AFTER `trace_type`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `end_time` bigint NULL DEFAULT 0 COMMENT '结束时间 毫秒' AFTER `start_time`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `interfaces` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '接口跟踪必须 例如 N8,N10' AFTER `end_time`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `imsi` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户跟踪必须' AFTER `interfaces`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `msisdn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户跟踪可选' AFTER `imsi`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `src_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '源地址IP' AFTER `msisdn`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `dst_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '目标地址IP' AFTER `src_ip`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者' AFTER `dst_ip`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `create_by`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '备注' AFTER `create_time`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:33033' AFTER `ne_list`;
|
||||
ALTER TABLE `trace_task` MODIFY COLUMN `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID';
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `ue_ip`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `signal_port`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `update_by`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `update_time`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `ne_type`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `ne_id`;
|
||||
ALTER TABLE `trace_task` DROP COLUMN IF EXISTS `fetch_msg`;
|
||||
@@ -4,7 +4,6 @@ SET FOREIGN_KEY_CHECKS = 0;
|
||||
-- ----------------------------
|
||||
-- Table structure for ue_event_amf
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ue_event_amf`;
|
||||
CREATE TABLE IF NOT EXISTS `ue_event_amf` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
|
||||
@@ -4,7 +4,6 @@ SET FOREIGN_KEY_CHECKS = 0;
|
||||
-- ----------------------------
|
||||
-- Table structure for ue_event_mme
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ue_event_mme`;
|
||||
CREATE TABLE IF NOT EXISTS `ue_event_mme` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`ne_type` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
|
||||
@@ -62,14 +62,14 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
|
||||
switch neInfo.NeType {
|
||||
case "IMS":
|
||||
if v, ok := cdrEvent.CDR["recordType"]; ok && (v == "MOC" || v == "MTSM") {
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_IMS_CDR+neInfo.NeId, cdrEvent)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_IMS_CDR+"_"+neInfo.NeId, cdrEvent)
|
||||
}
|
||||
case "SMF":
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SMF_CDR+neInfo.NeId, cdrEvent)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SMF_CDR+"_"+neInfo.NeId, cdrEvent)
|
||||
case "SMSC":
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SMSC_CDR+neInfo.NeId, cdrEvent)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SMSC_CDR+"_"+neInfo.NeId, cdrEvent)
|
||||
case "SGWC":
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SGWC_CDR+neInfo.NeId, cdrEvent)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_SGWC_CDR+"_"+neInfo.NeId, cdrEvent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/features/nbi/redisqueue"
|
||||
"be.ems/lib/config"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/global"
|
||||
@@ -449,6 +450,12 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
continue
|
||||
}
|
||||
|
||||
// 推送到 redis 队列, for NBI ARALM notification
|
||||
err = redisqueue.AddAlarmQueue(alarmData.AlarmId)
|
||||
if err != nil {
|
||||
log.Warn("Failed to AddAlarmQueue:", err)
|
||||
}
|
||||
}
|
||||
alarmLog := new(AlarmLog)
|
||||
alarmLog.NeType = alarmData.NeType
|
||||
@@ -476,6 +483,24 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Error("Failed to AlarmSMSForward:", err)
|
||||
}
|
||||
}
|
||||
if config.GetYamlConfig().Alarm.RelatedRules.Enabled {
|
||||
relatedId, found := JudgeRelated(&alarmData, session, config.RelationRules.Related)
|
||||
if found {
|
||||
id, err := InsertAlarmRelation(session, alarmData.AlarmId, relatedId, "related")
|
||||
if err != nil {
|
||||
log.Error("Failed to insert alarm relation:", err)
|
||||
}
|
||||
redisqueue.AddAlarmRelationQueue([]string{strconv.FormatInt(id, 10)})
|
||||
}
|
||||
derivedId, found := JudgeDerived(&alarmData, session)
|
||||
if found {
|
||||
id, err := InsertAlarmRelation(session, alarmData.AlarmId, derivedId, "derived")
|
||||
if err != nil {
|
||||
log.Error("Failed to insert alarm relation:", err)
|
||||
}
|
||||
redisqueue.AddAlarmRelationQueue([]string{strconv.FormatInt(id, 10)})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
services.ResponseStatusOK200Null(w)
|
||||
@@ -760,6 +785,11 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Error("Failed to insert alarm:", err)
|
||||
continue
|
||||
}
|
||||
// 推送到 redis 队列, for NBI ARALM notification
|
||||
err = redisqueue.AddAlarmQueue(alarmData.AlarmId)
|
||||
if err != nil {
|
||||
log.Warn("Failed to AddAlarmQueue:", err)
|
||||
}
|
||||
}
|
||||
if err == nil && affected > 0 {
|
||||
alarmLog := new(AlarmLog)
|
||||
|
||||
@@ -15,6 +15,13 @@ import (
|
||||
func AlarmEmailForward(alarmData *Alarm) error {
|
||||
log.Info("AlarmEmailForward processing... ")
|
||||
|
||||
alarmStatus := "Clear"
|
||||
if alarmData.AlarmStatus == 1 {
|
||||
alarmStatus = "Active"
|
||||
}
|
||||
severity := alarmData.OrigSeverity
|
||||
subjectTime := fmt.Sprintf("%s-%s-%s", severity, alarmData.NeName, alarmData.AlarmTitle)
|
||||
|
||||
message := fmt.Sprintf(`
|
||||
<p>Alarm information</p>
|
||||
<p style="text-indent:2.5em">Sequence: %d</p>
|
||||
@@ -22,9 +29,9 @@ func AlarmEmailForward(alarmData *Alarm) error {
|
||||
<p style="text-indent:4em">Title: %s</p>
|
||||
<p style="text-indent:2.5em">Severity: %s</p>
|
||||
<p style="text-indent:1.5em">Event Time: %s</p>
|
||||
<p style="text-indent:0.5em">Alarm Status: %d</p>
|
||||
<p style="text-indent:0.5em">Alarm Status: %s</p>
|
||||
<p>Automatic sent by OMC, please do not reply!</p>
|
||||
`, alarmData.AlarmSeq, alarmData.NeName, alarmData.AlarmTitle, alarmData.OrigSeverity, alarmData.EventTime, alarmData.AlarmStatus)
|
||||
`, alarmData.AlarmSeq, alarmData.NeName, alarmData.AlarmTitle, alarmData.OrigSeverity, alarmData.EventTime, alarmStatus)
|
||||
|
||||
// message := fmt.Sprintf(`
|
||||
// Alarm information
|
||||
@@ -81,7 +88,7 @@ func AlarmEmailForward(alarmData *Alarm) error {
|
||||
//m.SetHeader("To", "zhangshuzhong@agrandtech.com", "simonzhangsz@outlook.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
|
||||
//m.SetHeader("Cc", "******@qq.com") // 抄送,可以多个
|
||||
//m.SetHeader("Bcc", "******@qq.com") // 暗送,可以多个
|
||||
m.SetHeader("Subject", "Alarm from OMC!") // 邮件主题
|
||||
m.SetHeader("Subject", subjectTime) // 邮件主题
|
||||
|
||||
// text/html 的意思是将文件的 content-type 设置为 text/html 的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
|
||||
// 可以通过 text/html 处理文本格式进行特殊处理,如换行、缩进、加粗等等
|
||||
|
||||
78
features/fm/relation.go
Normal file
78
features/fm/relation.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package fm
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"be.ems/lib/config"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
func JudgeDerived(alarm *Alarm, session *xorm.Session) (parentId string, found bool) {
|
||||
for _, rule := range config.RelationRules.Derived {
|
||||
if alarm.AlarmCode == rule.ChildCode {
|
||||
// 查询是否有 parent_code 的告警
|
||||
var parent Alarm
|
||||
has, _ := session.Table("alarm").
|
||||
Where("alarm_code=? AND ne_id=? AND alarm_status=1", rule.ParentCode, alarm.NeId).
|
||||
Get(&parent)
|
||||
if has {
|
||||
return parent.AlarmId, true
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", false
|
||||
}
|
||||
|
||||
func JudgeRelated(alarm *Alarm, session *xorm.Session, rules []config.RelatedRule) (relatedId string, found bool) {
|
||||
for _, rule := range rules {
|
||||
// 1. 检查 ne_type 是否匹配
|
||||
if rule.NeType != "" && alarm.NeType != rule.NeType {
|
||||
continue
|
||||
}
|
||||
// 2. 检查 code 是否在 codes 列表
|
||||
codeMatch := false
|
||||
for _, c := range rule.Codes {
|
||||
if alarm.AlarmCode == c {
|
||||
codeMatch = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !codeMatch {
|
||||
continue
|
||||
}
|
||||
// 3. 查询同一ne_id、codes列表内、时间窗口内的其他告警
|
||||
var brother Alarm
|
||||
parsedTime, err := time.Parse(time.RFC3339, alarm.EventTime)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
timeStart := parsedTime.Add(-time.Duration(rule.TimeWindow) * time.Second)
|
||||
has, _ := session.Table("alarm").
|
||||
Where("ne_id=? AND alarm_code IN (?) AND event_time BETWEEN ? AND ? AND alarm_id!=?",
|
||||
alarm.NeId, rule.Codes, timeStart, alarm.EventTime, alarm.AlarmId).
|
||||
Get(&brother)
|
||||
if has {
|
||||
return brother.AlarmId, true
|
||||
}
|
||||
}
|
||||
return "", false
|
||||
}
|
||||
|
||||
type AlarmRelation struct {
|
||||
Id int64 `xorm:"pk autoincr 'id'"`
|
||||
AlarmId string `xorm:"alarm_id"`
|
||||
RelatedAlarmId string `xorm:"related_alarm_id"`
|
||||
RelationType string `xorm:"relation_type"`
|
||||
CreateAt time.Time `xorm:"create_at"`
|
||||
}
|
||||
|
||||
func InsertAlarmRelation(session *xorm.Session, alarmId, relatedId, relationType string) (int64, error) {
|
||||
relation := &AlarmRelation{
|
||||
AlarmId: alarmId,
|
||||
RelatedAlarmId: relatedId,
|
||||
RelationType: relationType,
|
||||
CreateAt: time.Now(),
|
||||
}
|
||||
_, err := session.Insert(relation)
|
||||
return relation.Id, err // 返回插入的ID
|
||||
}
|
||||
@@ -2,14 +2,10 @@ package file_export
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/jlaffaye/ftp"
|
||||
|
||||
"be.ems/lib/file"
|
||||
"be.ems/lib/log"
|
||||
@@ -160,7 +156,7 @@ func (m *SysJob) SetFTPConfig(c *gin.Context) {
|
||||
Username string `json:"username" binding:"required"`
|
||||
ToIp string `json:"toIp" binding:"required"`
|
||||
ToPort int64 `json:"toPort" binding:"required"`
|
||||
Protocol string `json:"protocol" binding:"required,oneof=ssh ftp"`
|
||||
Enable bool `json:"enable"`
|
||||
Dir string `json:"dir" binding:"required"`
|
||||
}
|
||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||
@@ -191,7 +187,7 @@ func (m *SysJob) SetFTPConfig(c *gin.Context) {
|
||||
c.JSON(200, result.Ok(nil))
|
||||
}
|
||||
|
||||
// 设置FTP配置
|
||||
// 获取FTP配置
|
||||
// GET /table/ftp
|
||||
func (m *SysJob) GetFTPConfig(c *gin.Context) {
|
||||
// 获取配置
|
||||
@@ -209,7 +205,7 @@ func (m *SysJob) GetFTPConfig(c *gin.Context) {
|
||||
Username string `json:"username" binding:"required"`
|
||||
ToIp string `json:"toIp" binding:"required"`
|
||||
ToPort int64 `json:"toPort" binding:"required"`
|
||||
Protocol string `json:"protocol" binding:"required,oneof=ssh ftp"`
|
||||
Enable bool `json:"enable"`
|
||||
Dir string `json:"dir" binding:"required"`
|
||||
}
|
||||
err = json.Unmarshal([]byte(bodyDe), &body)
|
||||
@@ -251,7 +247,7 @@ func (m *SysJob) PutFTP(c *gin.Context) {
|
||||
Username string `json:"username" binding:"required"`
|
||||
ToIp string `json:"toIp" binding:"required"`
|
||||
ToPort int64 `json:"toPort" binding:"required"`
|
||||
Protocol string `json:"protocol" binding:"required,oneof=ssh ftp"`
|
||||
Enable bool `json:"enable"`
|
||||
Dir string `json:"dir" binding:"required"`
|
||||
}
|
||||
cfg := systemService.NewSysConfigImpl.SelectConfigByKey("sys.exportTable")
|
||||
@@ -269,70 +265,37 @@ func (m *SysJob) PutFTP(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if cfgData.Protocol == "ssh" {
|
||||
connSSH := ssh.ConnSSH{
|
||||
User: cfgData.Username,
|
||||
Password: cfgData.Password,
|
||||
Addr: cfgData.ToIp,
|
||||
Port: cfgData.ToPort,
|
||||
AuthMode: "0",
|
||||
}
|
||||
sshClient, err := connSSH.NewClient()
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// 网元主机的SSH客户端进行文件传输
|
||||
sftpClient, err := sshClient.NewClientSFTP()
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sftpClient.Close()
|
||||
// 远程文件
|
||||
remotePath := filepath.Join(cfgData.Dir, path.Base(body.FilePath), body.FileName)
|
||||
// 复制到远程
|
||||
if err = sftpClient.CopyFileLocalToRemote(localFilePath, remotePath); err != nil {
|
||||
c.JSON(200, result.ErrMsg("error uploading file"))
|
||||
return
|
||||
}
|
||||
c.JSON(200, result.Ok(nil))
|
||||
if !cfgData.Enable {
|
||||
c.JSON(200, result.ErrMsg("Setting Remote Backup is disabled"))
|
||||
return
|
||||
}
|
||||
|
||||
if cfgData.Protocol == "ftp" {
|
||||
// 连接到 FTP 服务器
|
||||
addr := fmt.Sprintf("%s:%d", cfgData.ToIp, cfgData.ToPort)
|
||||
ftpComm, err := ftp.Dial(addr, ftp.DialWithTimeout(15*time.Second))
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
// 登录到 FTP 服务器
|
||||
err = ftpComm.Login(cfgData.Username, cfgData.Password)
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer ftpComm.Quit()
|
||||
// 打开本地文件
|
||||
file, err := os.Open(localFilePath)
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
// 远程文件
|
||||
remotePath := filepath.Join(cfgData.Dir, path.Base(body.FilePath), body.FileName)
|
||||
// 上传文件到 FTP 服务器
|
||||
err = ftpComm.Stor(remotePath, file)
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
connSSH := ssh.ConnSSH{
|
||||
User: cfgData.Username,
|
||||
Password: cfgData.Password,
|
||||
Addr: cfgData.ToIp,
|
||||
Port: cfgData.ToPort,
|
||||
AuthMode: "0",
|
||||
}
|
||||
|
||||
c.JSON(200, result.Err(nil))
|
||||
sshClient, err := connSSH.NewClient()
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// 网元主机的SSH客户端进行文件传输
|
||||
sftpClient, err := sshClient.NewClientSFTP()
|
||||
if err != nil {
|
||||
c.JSON(200, result.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sftpClient.Close()
|
||||
// 远程文件
|
||||
remotePath := filepath.Join(cfgData.Dir, path.Base(body.FilePath), body.FileName)
|
||||
// 复制到远程
|
||||
if err = sftpClient.CopyFileLocalToRemote(localFilePath, remotePath); err != nil {
|
||||
c.JSON(200, result.ErrMsg("error uploading file"))
|
||||
return
|
||||
}
|
||||
c.JSON(200, result.Ok(nil))
|
||||
}
|
||||
|
||||
@@ -17,10 +17,12 @@ func Register(r *gin.RouterGroup) {
|
||||
)
|
||||
lmTable.POST("/ftp",
|
||||
middleware.PreAuthorize(nil),
|
||||
middleware.CryptoApi(true, false),
|
||||
m.SetFTPConfig,
|
||||
)
|
||||
lmTable.GET("/ftp",
|
||||
middleware.PreAuthorize(nil),
|
||||
middleware.CryptoApi(false, true),
|
||||
m.GetFTPConfig,
|
||||
)
|
||||
lmTable.PUT("/ftp",
|
||||
|
||||
181
features/nbi/redisqueue/queue.go
Normal file
181
features/nbi/redisqueue/queue.go
Normal file
@@ -0,0 +1,181 @@
|
||||
package redisqueue
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"be.ems/lib/log"
|
||||
|
||||
redisdb "be.ems/src/framework/database/redis"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
const (
|
||||
// MaxMessages is the maximum number of messages to retain in each stream
|
||||
// This is set to 2000 as per the original code
|
||||
// It ensures that only the latest 2000 messages are kept in the stream
|
||||
// This helps in managing memory and performance by not allowing the stream to grow indefinitely
|
||||
// If you need to change this, make sure to update it in all relevant places
|
||||
// across the codebase to maintain consistency
|
||||
// and avoid unexpected behavior.
|
||||
// Note: This value should be consistent with the XTRIM command used in the code
|
||||
// to trim the stream.
|
||||
// If you change this value, also update the XTRIM command accordingly.
|
||||
maxMessages = 2000 // Maximum number of messages to retain in each stream
|
||||
)
|
||||
|
||||
// 写入 alarm_relation 消息
|
||||
func AddAlarmRelationQueue(ids []string) error {
|
||||
payload := map[string][]string{"ids": ids}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "alarm_relation",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "alarm_relation", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入 alarm 消息
|
||||
func AddAlarmQueue(id string) error {
|
||||
payload := map[string]string{"id": id}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "alarm",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "alarm", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入 nbi_cm 消息
|
||||
func AddNbiCMQueue(ids []string) error {
|
||||
payload := map[string][]string{"ids": ids}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "nbi_cm",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "nbi_cm", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入 kpi_report_xxx 消息
|
||||
func AddNbiKpiQueue(neType, id string) error {
|
||||
payload := map[string]string{"neType": neType, "id": id}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "nbi_kpi",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "nbi_kpi", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入 nbi_pm 消息
|
||||
func AddNbiPMQueueOrg(neType, id string) error {
|
||||
payload := map[string]string{"neType": neType, "id": id}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "nbi_pm",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "nbi_pm", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入 nbi_pm 消息
|
||||
func AddNbiPMQueue(id string) error {
|
||||
payload := map[string]string{"id": id}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
values := map[string]interface{}{
|
||||
"payload": string(payloadBytes),
|
||||
}
|
||||
_, err = client.XAdd(ctx, &redis.XAddArgs{
|
||||
Stream: "nbi_pm",
|
||||
Values: values,
|
||||
}).Result()
|
||||
|
||||
// 只保留最新2000条消息
|
||||
client.XTrimMaxLen(context.Background(), "nbi_pm", maxMessages).Result()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 读取并打印指定 stream 的最新消息
|
||||
func ReadLatest(stream string) error {
|
||||
res, err := client.XRevRangeN(ctx, stream, "+", "-", 1).Result()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, msg := range res {
|
||||
log.Tracef("Stream: %s, ID: %s, Values: %v\n", stream, msg.ID, msg.Values)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var ctx = context.Background()
|
||||
var client *redis.Client
|
||||
|
||||
func InitRedisQueue() {
|
||||
// var cancel context.CancelFunc
|
||||
// ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
|
||||
// defer cancel()
|
||||
client = redisdb.RDB("")
|
||||
}
|
||||
|
||||
func CloseRedisQueue() {
|
||||
if err := client.Close(); err != nil {
|
||||
log.Errorf("redis db close: %s", err)
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.NeID != "" {
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=?)")
|
||||
params = append(params, strings.ToUpper(querys.NeType), querys.NeID)
|
||||
} else {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||
@@ -101,7 +101,7 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.NeID != "" {
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=?)")
|
||||
params = append(params, querys.NeType, querys.NeID)
|
||||
} else {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE ID"))
|
||||
|
||||
@@ -5,11 +5,15 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/features/nbi/redisqueue"
|
||||
"be.ems/features/pm/kpi_c_report"
|
||||
"be.ems/features/pm/kpi_c_title"
|
||||
"be.ems/lib/config"
|
||||
@@ -19,6 +23,8 @@ import (
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
|
||||
"be.ems/src/framework/utils/parse"
|
||||
neDataService "be.ems/src/modules/network_data/service"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
wsService "be.ems/src/modules/ws/service"
|
||||
"github.com/go-resty/resty/v2"
|
||||
@@ -324,14 +330,24 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if neInfo.RmUID == kpiData.RmUid {
|
||||
// 推送到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
|
||||
// 推送自定义KPI到ws订阅组
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent)
|
||||
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent)
|
||||
if neInfo.NeType == "UPF" {
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent)
|
||||
wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF+"_"+neInfo.NeId, kpiEvent)
|
||||
// 更新UPF总流量
|
||||
upValue := parse.Number(kpiEvent["UPF.03"])
|
||||
downValue := parse.Number(kpiEvent["UPF.06"])
|
||||
neDataService.NewPerfKPI.UPFTodayFlowUpdate(neInfo.RmUID, upValue, downValue)
|
||||
}
|
||||
}
|
||||
|
||||
// 推送到redis队列
|
||||
err = redisqueue.AddNbiKpiQueue(kpiData.NEType, strconv.Itoa(kpiData.ID))
|
||||
if err != nil {
|
||||
log.Warn("Failed to AddNbiKpiQueue:", err)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
@@ -920,37 +936,449 @@ func PatchMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
type Measurement struct {
|
||||
Id int `json:"-" xorm:"pk 'id' autoincr"`
|
||||
Date string `json:"-" xorm:"date"`
|
||||
Index int `json:"Index"` // 1天中测量时间粒度(如15分钟)的切片索引: 0~95
|
||||
Timestamp string `json:"TimeStamp" xorm:"-"`
|
||||
NeName string `json:"NeName"` // UserLabel
|
||||
RmUID string `json:"RmUID" xorm:"rm_uid"`
|
||||
NeType string `json:"NeType"` // 网元类型
|
||||
PmVersion string `json:"PmVersion"` // 性能数据版本号
|
||||
Dn string `json:"Dn"` // (???)网元标识, 如:RJN-CMZJ-TZ,SubNetwork=5GC88,ManagedElement=SMF53456,SmfFunction=53456
|
||||
Period string `json:"Period"` // 测量时间粒度选项:5/15/30/60
|
||||
// Date is the measurement date in YYYY-MM-DD format (internal use only, omitted from JSON).
|
||||
Date string `json:"-" xorm:"date"`
|
||||
Index int `json:"Index"` // Index of 15-minute intervals (time granularity) in a day, range: 0~95
|
||||
// Timestamp represents the measurement time in Unix milliseconds, populated from measurement time.
|
||||
NeName string `json:"NeName"` // 网元用户标签(UserLabel),用于显示和唯一标识网元名称
|
||||
// RmUID is the unique identifier for the network element (unique per NE, used for database joins).
|
||||
RmUID string `json:"RmUID" xorm:"rm_uid"`
|
||||
// Dn is the Network Element Distinguished Name (DN), uniquely identifies the network element.
|
||||
// Format example: "RJN-CMZJ-TZ,SubNetwork=5GC88,ManagedElement=SMF53456,SmfFunction=53456"
|
||||
// Dn为网元唯一标识(DN),格式示例:"RJN-CMZJ-TZ,SubNetwork=5GC88,ManagedElement=SMF53456,SmfFunction=53456"
|
||||
Dn string `json:"Dn" xorm:"dn"`
|
||||
// TimeZone specifies the time zone for the measurement, e.g., "Asia/Shanghai" or "+08:00".
|
||||
TimeZone string `json:"TimeZone"`
|
||||
NeType string `json:"NeType"` // 网元类型
|
||||
StartTime string `json:"StartTime"`
|
||||
|
||||
// List of KPIs grouped by ObjectType.
|
||||
Datas []Data `json:"Datas"`
|
||||
}
|
||||
|
||||
type KPIValue struct {
|
||||
Name string `json:"Name"` // 单个的写"Total", 或者指标项有多个测量项,如Dnn的名称写对应的Dnn"cmnet"/"ims"
|
||||
Name string `json:"Name"` // "Total" is used for aggregate values; other names (e.g., "cmnet", "ims") are used for specific measurement items such as DNN names.
|
||||
Value int64 `json:"Value"`
|
||||
}
|
||||
|
||||
type KPI struct {
|
||||
KPIID string `json:"KPIID"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
|
||||
KPIID string `json:"KPIID"`
|
||||
KPIValues []KPIValue `json:"KPIValues"`
|
||||
}
|
||||
|
||||
type Data struct {
|
||||
ObjectType string `json:"ObjectType"` // 网络资源类别名称, Pm指标项列表中为空间粒度 如:SmfFunction
|
||||
KPIs []KPI `json:"KPIs"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
|
||||
}
|
||||
|
||||
// 添加配置结构体
|
||||
// type PMConfig struct {
|
||||
// SchemaPath string `json:"schemaPath"` // schema文件路径
|
||||
// RandomMin int `json:"randomMin"` // 随机数最小值
|
||||
// RandomMax int `json:"randomMax"` // 随机数最大值
|
||||
// MergeMode string `json:"mergeMode"` // 合并模式: "merge"(合并), "none"(不合并), "schema"(仅schema随机值)
|
||||
// }
|
||||
|
||||
// 定义合并模式常量
|
||||
const (
|
||||
MergeModeNone = "none" // 不合并,仅使用网元发送的数据
|
||||
MergeModeMerge = "merge" // 合并模式,优先使用网元数据,缺失部分用随机值补充
|
||||
MergeModeSchema = "schema" // 仅使用schema数据,全部用随机值
|
||||
)
|
||||
|
||||
// 全局配置
|
||||
// SchemaPath should be configured per environment; by default, it uses "/home/simon/omc.git/be.ems/config/schema".
|
||||
// You can override this by setting the environment variable EMS_PM_SCHEMA_PATH.
|
||||
// var pmConfig = PMConfig{
|
||||
// SchemaPath: func() string {
|
||||
// if envPath := os.Getenv("EMS_PM_SCHEMA_PATH"); envPath != "" {
|
||||
// return envPath
|
||||
// }
|
||||
// return "/home/simon/omc.git/be.ems/config/schema"
|
||||
// }(),
|
||||
// RandomMin: 1,
|
||||
// RandomMax: 16,
|
||||
// MergeMode: MergeModeSchema,
|
||||
// }
|
||||
|
||||
// var pmConfig = PMConfig{
|
||||
// SchemaPath: config.GetNbiPmConfig().SchemaPath,
|
||||
// RandomMin: config.GetNbiPmConfig().RandomMin,
|
||||
// RandomMax: config.GetNbiPmConfig().RandomMax,
|
||||
// MergeMode: config.GetNbiPmConfig().MergeMode,
|
||||
// }
|
||||
|
||||
// schema数据结构
|
||||
type SchemaKPIValue struct {
|
||||
Name string `json:"Name"`
|
||||
Value int `json:"Value"`
|
||||
}
|
||||
|
||||
type SchemaKPI struct {
|
||||
KPIID string `json:"KPIID"`
|
||||
KPIValues []SchemaKPIValue `json:"KPIValues"`
|
||||
}
|
||||
|
||||
type SchemaObject struct {
|
||||
ObjectType string `json:"ObjectType"`
|
||||
KPIs []SchemaKPI `json:"KPIs"`
|
||||
}
|
||||
|
||||
type SchemaData []SchemaObject
|
||||
|
||||
// 读取schema文件
|
||||
func loadSchemaData(neType string) (*SchemaData, error) {
|
||||
schemaFile := filepath.Join(config.GetNbiPmConfig().SchemaPath, strings.ToLower(neType)+"-nbi-pm-schema.json")
|
||||
|
||||
if _, err := os.Stat(schemaFile); os.IsNotExist(err) {
|
||||
log.Warnf("Schema file not found: %s", schemaFile)
|
||||
return nil, nil // 文件不存在时返回 nil,不是错误
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(schemaFile)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read schema file: %v", err)
|
||||
}
|
||||
|
||||
var schema SchemaData
|
||||
if err := json.Unmarshal(data, &schema); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse schema file: %v", err)
|
||||
}
|
||||
|
||||
return &schema, nil
|
||||
}
|
||||
|
||||
// 生成随机值
|
||||
func generateRandomKPIValue() int64 {
|
||||
return int64(rand.Intn(config.GetNbiPmConfig().RandomMax-config.GetNbiPmConfig().RandomMin+1) +
|
||||
config.GetNbiPmConfig().RandomMin)
|
||||
}
|
||||
|
||||
// 合并网元数据和schema数据
|
||||
func mergeWithSchema(measurement *dborm.NorthboundPm, schema *SchemaData) {
|
||||
if schema == nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch config.GetNbiPmConfig().MergeMode {
|
||||
case MergeModeNone:
|
||||
// 不合并,直接返回
|
||||
log.Debug("Merge mode is 'none', skipping schema merge")
|
||||
return
|
||||
|
||||
case MergeModeSchema:
|
||||
// 仅使用schema数据,清空原有数据,全部用随机值
|
||||
log.Debug("Merge mode is 'schema', replacing all data with schema random values")
|
||||
measurement.Datas = nil
|
||||
generateSchemaOnlyData(measurement, schema)
|
||||
return
|
||||
|
||||
case MergeModeMerge:
|
||||
// 合并模式,优先使用网元数据,缺失部分用随机值补充
|
||||
log.Debug("Merge mode is 'merge', merging NE data with schema")
|
||||
mergeNeDataWithSchema(measurement, schema)
|
||||
return
|
||||
|
||||
default:
|
||||
log.Warnf("Unknown merge mode: %s, using default merge mode", config.GetNbiPmConfig().MergeMode)
|
||||
mergeNeDataWithSchema(measurement, schema)
|
||||
}
|
||||
}
|
||||
|
||||
// 仅使用schema数据生成随机值
|
||||
func generateSchemaOnlyData(measurement *dborm.NorthboundPm, schema *SchemaData) {
|
||||
for _, schemaObj := range *schema {
|
||||
newData := struct {
|
||||
ObjectType string `json:"ObjectType" xorm:"object_type"`
|
||||
PmDatas []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
} `json:"KPIs" xorm:"pm_datas"`
|
||||
}{
|
||||
ObjectType: schemaObj.ObjectType,
|
||||
PmDatas: []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
}{},
|
||||
}
|
||||
|
||||
// 遍历schema中的KPI
|
||||
for _, schemaKPI := range schemaObj.KPIs {
|
||||
newKPI := struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
}{
|
||||
PmName: schemaKPI.KPIID,
|
||||
SubDatas: []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
}{},
|
||||
}
|
||||
|
||||
// 为每个KPI值生成随机数
|
||||
for _, schemaValue := range schemaKPI.KPIValues {
|
||||
randomValue := generateRandomKPIValue()
|
||||
newSubData := struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
}{
|
||||
SN: schemaValue.Name,
|
||||
SV: randomValue,
|
||||
}
|
||||
newKPI.SubDatas = append(newKPI.SubDatas, newSubData)
|
||||
log.Debugf("Generated schema random value for %s.%s: %d",
|
||||
schemaKPI.KPIID, schemaValue.Name, randomValue)
|
||||
}
|
||||
|
||||
if len(newKPI.SubDatas) > 0 {
|
||||
newData.PmDatas = append(newData.PmDatas, newKPI)
|
||||
}
|
||||
}
|
||||
|
||||
if len(newData.PmDatas) > 0 {
|
||||
measurement.Datas = append(measurement.Datas, newData)
|
||||
log.Debugf("Created ObjectType with schema data: %s (%d KPIs)",
|
||||
schemaObj.ObjectType, len(newData.PmDatas))
|
||||
}
|
||||
}
|
||||
|
||||
log.Debugf("Schema-only mode: generated %d object types", len(measurement.Datas))
|
||||
}
|
||||
|
||||
// 合并网元数据和schema数据(原有逻辑)
|
||||
func mergeNeDataWithSchema(measurement *dborm.NorthboundPm, schema *SchemaData) {
|
||||
// 创建网元已有数据的映射,用于快速查找
|
||||
neDataMap := make(map[string]map[string]map[string]int64) // ObjectType -> KPIID -> Name -> Value
|
||||
|
||||
for _, data := range measurement.Datas {
|
||||
if neDataMap[data.ObjectType] == nil {
|
||||
neDataMap[data.ObjectType] = make(map[string]map[string]int64)
|
||||
}
|
||||
|
||||
for _, pmData := range data.PmDatas {
|
||||
if neDataMap[data.ObjectType][pmData.PmName] == nil {
|
||||
neDataMap[data.ObjectType][pmData.PmName] = make(map[string]int64)
|
||||
}
|
||||
|
||||
for _, subData := range pmData.SubDatas {
|
||||
neDataMap[data.ObjectType][pmData.PmName][subData.SN] = subData.SV
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.Debugf("Original measurement data contains %d object types", len(measurement.Datas))
|
||||
|
||||
// 遍历schema,补充缺失的数据
|
||||
for _, schemaObj := range *schema {
|
||||
// 查找或创建对应的ObjectType
|
||||
var targetData *struct {
|
||||
ObjectType string `json:"ObjectType" xorm:"object_type"`
|
||||
PmDatas []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
} `json:"KPIs" xorm:"pm_datas"`
|
||||
}
|
||||
|
||||
for i := range measurement.Datas {
|
||||
if measurement.Datas[i].ObjectType == schemaObj.ObjectType {
|
||||
targetData = &measurement.Datas[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
// 如果没找到对应的ObjectType,创建新的
|
||||
if targetData == nil {
|
||||
newData := struct {
|
||||
ObjectType string `json:"ObjectType" xorm:"object_type"`
|
||||
PmDatas []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
} `json:"KPIs" xorm:"pm_datas"`
|
||||
}{
|
||||
ObjectType: schemaObj.ObjectType,
|
||||
PmDatas: []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
}{},
|
||||
}
|
||||
measurement.Datas = append(measurement.Datas, newData)
|
||||
targetData = &measurement.Datas[len(measurement.Datas)-1]
|
||||
log.Debugf("Created new ObjectType: %s", schemaObj.ObjectType)
|
||||
}
|
||||
|
||||
// 遍历schema中的KPI
|
||||
for _, schemaKPI := range schemaObj.KPIs {
|
||||
// 查找是否已存在该KPI
|
||||
var targetKPI *struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
}
|
||||
|
||||
for i := range targetData.PmDatas {
|
||||
if targetData.PmDatas[i].PmName == schemaKPI.KPIID {
|
||||
targetKPI = &targetData.PmDatas[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没找到对应的KPI,创建新的
|
||||
if targetKPI == nil {
|
||||
newKPI := struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
}{
|
||||
PmName: schemaKPI.KPIID,
|
||||
SubDatas: []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
}{},
|
||||
}
|
||||
targetData.PmDatas = append(targetData.PmDatas, newKPI)
|
||||
targetKPI = &targetData.PmDatas[len(targetData.PmDatas)-1]
|
||||
log.Debugf("Created new KPI: %s", schemaKPI.KPIID)
|
||||
}
|
||||
|
||||
// 遍历schema中的KPI值
|
||||
for _, schemaValue := range schemaKPI.KPIValues {
|
||||
// 检查是否已存在该值
|
||||
exists := false
|
||||
for i := range targetKPI.SubDatas {
|
||||
if targetKPI.SubDatas[i].SN == schemaValue.Name {
|
||||
exists = true
|
||||
// 如果网元没有提供该值,使用随机值
|
||||
if neDataMap[schemaObj.ObjectType] == nil ||
|
||||
neDataMap[schemaObj.ObjectType][schemaKPI.KPIID] == nil ||
|
||||
neDataMap[schemaObj.ObjectType][schemaKPI.KPIID][schemaValue.Name] == 0 {
|
||||
targetKPI.SubDatas[i].SV = generateRandomKPIValue()
|
||||
log.Debugf("Updated KPI %s.%s with random value: %d",
|
||||
schemaKPI.KPIID, schemaValue.Name, targetKPI.SubDatas[i].SV)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 如果不存在,添加新的值
|
||||
if !exists {
|
||||
var value int64
|
||||
// 优先使用网元发送的值
|
||||
if neDataMap[schemaObj.ObjectType] != nil &&
|
||||
neDataMap[schemaObj.ObjectType][schemaKPI.KPIID] != nil &&
|
||||
neDataMap[schemaObj.ObjectType][schemaKPI.KPIID][schemaValue.Name] != 0 {
|
||||
value = neDataMap[schemaObj.ObjectType][schemaKPI.KPIID][schemaValue.Name]
|
||||
log.Debugf("Using NE provided value for %s.%s: %d",
|
||||
schemaKPI.KPIID, schemaValue.Name, value)
|
||||
} else {
|
||||
value = generateRandomKPIValue()
|
||||
log.Debugf("Generated random value for %s.%s: %d",
|
||||
schemaKPI.KPIID, schemaValue.Name, value)
|
||||
}
|
||||
|
||||
newSubData := struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
}{
|
||||
SN: schemaValue.Name,
|
||||
SV: value,
|
||||
}
|
||||
targetKPI.SubDatas = append(targetKPI.SubDatas, newSubData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add this function before mergeNeDataWithSchema
|
||||
func mergeDuplicateObjectTypes(measurement *dborm.NorthboundPm) {
|
||||
if len(measurement.Datas) <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
// Create a map to group data by ObjectType
|
||||
objectTypeMap := make(map[string]*struct {
|
||||
ObjectType string `json:"ObjectType" xorm:"object_type"`
|
||||
PmDatas []struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
} `json:"KPIs" xorm:"pm_datas"`
|
||||
})
|
||||
|
||||
// Group data by ObjectType
|
||||
for _, data := range measurement.Datas {
|
||||
if existingData, exists := objectTypeMap[data.ObjectType]; exists {
|
||||
// Merge PmDatas - check for duplicate KPIs
|
||||
kpiMap := make(map[string]*struct {
|
||||
PmName string `json:"KPIID" xorm:"pm_name"`
|
||||
SubDatas []struct {
|
||||
SN string `json:"Name" xorm:"sn"`
|
||||
SV int64 `json:"Value" xorm:"sv"`
|
||||
} `json:"KPIValues" xorm:"sub_datas"`
|
||||
})
|
||||
|
||||
// Index existing KPIs
|
||||
for i := range existingData.PmDatas {
|
||||
kpiMap[existingData.PmDatas[i].PmName] = &existingData.PmDatas[i]
|
||||
}
|
||||
|
||||
// Merge new KPIs
|
||||
for _, newPmData := range data.PmDatas {
|
||||
if existingKpi, exists := kpiMap[newPmData.PmName]; exists {
|
||||
// Merge SubDatas for existing KPI
|
||||
subDataMap := make(map[string]bool)
|
||||
for _, subData := range existingKpi.SubDatas {
|
||||
subDataMap[subData.SN] = true
|
||||
}
|
||||
|
||||
// Add new SubDatas that don't exist
|
||||
for _, newSubData := range newPmData.SubDatas {
|
||||
if !subDataMap[newSubData.SN] {
|
||||
existingKpi.SubDatas = append(existingKpi.SubDatas, newSubData)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Add new KPI
|
||||
existingData.PmDatas = append(existingData.PmDatas, newPmData)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Create new entry for this ObjectType
|
||||
objectTypeMap[data.ObjectType] = &data
|
||||
}
|
||||
}
|
||||
|
||||
// Replace measurement.Datas with merged data
|
||||
measurement.Datas = nil
|
||||
for _, mergedData := range objectTypeMap {
|
||||
measurement.Datas = append(measurement.Datas, *mergedData)
|
||||
}
|
||||
|
||||
log.Debugf("Merged duplicate ObjectTypes: original count %d, merged count %d",
|
||||
len(measurement.Datas), len(objectTypeMap))
|
||||
}
|
||||
|
||||
// process measurement post message from NFs
|
||||
func PostMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PostMeasurementFromNF processing... ")
|
||||
@@ -969,19 +1397,49 @@ func PostMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
log.Debug("Request body:", string(body))
|
||||
// measurement := new(dborm.NorthboundPm)
|
||||
//log.Debug("Request body:", string(body))
|
||||
measurement := new(dborm.NorthboundPm)
|
||||
_ = json.Unmarshal(body, &measurement)
|
||||
log.Debug("measurement:", measurement)
|
||||
|
||||
session := dborm.DbClient.XEngine.NewSession()
|
||||
// Merge duplicate ObjectTypes before processing
|
||||
mergeDuplicateObjectTypes(measurement)
|
||||
|
||||
neInfo, err := dborm.XormGetNeInfoByRmUID(measurement.NeType, measurement.RmUID)
|
||||
if err != nil {
|
||||
log.Error("dborm.XormGetNeInfo is failed:", err)
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
if neInfo == nil {
|
||||
log.Error("Not found target NE neType:", measurement.NeType, "RmUID:", measurement.RmUID)
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
measurement.NeName = neInfo.NeName
|
||||
measurement.Dn = neInfo.Dn
|
||||
|
||||
// 加载schema数据并进行合并
|
||||
if config.GetNbiPmConfig().MergeMode != MergeModeNone {
|
||||
log.Debugf("Loading schema for neType: %s (mode: %s)", measurement.NeType, config.GetNbiPmConfig().MergeMode)
|
||||
schema, err := loadSchemaData(measurement.NeType)
|
||||
if err != nil {
|
||||
log.Warnf("Failed to load schema for %s: %v", measurement.NeType, err)
|
||||
} else if schema != nil {
|
||||
log.Debugf("Successfully loaded schema for %s, processing with mode: %s", measurement.NeType, config.GetNbiPmConfig().MergeMode)
|
||||
mergeWithSchema(measurement, schema)
|
||||
log.Debug("Data processing completed")
|
||||
} else {
|
||||
log.Debugf("No schema file found for %s, using original data", measurement.NeType)
|
||||
}
|
||||
}
|
||||
|
||||
session := xEngine.NewSession()
|
||||
defer session.Close()
|
||||
|
||||
// layout := global.DateTime
|
||||
layout := time.RFC3339
|
||||
measurement.Date = GetDateFromTimeString(layout, measurement.StartTime)
|
||||
measurement.StartTime = GetDateTimeFromTimeString(layout, measurement.StartTime)
|
||||
|
||||
affected, err := session.Table("nbi_pm").Insert(measurement)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert nbi_pm:", err)
|
||||
@@ -989,6 +1447,12 @@ func PostMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// 推送到redis队列
|
||||
err = redisqueue.AddNbiPMQueue(strconv.Itoa(measurement.Id))
|
||||
if err != nil {
|
||||
log.Warn("Failed to AddNbiPMQueue:", err)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
@@ -996,12 +1460,6 @@ func PostMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
func GetMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("GetMeasurementFromNF processing... ")
|
||||
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
vars := mux.Vars(r)
|
||||
apiVer := vars["apiVersion"]
|
||||
if apiVer != global.ApiVersionV1 {
|
||||
@@ -1025,9 +1483,7 @@ func GetMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Debugf("neType: %s neId:%s", neType, neIds)
|
||||
|
||||
//var neInfo *dborm.NeInfo
|
||||
neInfo := new(dborm.NeInfo)
|
||||
|
||||
neInfo, err := dborm.XormGetNeInfo(neType, neIds[0])
|
||||
if err != nil {
|
||||
log.Error("dborm.XormGetNeInfo is failed:", err)
|
||||
@@ -1054,10 +1510,26 @@ func GetMeasurementFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
switch response.StatusCode() {
|
||||
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
|
||||
log.Debug("response:", response)
|
||||
// measurement := new(dborm.NorthboundPm)
|
||||
measurement := new(dborm.NorthboundPm)
|
||||
_ = json.Unmarshal(response.Body(), &measurement)
|
||||
log.Debug("measurement:", measurement)
|
||||
|
||||
// Merge duplicate ObjectTypes before processing
|
||||
mergeDuplicateObjectTypes(measurement)
|
||||
|
||||
// Load schema and merge if needed
|
||||
if config.GetNbiPmConfig().MergeMode != MergeModeNone {
|
||||
log.Debugf("Loading schema for neType: %s (mode: %s)", measurement.NeType, config.GetNbiPmConfig().MergeMode)
|
||||
schema, err := loadSchemaData(measurement.NeType)
|
||||
if err != nil {
|
||||
log.Warnf("Failed to load schema for %s: %v", measurement.NeType, err)
|
||||
} else if schema != nil {
|
||||
log.Debugf("Successfully loaded schema for %s, processing with mode: %s", measurement.NeType, config.GetNbiPmConfig().MergeMode)
|
||||
mergeWithSchema(measurement, schema)
|
||||
log.Debug("Data processing completed")
|
||||
} else {
|
||||
log.Debugf("No schema file found for %s, using original data", measurement.NeType)
|
||||
}
|
||||
}
|
||||
|
||||
session := dborm.DbClient.XEngine.NewSession()
|
||||
defer session.Close()
|
||||
|
||||
209
features/ue/ims_user/service.go
Normal file
209
features/ue/ims_user/service.go
Normal file
@@ -0,0 +1,209 @@
|
||||
package ims_user
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"be.ems/src/framework/database/redis"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
)
|
||||
|
||||
// 实例化服务层 Service 结构体
|
||||
var NewVoLTEService = &Service{
|
||||
volteRepository: NewVoLTERepository,
|
||||
}
|
||||
|
||||
// VoLTE用户信息 服务层处理
|
||||
type Service struct {
|
||||
volteRepository *Repository // VoLTE用户信息数据信息
|
||||
}
|
||||
|
||||
// dataByRedis UDM签约用户 db:0 中 volte:*
|
||||
func (r *Service) dataByRedis(imsi, neId string) []VoLTEUser {
|
||||
arr := []VoLTEUser{}
|
||||
key := fmt.Sprintf("volte:%s", imsi)
|
||||
source := fmt.Sprintf("UDM_%s", neId)
|
||||
|
||||
// 网元主机的Redis客户端
|
||||
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
defer func() {
|
||||
redisClient.Close()
|
||||
redis.ConnectPush(source, nil)
|
||||
}()
|
||||
redis.ConnectPush(source, redisClient.Client)
|
||||
|
||||
udmsdArr, err := redis.GetKeys(source, key)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
mkv, err := redis.GetHashBatch(source, udmsdArr)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
|
||||
for k, m := range mkv {
|
||||
var imsi, msisdn string
|
||||
KeyParts := strings.Split(k, ":")
|
||||
switch len(KeyParts) {
|
||||
case 0, 1:
|
||||
// 处理单个部分的情况
|
||||
continue
|
||||
case 2:
|
||||
// 处理两个部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = "-"
|
||||
case 3:
|
||||
// 处理三个部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = KeyParts[2]
|
||||
default:
|
||||
// 处理更多部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = KeyParts[2]
|
||||
}
|
||||
|
||||
var vni string = "-"
|
||||
impiParts := strings.Split(m["impi"], "@")
|
||||
if len(impiParts) > 1 {
|
||||
vni = impiParts[1] // 输出: ims.mnc001.mcc110.3gppnetwork.org
|
||||
}
|
||||
a := VoLTEUser{
|
||||
NeId: neId,
|
||||
IMSI: imsi, // volte:360000100000130:8612300000130
|
||||
MSISDN: msisdn, // 8612300000130
|
||||
Tag: m["tag"], // volte = tag
|
||||
VNI: vni, // ims.mnc001.mcc110.3gppnetwork.org
|
||||
}
|
||||
arr = append(arr, a)
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
// ResetData 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||
func (r *Service) ResetData(neId string) int64 {
|
||||
subArr := r.dataByRedis("*", neId)
|
||||
// 数据清空后添加
|
||||
go r.volteRepository.ClearAndInsert(neId, subArr)
|
||||
return int64(len(subArr))
|
||||
}
|
||||
|
||||
// ParseInfo 解析单个用户imsi签约信息 data从命令MML得到的结果
|
||||
func (r *Service) ParseInfo(imsi, neId string, data map[string]string) VoLTEUser {
|
||||
u := r.volteRepository.SelectByIMSIAndNeID(imsi, neId)
|
||||
|
||||
msisdn := data["msisdn"]
|
||||
if imsMsisdnLen := strings.Index(msisdn, ","); imsMsisdnLen != -1 {
|
||||
msisdn = msisdn[:imsMsisdnLen]
|
||||
}
|
||||
|
||||
// 用于更新
|
||||
u.NeId = neId
|
||||
u.IMSI = imsi
|
||||
u.MSISDN = msisdn
|
||||
u.Tag = data["volte_tag"]
|
||||
u.VNI = data["VNI"]
|
||||
return u
|
||||
}
|
||||
|
||||
// SelectPage 分页查询数据库
|
||||
func (r *Service) SelectPage(query map[string]any) map[string]any {
|
||||
return r.volteRepository.SelectPage(query)
|
||||
}
|
||||
|
||||
// SelectList 查询数据库
|
||||
func (r *Service) SelectList(u VoLTEUser) []VoLTEUser {
|
||||
return r.volteRepository.SelectList(u)
|
||||
}
|
||||
|
||||
// Insert 从数据中读取后删除imsi再存入数据库
|
||||
// imsi长度15,ki长度32,opc长度0或者32
|
||||
func (r *Service) Insert(neId string, u VoLTEUser) int64 {
|
||||
uArr := r.dataByRedis(u.IMSI, neId)
|
||||
if len(uArr) > 0 {
|
||||
r.volteRepository.Delete(u.IMSI, neId)
|
||||
return r.volteRepository.Inserts(uArr)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// InsertData 导入文件数据 dataType目前两种:txt/csv
|
||||
func (r *Service) InsertData(neId, dataType string, data any) int64 {
|
||||
// imsi截取前缀,重新获取部分数据
|
||||
prefixes := make(map[string]struct{})
|
||||
|
||||
if dataType == "csv" {
|
||||
for _, v := range data.([]map[string]string) {
|
||||
imsi := v["imsi"]
|
||||
if len(imsi) < 6 {
|
||||
continue
|
||||
}
|
||||
prefix := imsi[:len(imsi)-4]
|
||||
prefixes[prefix] = struct{}{}
|
||||
}
|
||||
}
|
||||
if dataType == "txt" {
|
||||
for _, v := range data.([][]string) {
|
||||
imsi := v[0]
|
||||
if len(imsi) < 6 {
|
||||
continue
|
||||
}
|
||||
prefix := imsi[:len(imsi)-4]
|
||||
prefixes[prefix] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据前缀重新加载插入
|
||||
var num int64 = 0
|
||||
for prefix := range prefixes {
|
||||
// keys volte:4600001000004*
|
||||
arr := r.dataByRedis(prefix+"*", neId)
|
||||
if len(arr) > 0 {
|
||||
r.volteRepository.DeletePrefixByIMSI(prefix, neId)
|
||||
num += r.volteRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
return num
|
||||
}
|
||||
|
||||
// Delete 删除单个不重新加载
|
||||
func (r *Service) Delete(neId, imsi string) int64 {
|
||||
return r.volteRepository.Delete(imsi, neId)
|
||||
}
|
||||
|
||||
// LoadData 重新加载从imsi开始num的数据
|
||||
func (r *Service) LoadData(neId, imsi, num string) {
|
||||
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
|
||||
subNum, _ := strconv.ParseInt(num, 10, 64)
|
||||
var i int64
|
||||
for i = 0; i < subNum; i++ {
|
||||
keyIMSI := fmt.Sprintf("%015d", startIMSI+i)
|
||||
// 删除原数据
|
||||
r.volteRepository.Delete(keyIMSI, neId)
|
||||
arr := r.dataByRedis(keyIMSI, neId)
|
||||
if len(arr) < 1 {
|
||||
continue
|
||||
}
|
||||
r.volteRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
|
||||
// ParseCommandParams 解析数据组成命令参数 msisdn=xx,xx=xx,...
|
||||
func (r *Service) ParseCommandParams(item VoLTEUser) string {
|
||||
var conditions []string
|
||||
if item.MSISDN != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("msisdn=%s", item.MSISDN))
|
||||
}
|
||||
|
||||
if item.Tag != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("volte=%s", item.Tag))
|
||||
}
|
||||
if item.VNI != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("vni=%s", item.VNI))
|
||||
}
|
||||
|
||||
return strings.Join(conditions, ",")
|
||||
}
|
||||
234
features/ue/service/ims_user.go
Normal file
234
features/ue/service/ims_user.go
Normal file
@@ -0,0 +1,234 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"be.ems/features/ue/model"
|
||||
"be.ems/features/ue/repository"
|
||||
"be.ems/src/framework/database/redis"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
)
|
||||
|
||||
// 实例化服务层 IMSUserService 结构体
|
||||
var NewIMSUserService = &IMSUserService{
|
||||
imsUserRepository: repository.NewIMSUserRepository,
|
||||
}
|
||||
|
||||
// VoLTE用户信息 服务层处理
|
||||
type IMSUserService struct {
|
||||
imsUserRepository *repository.IMSUserRepository // VoLTE用户信息数据信息
|
||||
}
|
||||
|
||||
// dataByRedis UDM签约用户 db:0 中 volte:*
|
||||
func (r *IMSUserService) dataByRedis(imsi, neId string) []model.IMSUser {
|
||||
arr := []model.IMSUser{}
|
||||
key := fmt.Sprintf("volte:%s", imsi)
|
||||
source := fmt.Sprintf("UDM_%s", neId)
|
||||
|
||||
// 网元主机的Redis客户端
|
||||
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
defer func() {
|
||||
redisClient.Close()
|
||||
redis.ConnectPush(source, nil)
|
||||
}()
|
||||
redis.ConnectPush(source, redisClient.Client)
|
||||
|
||||
udmsdArr, err := redis.GetKeys(source, key)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
mkv, err := redis.GetHashBatch(source, udmsdArr)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
|
||||
for k, m := range mkv {
|
||||
var imsi, msisdn string
|
||||
KeyParts := strings.Split(k, ":")
|
||||
switch len(KeyParts) {
|
||||
case 0, 1:
|
||||
// 处理单个部分的情况
|
||||
continue
|
||||
case 2:
|
||||
// 处理两个部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = "-"
|
||||
case 3:
|
||||
// 处理三个部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = KeyParts[2]
|
||||
default:
|
||||
// 处理更多部分的情况
|
||||
imsi = KeyParts[1]
|
||||
msisdn = KeyParts[2]
|
||||
}
|
||||
|
||||
var vni string = "-"
|
||||
impiParts := strings.Split(m["impi"], "@")
|
||||
if len(impiParts) > 1 {
|
||||
vni = impiParts[1] // 输出: ims.mnc001.mcc110.3gppnetwork.org
|
||||
}
|
||||
a := model.IMSUser{
|
||||
NeId: neId,
|
||||
IMSI: imsi, // volte:360000100000130:8612300000130
|
||||
MSISDN: msisdn, // 8612300000130
|
||||
Tag: model.ParseCallTag(m["tag"]), // volte = tag
|
||||
VNI: vni, // ims.mnc001.mcc110.3gppnetwork.org
|
||||
}
|
||||
arr = append(arr, a)
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
// ResetData 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||
func (r *IMSUserService) ResetData(neId string) int64 {
|
||||
subArr := r.dataByRedis("*", neId)
|
||||
// 数据清空后添加
|
||||
go r.imsUserRepository.ClearAndInsert(neId, subArr)
|
||||
return int64(len(subArr))
|
||||
}
|
||||
|
||||
// ParseInfo 解析单个用户imsi签约信息 data从命令MML得到的结果
|
||||
func (r *IMSUserService) ParseInfo(imsi, neId string, data map[string]string) model.IMSUser {
|
||||
u := r.imsUserRepository.SelectByIMSIAndNeID(imsi, neId)
|
||||
|
||||
msisdn := data["msisdn"]
|
||||
if imsMsisdnLen := strings.Index(msisdn, ","); imsMsisdnLen != -1 {
|
||||
msisdn = msisdn[:imsMsisdnLen]
|
||||
}
|
||||
var vni string = "-"
|
||||
impiParts := strings.Split(data["impi"], "@")
|
||||
if len(impiParts) > 1 {
|
||||
vni = impiParts[1] // 输出: ims.mnc001.mcc110.3gppnetwork.org
|
||||
}
|
||||
|
||||
// 用于更新
|
||||
u.NeId = neId
|
||||
u.IMSI = imsi
|
||||
u.MSISDN = msisdn
|
||||
u.Tag = model.ParseCallTag(data["volte_tag"])
|
||||
u.VNI = vni
|
||||
return u
|
||||
}
|
||||
|
||||
// SelectPage 分页查询数据库
|
||||
func (r *IMSUserService) SelectPage(query map[string]any) map[string]any {
|
||||
return r.imsUserRepository.SelectPage(query)
|
||||
}
|
||||
|
||||
// SelectList 查询数据库
|
||||
func (r *IMSUserService) SelectList(u model.IMSUser) []model.IMSUser {
|
||||
return r.imsUserRepository.SelectList(u)
|
||||
}
|
||||
|
||||
// Insert 从数据中读取后删除imsi再存入数据库
|
||||
// imsi长度15,ki长度32,opc长度0或者32
|
||||
func (r *IMSUserService) Insert(neId string, u model.IMSUser) int64 {
|
||||
uArr := r.dataByRedis(u.IMSI+":*", neId)
|
||||
if len(uArr) > 0 {
|
||||
r.imsUserRepository.Delete(u.IMSI, neId)
|
||||
return r.imsUserRepository.Inserts(uArr)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// InsertData 导入文件数据 dataType目前两种:txt/csv
|
||||
func (r *IMSUserService) InsertData(neId, dataType string, data any) int64 {
|
||||
// imsi截取前缀,重新获取部分数据
|
||||
prefixes := make(map[string]struct{})
|
||||
|
||||
if dataType == "csv" {
|
||||
for _, v := range data.([]map[string]string) {
|
||||
imsi := v["imsi"]
|
||||
if len(imsi) < 6 {
|
||||
continue
|
||||
}
|
||||
prefix := imsi[:len(imsi)-4]
|
||||
prefixes[prefix] = struct{}{}
|
||||
}
|
||||
}
|
||||
if dataType == "txt" {
|
||||
for _, v := range data.([][]string) {
|
||||
imsi := v[0]
|
||||
if len(imsi) < 6 {
|
||||
continue
|
||||
}
|
||||
prefix := imsi[:len(imsi)-4]
|
||||
prefixes[prefix] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据前缀重新加载插入
|
||||
var num int64 = 0
|
||||
for prefix := range prefixes {
|
||||
// keys volte:4600001000004*
|
||||
arr := r.dataByRedis(prefix+"*", neId)
|
||||
if len(arr) > 0 {
|
||||
r.imsUserRepository.DeletePrefixByIMSI(prefix, neId)
|
||||
num += r.imsUserRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
return num
|
||||
}
|
||||
|
||||
// Delete 删除单个不重新加载
|
||||
func (r *IMSUserService) Delete(neId, imsi string) int64 {
|
||||
return r.imsUserRepository.Delete(imsi, neId)
|
||||
}
|
||||
|
||||
// LoadData 重新加载从imsi开始num的数据
|
||||
func (r *IMSUserService) LoadData(neId, imsi, num string) {
|
||||
startIMSI, _ := strconv.ParseInt(imsi, 10, 64)
|
||||
subNum, _ := strconv.ParseInt(num, 10, 64)
|
||||
var i int64
|
||||
for i = 0; i < subNum; i++ {
|
||||
var keyIMSI string
|
||||
if len(imsi) == model.IMSI_MAX_LENGTH {
|
||||
keyIMSI = fmt.Sprintf("%015d", startIMSI+i)
|
||||
} else {
|
||||
// 处理不满15位的IMSI, tag=TAG_VoIP
|
||||
keyIMSI = fmt.Sprintf("%d", startIMSI+i)
|
||||
}
|
||||
|
||||
// 删除原数据
|
||||
r.imsUserRepository.Delete(keyIMSI, neId)
|
||||
arr := r.dataByRedis(keyIMSI+":*", neId)
|
||||
if len(arr) < 1 {
|
||||
continue
|
||||
}
|
||||
r.imsUserRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
|
||||
// ParseCommandParams 解析数据组成命令参数 msisdn=xx,xx=xx,...
|
||||
func (r *IMSUserService) ParseCommandParams(item model.IMSUser) string {
|
||||
var conditions []string
|
||||
if item.MSISDN != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("msisdn=%s", item.MSISDN))
|
||||
}
|
||||
|
||||
if item.Tag != model.ParseCallTag("") {
|
||||
conditions = append(conditions, fmt.Sprintf("volte=%d", item.Tag))
|
||||
}
|
||||
if item.VNI != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("vni=%s", item.VNI))
|
||||
}
|
||||
|
||||
return strings.Join(conditions, ",")
|
||||
}
|
||||
|
||||
// ResetDataWithResult 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||
// 通过 channel 返回 ClearAndInsert 的执行结果
|
||||
func (r *IMSUserService) ResetDataWithResult(neId string) chan int64 {
|
||||
arr := r.dataByRedis("*", neId)
|
||||
resultCh := make(chan int64, 1)
|
||||
go func() {
|
||||
resultCh <- r.imsUserRepository.ClearAndInsert(neId, arr)
|
||||
}()
|
||||
return resultCh
|
||||
}
|
||||
186
features/ue/service/voip_auth.go
Normal file
186
features/ue/service/voip_auth.go
Normal file
@@ -0,0 +1,186 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"be.ems/features/ue/model"
|
||||
"be.ems/features/ue/repository"
|
||||
"be.ems/src/framework/database/redis"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
)
|
||||
|
||||
// 实例化服务层 VoIPAuthService 结构体
|
||||
var NewVoIPAuthService = &VoIPAuthService{
|
||||
voipAuthRepository: repository.NewVoIPAuthRepository,
|
||||
}
|
||||
|
||||
// VoLTE用户信息 服务层处理
|
||||
type VoIPAuthService struct {
|
||||
voipAuthRepository *repository.VoIPAuthRepository // VoLTE用户信息数据信息
|
||||
}
|
||||
|
||||
// dataByRedis VoIP鉴权数据 db:0 中 voip:*
|
||||
func (r *VoIPAuthService) dataByRedis(userName, neId string) []model.VoIPAuth {
|
||||
arr := []model.VoIPAuth{}
|
||||
key := fmt.Sprintf("voip:%s", userName)
|
||||
source := fmt.Sprintf("UDM_%s", neId)
|
||||
|
||||
// 网元主机的Redis客户端
|
||||
redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
defer func() {
|
||||
redisClient.Close()
|
||||
redis.ConnectPush(source, nil)
|
||||
}()
|
||||
redis.ConnectPush(source, redisClient.Client)
|
||||
|
||||
udmsdArr, err := redis.GetKeys(source, key)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
mkv, err := redis.GetHashBatch(source, udmsdArr)
|
||||
if err != nil {
|
||||
return arr
|
||||
}
|
||||
|
||||
for k, m := range mkv {
|
||||
var userName string
|
||||
KeyParts := strings.Split(k, ":")
|
||||
if len(KeyParts) > 1 {
|
||||
userName = KeyParts[1]
|
||||
}
|
||||
|
||||
a := model.VoIPAuth{
|
||||
NeId: neId,
|
||||
UserName: userName, // userName
|
||||
Password: m["password"], //
|
||||
}
|
||||
arr = append(arr, a)
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
// ResetData 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||
func (r *VoIPAuthService) ResetData(neId string) int64 {
|
||||
subArr := r.dataByRedis("*", neId)
|
||||
// 数据清空后添加
|
||||
go r.voipAuthRepository.ClearAndInsert(neId, subArr)
|
||||
return int64(len(subArr))
|
||||
}
|
||||
|
||||
// ParseInfo 解析单个用户userName信息 data从命令MML得到的结果
|
||||
func (r *VoIPAuthService) ParseInfo(userName, neId string, data map[string]string) model.VoIPAuth {
|
||||
u := r.voipAuthRepository.SelectByUserNameAndNeID(userName, neId)
|
||||
password := data["password"]
|
||||
|
||||
// 用于更新
|
||||
u.NeId = neId
|
||||
u.UserName = userName
|
||||
u.Password = password
|
||||
return u
|
||||
}
|
||||
|
||||
// SelectPage 分页查询数据库
|
||||
func (r *VoIPAuthService) SelectPage(query map[string]any) map[string]any {
|
||||
return r.voipAuthRepository.SelectPage(query)
|
||||
}
|
||||
|
||||
// SelectList 查询数据库
|
||||
func (r *VoIPAuthService) SelectList(u model.VoIPAuth) []model.VoIPAuth {
|
||||
return r.voipAuthRepository.SelectList(u)
|
||||
}
|
||||
|
||||
// Insert 从数据中读取后删除userName再存入数据库
|
||||
func (r *VoIPAuthService) Insert(neId string, u model.VoIPAuth) int64 {
|
||||
uArr := r.dataByRedis(u.UserName, neId)
|
||||
if len(uArr) > 0 {
|
||||
r.voipAuthRepository.Delete(u.UserName, neId)
|
||||
return r.voipAuthRepository.Inserts(uArr)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// InsertData 导入文件数据 dataType目前两种:txt/csv
|
||||
func (r *VoIPAuthService) InsertData(neId, dataType string, data any) int64 {
|
||||
userNames := make(map[string]struct{})
|
||||
|
||||
if dataType == "csv" {
|
||||
for _, v := range data.([]map[string]string) {
|
||||
userName := v["userName"]
|
||||
// if len(userName) < 6 {
|
||||
// continue
|
||||
// }
|
||||
// prefix := userName[:len(userName)-4]
|
||||
userNames[userName] = struct{}{}
|
||||
}
|
||||
}
|
||||
if dataType == "txt" {
|
||||
for _, v := range data.([][]string) {
|
||||
userName := v[0]
|
||||
// if len(userName) < 6 {
|
||||
// continue
|
||||
// }
|
||||
// prefix := userName[:len(userName)-4]
|
||||
userNames[userName] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据前缀重新加载插入
|
||||
var num int64 = 0
|
||||
for userName := range userNames {
|
||||
// keys voip:11111
|
||||
arr := r.dataByRedis(userName, neId)
|
||||
if len(arr) > 0 {
|
||||
r.voipAuthRepository.DeleteByUserName(userName, neId)
|
||||
num += r.voipAuthRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
return num
|
||||
}
|
||||
|
||||
// Delete 删除单个不重新加载
|
||||
func (r *VoIPAuthService) Delete(neId, userName string) int64 {
|
||||
return r.voipAuthRepository.Delete(userName, neId)
|
||||
}
|
||||
|
||||
// LoadData 重新加载从userName开始num的数据
|
||||
func (r *VoIPAuthService) LoadData(neId, userName, num string) {
|
||||
startUserName, _ := strconv.ParseInt(userName, 10, 64)
|
||||
subNum, _ := strconv.ParseInt(num, 10, 64)
|
||||
var i int64
|
||||
for i = 0; i < subNum; i++ {
|
||||
keyUserName := fmt.Sprintf("%d", startUserName+i)
|
||||
// 删除原数据
|
||||
r.voipAuthRepository.Delete(keyUserName, neId)
|
||||
arr := r.dataByRedis(keyUserName, neId)
|
||||
if len(arr) < 1 {
|
||||
continue
|
||||
}
|
||||
r.voipAuthRepository.Inserts(arr)
|
||||
}
|
||||
}
|
||||
|
||||
// ParseCommandParams 解析数据组成命令参数 msisdn=xx,xx=xx,...
|
||||
func (r *VoIPAuthService) ParseCommandParams(item model.VoIPAuth) string {
|
||||
var conditions []string
|
||||
if item.Password != "" {
|
||||
conditions = append(conditions, fmt.Sprintf("password=%s", item.Password))
|
||||
}
|
||||
|
||||
return strings.Join(conditions, ",")
|
||||
}
|
||||
|
||||
// ResetDataWithResult 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||
// 通过 channel 返回 ClearAndInsert 的执行结果
|
||||
func (r *VoIPAuthService) ResetDataWithResult(neId string) chan int64 {
|
||||
arr := r.dataByRedis("*", neId)
|
||||
resultCh := make(chan int64, 1)
|
||||
go func() {
|
||||
resultCh <- r.voipAuthRepository.ClearAndInsert(neId, arr)
|
||||
}()
|
||||
return resultCh
|
||||
}
|
||||
9
go.mod
9
go.mod
@@ -4,7 +4,6 @@ go 1.22.0
|
||||
|
||||
require (
|
||||
github.com/dlclark/regexp2 v1.11.4
|
||||
github.com/dustin/go-humanize v1.0.0
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/go-resty/resty/v2 v2.14.0
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
@@ -13,7 +12,6 @@ require (
|
||||
github.com/gorilla/mux v1.8.1
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/gosnmp/gosnmp v1.38.0
|
||||
github.com/jlaffaye/ftp v0.2.0
|
||||
github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f
|
||||
github.com/linxGnu/gosmpp v0.3.0
|
||||
github.com/matoous/go-nanoid/v2 v2.1.0
|
||||
@@ -39,15 +37,16 @@ require (
|
||||
golang.org/x/term v0.28.0
|
||||
golang.org/x/text v0.21.0
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
gorm.io/driver/mysql v1.5.7
|
||||
gorm.io/gorm v1.25.11
|
||||
xorm.io/xorm v1.3.9
|
||||
)
|
||||
|
||||
require github.com/google/go-cmp v0.6.0 // indirect
|
||||
|
||||
require (
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
@@ -71,7 +70,7 @@ require (
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.22.0 // indirect
|
||||
github.com/go-playground/validator/v10 v10.22.0
|
||||
github.com/goccy/go-json v0.10.3 // indirect
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
|
||||
93
go.sum
93
go.sum
@@ -1,10 +1,24 @@
|
||||
cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
|
||||
cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40=
|
||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
||||
cloud.google.com/go/firestore v1.15.0/go.mod h1:GWOxFXcv8GZUtYpWHw/w6IuYNux/BtmeVTMmjrm4yhk=
|
||||
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
|
||||
cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s=
|
||||
cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
|
||||
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
|
||||
gitee.com/travelliu/dm v1.8.11192/go.mod h1:DHTzyhCrM843x9VdKVbZ+GKXGRbKM2sJ4LxihRxShkE=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
|
||||
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
|
||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
|
||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/allegro/bigcache/v3 v3.1.0/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I=
|
||||
github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
@@ -20,10 +34,13 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a h1:yTfhjWYoPomJkHVArtNHpo36FuOa6Kc2ZjTLvyyQ5Lg=
|
||||
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a/go.mod h1:lINNCb1ZH3c0uL/9ApaQ8muR4QILsi0STj8Ojt8ZmwU=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
|
||||
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
||||
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
|
||||
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@@ -39,6 +56,8 @@ github.com/ebitengine/purego v0.8.1 h1:sdRKd6plj7KYW33EH5As6YKfe8m9zbN9JMrOjNVF/
|
||||
github.com/ebitengine/purego v0.8.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 h1:Ghm4eQYC0nEPnSJdVkTrXpu9KtoVCSo1hg7mtI7G9KU=
|
||||
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw=
|
||||
github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
@@ -55,6 +74,10 @@ github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
|
||||
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
|
||||
github.com/go-forks/fsnotify v1.4.7 h1:lyiU2Wqd4fNGCQDn9dZ4UxSiSFgeU1rM6yIfahk8haY=
|
||||
github.com/go-forks/fsnotify v1.4.7/go.mod h1:AU8mot+GznW5+B4jRJHxKg/2EeO+jMORGRkKSxs0biw=
|
||||
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
|
||||
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
|
||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
@@ -82,10 +105,14 @@ github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqw
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
||||
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
@@ -94,6 +121,7 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
@@ -106,8 +134,12 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
|
||||
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
||||
github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
|
||||
github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
||||
github.com/gopacket/gopacket v1.2.0 h1:eXbzFad7f73P1n2EJHQlsKuvIMJjVXK5tXoSca78I3A=
|
||||
github.com/gopacket/gopacket v1.2.0/go.mod h1:BrAKEy5EOGQ76LSqh7DMAr7z0NNPdczWm2GxCG7+I8M=
|
||||
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||
@@ -117,28 +149,40 @@ github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad
|
||||
github.com/gosnmp/gosnmp v1.36.2-0.20231009064202-d306ed5aa998/go.mod h1:O938QjIS4vpSag1UTcnnBq9MfNmimuOGtvQsT1NbErc=
|
||||
github.com/gosnmp/gosnmp v1.38.0 h1:I5ZOMR8kb0DXAFg/88ACurnuwGwYkXWq3eLpJPHMEYc=
|
||||
github.com/gosnmp/gosnmp v1.38.0/go.mod h1:FE+PEZvKrFz9afP9ii1W3cprXuVZ17ypCcyyfYuu5LY=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
||||
github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE=
|
||||
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
||||
github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
|
||||
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
|
||||
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
|
||||
github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E=
|
||||
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
|
||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||
github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||
github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
|
||||
github.com/jackc/pgx/v4 v4.18.0/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE=
|
||||
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4=
|
||||
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jlaffaye/ftp v0.2.0 h1:lXNvW7cBu7R/68bknOX3MrRIIqZ61zELs1P2RAiA3lg=
|
||||
github.com/jlaffaye/ftp v0.2.0/go.mod h1:is2Ds5qkhceAPy2xD6RLI6hmp/qysSoymZ+Z2uTnspI=
|
||||
github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
|
||||
github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
|
||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
|
||||
@@ -165,6 +209,7 @@ github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f h1:sgU
|
||||
github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8=
|
||||
github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 h1:Bvq8AziQ5jFF4BHGAEDSqwPW1NJS3XshxbRCxtjFAZc=
|
||||
github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0=
|
||||
github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/linxGnu/gosmpp v0.3.0 h1:LL+eY+zc9Ei/YY0po9A6L6SHf8nPyGvqsLddttr/y/4=
|
||||
github.com/linxGnu/gosmpp v0.3.0/go.mod h1:Ba6SULQql3IbF2A5Mtj3DqMKoFbx1pEz/8xyiOh8ZOs=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
@@ -176,6 +221,7 @@ github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4
|
||||
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
|
||||
github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE=
|
||||
github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
|
||||
@@ -184,6 +230,8 @@ github.com/metaleap/go-util v0.0.0-20180330192724-a09253046f73 h1:4vKVhAdype/dej
|
||||
github.com/metaleap/go-util v0.0.0-20180330192724-a09253046f73/go.mod h1:l71/5fppWP5A6nqhcxz6wQAYok6pr/vM2+KHIy50/LY=
|
||||
github.com/metaleap/go-xsd v0.0.0-20180330193350-61f7638f502f h1:eeJGcYszuvOpmuJxeq57LaOO8mJurfjpOHJJMfQSD0s=
|
||||
github.com/metaleap/go-xsd v0.0.0-20180330193350-61f7638f502f/go.mod h1:WK3zEKtwVd/v+NM3lh1ZE6MdDfHsdOFFOD5Ezi4Hutg=
|
||||
github.com/microsoft/go-mssqldb v1.6.0/go.mod h1:00mDtPbeQCRGC1HwOOR5K/gr30P1NcEG0vx6Kbv2aJU=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
@@ -199,6 +247,10 @@ github.com/mssola/useragent v1.0.0 h1:WRlDpXyxHDNfvZaPEut5Biveq86Ze4o4EMffyMxmH5
|
||||
github.com/mssola/useragent v1.0.0/go.mod h1:hz9Cqz4RXusgg1EdI4Al0INR62kP7aPSRNHnpU+b85Y=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/nats-io/nats.go v1.34.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
|
||||
github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc=
|
||||
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
@@ -207,6 +259,7 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
@@ -253,6 +306,7 @@ github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzG
|
||||
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/sagikazarmark/crypt v0.19.0/go.mod h1:c6vimRziqqERhtSe0MhIvzE1w54FrCHtrXb5NH/ja78=
|
||||
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
|
||||
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
|
||||
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
|
||||
@@ -265,6 +319,7 @@ github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFt
|
||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
@@ -319,10 +374,12 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2
|
||||
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
|
||||
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0=
|
||||
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
|
||||
github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg=
|
||||
github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
|
||||
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
|
||||
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY=
|
||||
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
|
||||
github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE=
|
||||
@@ -337,8 +394,21 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
|
||||
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
|
||||
go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4=
|
||||
go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E=
|
||||
go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw=
|
||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
|
||||
golang.org/x/arch v0.9.0 h1:ub9TgUInamJ8mrZIGlBG6/4TqWeMszd4N8lNorbrr6k=
|
||||
golang.org/x/arch v0.9.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
@@ -386,6 +456,7 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
||||
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
|
||||
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
||||
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@@ -430,6 +501,7 @@ golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
@@ -472,6 +544,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
|
||||
google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
|
||||
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
@@ -496,6 +575,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
@@ -526,6 +607,8 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw
|
||||
modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg=
|
||||
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
|
||||
xorm.io/builder v0.3.13 h1:a3jmiVVL19psGeXx8GIurTp7p0IIgqeDmwhcR6BAOAo=
|
||||
xorm.io/builder v0.3.13/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
|
||||
xorm.io/xorm v1.3.9 h1:TUovzS0ko+IQ1XnNLfs5dqK1cJl1H5uHpWbWqAQ04nU=
|
||||
|
||||
39
lib/config/alarm_relation_rules.go
Normal file
39
lib/config/alarm_relation_rules.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type DerivedRule struct {
|
||||
ParentCode int `yaml:"parentCode"`
|
||||
ChildCode int `yaml:"childCode"`
|
||||
}
|
||||
type RelatedRule struct {
|
||||
Codes []int `yaml:"codes"`
|
||||
NeType string `yaml:"neType"`
|
||||
TimeWindow int `yaml:"timeWindow"`
|
||||
}
|
||||
type AlarmRelationRules struct {
|
||||
Derived []DerivedRule `yaml:"derived"`
|
||||
Related []RelatedRule `yaml:"related"`
|
||||
}
|
||||
|
||||
var RelationRules AlarmRelationRules
|
||||
|
||||
func LoadAlarmRelationRules(path string) error {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return yaml.Unmarshal(data, &RelationRules)
|
||||
}
|
||||
|
||||
func LoadNbiRelationRulesConfig(path string) error {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return yaml.Unmarshal(data, &RelationRules)
|
||||
}
|
||||
@@ -126,6 +126,8 @@ type YamlConfig struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
File string `yaml:"file"`
|
||||
} `yaml:"testConfig"`
|
||||
|
||||
NbiConfig NbiConfig `yaml:"nbiConfig"`
|
||||
}
|
||||
|
||||
type RestParam struct {
|
||||
@@ -180,7 +182,23 @@ type AlarmConfig struct {
|
||||
SignName string `yaml:"signName"`
|
||||
TemplateCode string `yaml:"templateCode"`
|
||||
} `yaml:"smsForward"`
|
||||
SMProxy string `yaml:"smProxy"`
|
||||
SMProxy string `yaml:"smProxy"`
|
||||
RelatedRules struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
File string `yaml:"file"`
|
||||
} `yaml:"relatedRules"`
|
||||
}
|
||||
|
||||
type NbiConfig struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
PmConfig struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
File string `yaml:"file"`
|
||||
} `yaml:"pmConfig"`
|
||||
RelationRules struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
File string `yaml:"file"`
|
||||
} `yaml:"relationRules"`
|
||||
}
|
||||
|
||||
type MMLParam struct {
|
||||
@@ -271,6 +289,20 @@ func ReadConfig(configFile string) {
|
||||
yamlConfig = YamlConfigInfo.ConfigLines
|
||||
|
||||
ReadOriginalConfig(configFile)
|
||||
|
||||
// load alarm relation rules
|
||||
if yamlConfig.Alarm.RelatedRules.Enabled {
|
||||
LoadAlarmRelationRules(yamlConfig.Alarm.RelatedRules.File)
|
||||
}
|
||||
|
||||
if yamlConfig.NbiConfig.Enabled {
|
||||
if yamlConfig.NbiConfig.PmConfig.Enabled {
|
||||
LoadNbiPmConfig(yamlConfig.NbiConfig.PmConfig.File)
|
||||
}
|
||||
if yamlConfig.NbiConfig.RelationRules.Enabled {
|
||||
LoadNbiRelationRulesConfig(yamlConfig.NbiConfig.RelationRules.File)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func ReadOriginalConfig(configFile string) {
|
||||
|
||||
28
lib/config/nbi_pm_config.go
Normal file
28
lib/config/nbi_pm_config.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type NbiPmConfig struct {
|
||||
SchemaPath string `yaml:"schemaPath"`
|
||||
RandomMin int `yaml:"randomMin"`
|
||||
RandomMax int `yaml:"randomMax"`
|
||||
MergeMode string `yaml:"mergeMode"` // MergeModeNone/MergeModeMerge/MergeModeSchema
|
||||
}
|
||||
|
||||
var nbiPmConfig NbiPmConfig
|
||||
|
||||
func GetNbiPmConfig() NbiPmConfig {
|
||||
return nbiPmConfig
|
||||
}
|
||||
|
||||
func LoadNbiPmConfig(path string) error {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return yaml.Unmarshal(data, &nbiPmConfig)
|
||||
}
|
||||
@@ -8,21 +8,19 @@ import (
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/dustin/go-humanize"
|
||||
)
|
||||
|
||||
type FileInfo struct {
|
||||
FileType string `json:"fileType"` // 文件类型
|
||||
FileMode string `json:"fileMode"` // 文件的权限
|
||||
LinkCount int64 `json:"linkCount"` // 硬链接数目
|
||||
Owner string `json:"owner"` // 所属用户
|
||||
Group string `json:"group"` // 所属组
|
||||
Size string `json:"size"` // 文件的大小
|
||||
ModifiedTime int64 `json:"modifiedTime"` // 最后修改时间,单位为秒
|
||||
FileName string `json:"fileName"` // 文件的名称
|
||||
FileType string `json:"fileType"` // file type: file/directory
|
||||
FileMode string `json:"fileMode"` // file mode
|
||||
LinkCount int64 `json:"linkCount"` // link count
|
||||
Owner string `json:"owner"` // owner
|
||||
Group string `json:"group"` // group
|
||||
Size int64 `json:"size"` // size: xx byte
|
||||
ModifiedTime int64 `json:"modifiedTime"` // last modified time:seconds
|
||||
FilePath string `json:"filePath"` // file path
|
||||
FileName string `json:"fileName"` // file name
|
||||
}
|
||||
|
||||
func GetFileInfo(dir, suffix string) ([]FileInfo, error) {
|
||||
@@ -58,15 +56,15 @@ func GetFileInfo(dir, suffix string) ([]FileInfo, error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
humanReadableSize := humanize.Bytes(uint64(info.Size()))
|
||||
fileInfo := FileInfo{
|
||||
FileType: fileType,
|
||||
FileMode: info.Mode().String(),
|
||||
LinkCount: int64(info.Sys().(*syscall.Stat_t).Nlink),
|
||||
Owner: userInfo.Username,
|
||||
Group: groupInfo.Name,
|
||||
Size: strings.ToUpper(humanReadableSize),
|
||||
Size: info.Size(),
|
||||
ModifiedTime: info.ModTime().Unix(),
|
||||
FilePath: dir,
|
||||
FileName: info.Name(),
|
||||
}
|
||||
files = append(files, fileInfo)
|
||||
|
||||
2
makefile
2
makefile
@@ -3,7 +3,7 @@
|
||||
ProjectL = omc
|
||||
ProjectU = OMC
|
||||
PROJECT = $(ProjectL)
|
||||
VERSION = 2.2502.1
|
||||
VERSION = 2.2508.2
|
||||
RelDate = `date +%Y%m%d`
|
||||
Release = $(RelDate)
|
||||
RelVer = $(VERSION)-$(RelDate)
|
||||
|
||||
2
mkpkg.sh
2
mkpkg.sh
@@ -2,7 +2,7 @@
|
||||
|
||||
ProcList="restagent sshsvc"
|
||||
ProjectL=omc
|
||||
VERSION=2.2502.1
|
||||
VERSION=2.2508.2
|
||||
RelDate=`date +%Y%m%d`
|
||||
Release=${RelDate}
|
||||
RelVer=${VERSION}-${RelDate}
|
||||
|
||||
10
restagent/etc/alarm_relation_rules.yaml
Normal file
10
restagent/etc/alarm_relation_rules.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
# alarm relation rules
|
||||
derived:
|
||||
- parentCode: 1001
|
||||
childCode: 1002
|
||||
- parentCode: 2001
|
||||
childCode: 2002
|
||||
related:
|
||||
- codes: [3001, 3002, 3003]
|
||||
neType: "AMF"
|
||||
timeWindow: 60 # 秒
|
||||
4
restagent/etc/nbi_pm.yaml
Normal file
4
restagent/etc/nbi_pm.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
schemaPath: ./etc/schema
|
||||
randomMin: 1
|
||||
randomMax: 100
|
||||
mergeMode: merge # none: Merge Mode None/merge: Merge Mode Merge/schema: Merge Mode Schema
|
||||
@@ -20,10 +20,10 @@ pprof:
|
||||
rest:
|
||||
- ipv4: 0.0.0.0
|
||||
ipv6:
|
||||
port: 33030
|
||||
port: 43030
|
||||
- ipv4: 0.0.0.0
|
||||
ipv6:
|
||||
port: 33443
|
||||
port: 43443
|
||||
schema: https
|
||||
clientAuthType: 0
|
||||
caFile: ./etc/certs/omc-ca.crt
|
||||
@@ -32,11 +32,11 @@ rest:
|
||||
|
||||
webServer:
|
||||
enabled: true
|
||||
rootDir: d:/omc.git/fe.ems.vue3/dist # front-end build dist directory
|
||||
rootDir: /home/simon/omc.git/fe.ems.vue3/dist # front-end build dist directory
|
||||
listen:
|
||||
- addr: :80
|
||||
- addr: :8080
|
||||
schema: http
|
||||
- addr: :443
|
||||
- addr: :8443
|
||||
schema: https
|
||||
clientAuthType: 0
|
||||
caFile: ./etc/certs/omc-ca.crt
|
||||
@@ -46,8 +46,8 @@ webServer:
|
||||
database:
|
||||
type: mysql
|
||||
user: root
|
||||
password: 1000omc@kp!
|
||||
host: 127.0.0.1
|
||||
password: "1000omc@kp!"
|
||||
host: "192.168.2.165"
|
||||
port: 33066
|
||||
name: omc_db
|
||||
connParam: charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&interpolateParams=True
|
||||
@@ -139,7 +139,7 @@ alarm:
|
||||
enable: true
|
||||
emailList:
|
||||
smtp: mail.smtp.com
|
||||
port: 25
|
||||
port: 110
|
||||
user: smtpext@smtp.com
|
||||
password: "1000smtp@omc!"
|
||||
tlsSkipVerify: true
|
||||
@@ -203,3 +203,13 @@ staticFile:
|
||||
upload:
|
||||
prefix: "/upload"
|
||||
dir: "./upload"
|
||||
|
||||
nbiConfig:
|
||||
enabled: true
|
||||
pmConfig:
|
||||
enabled: true
|
||||
file: ./etc/nbi_pm.yaml
|
||||
# alarm_relation_rules.yaml
|
||||
relationRules:
|
||||
enabled: true
|
||||
file: ./etc/alarm_relation_rules.yaml
|
||||
1278
restagent/etc/schema/amf-nbi-pm-schema.json
Normal file
1278
restagent/etc/schema/amf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
269
restagent/etc/schema/pcf-nbi-pm-schema.json
Normal file
269
restagent/etc/schema/pcf-nbi-pm-schema.json
Normal file
@@ -0,0 +1,269 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "PcfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.AmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMean",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.SmAssocNbrMax",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 12
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicyAmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocCreateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocUpdateFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocNotifFail._Cause",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "PCF.PolicySmAssocDeleteSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.PcfSubNbr",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1287
restagent/etc/schema/smf-nbi-pm-schema.json
Normal file
1287
restagent/etc/schema/smf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
373
restagent/etc/schema/udm-nbi-pm-schema.json
Normal file
373
restagent/etc/schema/udm-nbi-pm-schema.json
Normal file
@@ -0,0 +1,373 @@
|
||||
[
|
||||
{
|
||||
"ObjectType": "UdmFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUpdateSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmDeregSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmUnSubscrSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.UecmDeregNotif",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SdmGetDataNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegNoPsSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegRatNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.AmfUecmRegReAuth",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegUnknownSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 13
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegRoamNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDM.SmfUecmRegDnnNotAllowed",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "UdrFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "UDR.5gSupi",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "UDR.5gActSub",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 16
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "AusfFunction",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthReq",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsSucc",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsUserNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"KPIID": "Ausf.UeAuthAnsContextNotFound",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ObjectType": "ManagedElement",
|
||||
"KPIs": [
|
||||
{
|
||||
"KPIID": "ME.MeanMeLoad",
|
||||
"KPIValues": [
|
||||
{
|
||||
"Name": "Total",
|
||||
"Value": 11
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
1257
restagent/etc/schema/upf-nbi-pm-schema.json
Normal file
1257
restagent/etc/schema/upf-nbi-pm-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
# Makefile for rest agent project
|
||||
|
||||
PROJECT = OMC
|
||||
VERSION = 2.2502.1
|
||||
VERSION = 2.2508.2
|
||||
PLATFORM = amd64
|
||||
ARMPLATFORM = aarch64
|
||||
BUILDDIR = ../../build
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"be.ems/features/fm"
|
||||
"be.ems/features/lm"
|
||||
"be.ems/features/mml"
|
||||
"be.ems/features/nbi/redisqueue"
|
||||
"be.ems/features/pm"
|
||||
featuresCfg "be.ems/lib/config"
|
||||
"be.ems/lib/dborm"
|
||||
@@ -209,6 +210,9 @@ func loadFeatures(app *gin.Engine) {
|
||||
|
||||
mml.InitMML()
|
||||
|
||||
// 初始化Redis Queue连接池
|
||||
redisqueue.InitRedisQueue()
|
||||
|
||||
// 将 mux.Router 注册到 gin.Engine
|
||||
|
||||
// 默认路由组
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/cron"
|
||||
"be.ems/src/framework/datasource"
|
||||
"be.ems/src/framework/database/db"
|
||||
"be.ems/src/framework/database/redis"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/redis"
|
||||
)
|
||||
|
||||
//go:embed config/*.yaml
|
||||
@@ -23,7 +23,7 @@ func ConfigurationInit() {
|
||||
// 初始程序日志
|
||||
logger.InitLogger()
|
||||
// 连接数据库实例
|
||||
datasource.Connect()
|
||||
db.Connect()
|
||||
// 连接Redis实例
|
||||
redis.Connect()
|
||||
// 启动调度任务实例
|
||||
@@ -37,7 +37,7 @@ func ConfigurationClose() {
|
||||
// 关闭Redis实例
|
||||
redis.Close()
|
||||
// 关闭数据库实例
|
||||
datasource.Close()
|
||||
db.Close()
|
||||
// 关闭程序日志
|
||||
logger.Close()
|
||||
}
|
||||
|
||||
9
src/framework/constants/alarm.go
Normal file
9
src/framework/constants/alarm.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package constants
|
||||
|
||||
// 告警 alarmCode 常量
|
||||
const (
|
||||
// ALARM_STATE_CHECK 告警-状态检查
|
||||
ALARM_STATE_CHECK = 10000
|
||||
// ALARM_EVENT_REBOOT 事件-网元重启
|
||||
ALARM_EVENT_REBOOT = 9000
|
||||
)
|
||||
25
src/framework/constants/cache_key.go
Normal file
25
src/framework/constants/cache_key.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package constants
|
||||
|
||||
// 缓存的key常量
|
||||
const (
|
||||
// CACHE_LOGIN_TOKEN 登录用户
|
||||
CACHE_LOGIN_TOKEN = "login_tokens"
|
||||
// CACHE_CAPTCHA_CODE 验证码
|
||||
CACHE_CAPTCHA_CODE = "captcha_codes"
|
||||
// CACHE_SYS_CONFIG 参数管理
|
||||
CACHE_SYS_CONFIG = "sys_config"
|
||||
// CACHE_SYS_DICT 字典管理
|
||||
CACHE_SYS_DICT = "sys_dict"
|
||||
// CACHE_REPEAT_SUBMIT 防重提交
|
||||
CACHE_REPEAT_SUBMIT = "repeat_submit"
|
||||
// CACHE_RATE_LIMIT 限流
|
||||
CACHE_RATE_LIMIT = "rate_limit"
|
||||
// CACHE_PWD_ERR_COUNT 登录账户密码错误次数
|
||||
CACHE_PWD_ERR_COUNT = "pwd_err_count"
|
||||
// CACHE_I18N 国际化语言管理
|
||||
CACHE_I18N = "i18n"
|
||||
// CACHE_NE_INFO 网元信息管理
|
||||
CACHE_NE_INFO = "ne_info"
|
||||
// CACHE_NE_DATA 网元数据管理
|
||||
CACHE_NE_DATA = "ne_data"
|
||||
)
|
||||
11
src/framework/constants/captcha.go
Normal file
11
src/framework/constants/captcha.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package constants
|
||||
|
||||
// 验证码常量信息
|
||||
const (
|
||||
// CAPTCHA_EXPIRATION 验证码有效期,单位秒
|
||||
CAPTCHA_EXPIRATION = 2 * 60
|
||||
// CAPTCHA_TYPE_CHAR 验证码类型-数值计算
|
||||
CAPTCHA_TYPE_CHAR = "char"
|
||||
// CAPTCHA_TYPE_MATH 验证码类型-字符验证
|
||||
CAPTCHA_TYPE_MATH = "math"
|
||||
)
|
||||
14
src/framework/constants/common.go
Normal file
14
src/framework/constants/common.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package constants
|
||||
|
||||
const (
|
||||
// STATUS_YES 通用状态标识-正常/成功/是
|
||||
STATUS_YES = "1"
|
||||
// STATUS_NO 通用状态标识-停用/失败/否
|
||||
STATUS_NO = "0"
|
||||
)
|
||||
|
||||
// CTX_LOGIN_USER 上下文信息-登录用户
|
||||
const CTX_LOGIN_USER = "ctx:login_user"
|
||||
|
||||
// 启动-引导系统初始
|
||||
const LAUNCH_BOOTLOADER = "bootloader"
|
||||
21
src/framework/constants/menu.go
Normal file
21
src/framework/constants/menu.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package constants
|
||||
|
||||
// 系统菜单常量信息
|
||||
const (
|
||||
// MENU_COMPONENT_LAYOUT_BASIC 组件布局类型-基础布局组件标识
|
||||
MENU_COMPONENT_LAYOUT_BASIC = "BasicLayout"
|
||||
// MENU_COMPONENT_LAYOUT_BLANK 组件布局类型-空白布局组件标识
|
||||
MENU_COMPONENT_LAYOUT_BLANK = "BlankLayout"
|
||||
// MENU_COMPONENT_LAYOUT_LINK 组件布局类型-内链接布局组件标识
|
||||
MENU_COMPONENT_LAYOUT_LINK = "LinkLayout"
|
||||
|
||||
// MENU_TYPE_DIR 菜单类型-目录
|
||||
MENU_TYPE_DIR = "D"
|
||||
// MENU_TYPE_MENU 菜单类型-菜单
|
||||
MENU_TYPE_MENU = "M"
|
||||
// MENU_TYPE_BUTTON 菜单类型-按钮
|
||||
MENU_TYPE_BUTTON = "B"
|
||||
|
||||
// MENU_PATH_INLINE 菜单内嵌地址标识-带/前缀
|
||||
MENU_PATH_INLINE = "/inline"
|
||||
)
|
||||
24
src/framework/constants/role_data_scope.go
Normal file
24
src/framework/constants/role_data_scope.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package constants
|
||||
|
||||
// 系统角色数据范围常量
|
||||
const (
|
||||
// ROLE_SCOPE_ALL 全部数据权限
|
||||
ROLE_SCOPE_ALL = "1"
|
||||
// ROLE_SCOPE_CUSTOM 自定数据权限
|
||||
ROLE_SCOPE_CUSTOM = "2"
|
||||
// ROLE_SCOPE_DEPT 部门数据权限
|
||||
ROLE_SCOPE_DEPT = "3"
|
||||
// ROLE_SCOPE_DEPT_CHILD 部门及以下数据权限
|
||||
ROLE_SCOPE_DEPT_CHILD = "4"
|
||||
// ROLE_SCOPE_SELF 仅本人数据权限
|
||||
ROLE_SCOPE_SELF = "5"
|
||||
)
|
||||
|
||||
// ROLE_SCOPE_DATA 系统角色数据范围映射
|
||||
var ROLE_SCOPE_DATA = map[string]string{
|
||||
ROLE_SCOPE_ALL: "全部数据权限",
|
||||
ROLE_SCOPE_CUSTOM: "自定数据权限",
|
||||
ROLE_SCOPE_DEPT: "部门数据权限",
|
||||
ROLE_SCOPE_DEPT_CHILD: "部门及以下数据权限",
|
||||
ROLE_SCOPE_SELF: "仅本人数据权限",
|
||||
}
|
||||
12
src/framework/constants/system.go
Normal file
12
src/framework/constants/system.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package constants
|
||||
|
||||
// 系统常量信息
|
||||
|
||||
// SYS_ROLE_SYSTEM_ID 系统管理员-系统指定角色ID
|
||||
const SYS_ROLE_SYSTEM_ID = 1
|
||||
|
||||
// SYS_ROLE_SYSTEM_KEY 系统管理员-系统指定角色KEY
|
||||
const SYS_ROLE_SYSTEM_KEY = "system"
|
||||
|
||||
// SYS_PERMISSION_SYSTEM 系统管理员-系统指定权限
|
||||
const SYS_PERMISSION_SYSTEM = "*:*:*"
|
||||
24
src/framework/constants/token.go
Normal file
24
src/framework/constants/token.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package constants
|
||||
|
||||
// 令牌常量信息
|
||||
|
||||
// HEADER_PREFIX 令牌-请求头标识前缀
|
||||
const HEADER_PREFIX = "Bearer "
|
||||
|
||||
// HEADER_KEY 令牌-请求头标识
|
||||
const HEADER_KEY = "Authorization"
|
||||
|
||||
// JWT_UUID 令牌-JWT唯一标识字段
|
||||
const JWT_UUID = "uuid"
|
||||
|
||||
// JWT_USER_ID 令牌-JWT标识用户主键字段
|
||||
const JWT_USER_ID = "user_id"
|
||||
|
||||
// JWT_USER_NAME 令牌-JWT标识用户登录账号字段
|
||||
const JWT_USER_NAME = "user_name"
|
||||
|
||||
// NMS北向使用-数据响应字段和请求头授权
|
||||
const ACCESS_TOKEN = "accessToken"
|
||||
|
||||
// WS请求使用-数据响应字段和请求头授权
|
||||
const ACCESS_TOKEN_QUERY = "access_token"
|
||||
36
src/framework/constants/upload_sub_path.go
Normal file
36
src/framework/constants/upload_sub_path.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package constants
|
||||
|
||||
// 文件上传-子路径类型常量
|
||||
const (
|
||||
// UPLOAD_DEFAULT 默认
|
||||
UPLOAD_DEFAULT = "default"
|
||||
// UPLOAD_AVATAR 头像
|
||||
UPLOAD_AVATAR = "avatar"
|
||||
// UPLOAD_IMPORT 导入
|
||||
UPLOAD_IMPORT = "import"
|
||||
// UPLOAD_EXPORT 导出
|
||||
UPLOAD_EXPORT = "export"
|
||||
// UPLOAD_COMMON 通用上传
|
||||
UPLOAD_COMMON = "common"
|
||||
// UPLOAD_DOWNLOAD 下载
|
||||
UPLOAD_DOWNLOAD = "download"
|
||||
// UPLOAD_CHUNK 切片
|
||||
UPLOAD_CHUNK = "chunk"
|
||||
// UPLOAD_SOFTWARE 软件包
|
||||
UPLOAD_SOFTWARE = "software"
|
||||
// UPLOAD_LICENSE 授权文件
|
||||
UPLOAD_LICENSE = "license"
|
||||
)
|
||||
|
||||
// UPLOAD_SUB_PATH 子路径类型映射
|
||||
var UPLOAD_SUB_PATH = map[string]string{
|
||||
UPLOAD_DEFAULT: "默认",
|
||||
UPLOAD_AVATAR: "头像",
|
||||
UPLOAD_IMPORT: "导入",
|
||||
UPLOAD_EXPORT: "导出",
|
||||
UPLOAD_COMMON: "通用上传",
|
||||
UPLOAD_DOWNLOAD: "下载",
|
||||
UPLOAD_CHUNK: "切片",
|
||||
UPLOAD_SOFTWARE: "软件包",
|
||||
UPLOAD_LICENSE: "授权文件",
|
||||
}
|
||||
207
src/framework/database/db/db.go
Normal file
207
src/framework/database/db/db.go
Normal file
@@ -0,0 +1,207 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
"time"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
gormLog "gorm.io/gorm/logger"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/utils/parse"
|
||||
)
|
||||
|
||||
// 数据库连接实例
|
||||
var dbMap = make(map[string]*gorm.DB)
|
||||
|
||||
type dialectInfo struct {
|
||||
dialectic gorm.Dialector
|
||||
logging bool
|
||||
}
|
||||
|
||||
// 载入数据库连接
|
||||
func loadDialect() map[string]dialectInfo {
|
||||
dialects := make(map[string]dialectInfo)
|
||||
|
||||
// 读取数据源配置
|
||||
datasource := config.Get("gorm.datasource").(map[string]any)
|
||||
for key, value := range datasource {
|
||||
item := value.(map[string]any)
|
||||
// 数据库类型对应的数据库连接
|
||||
switch item["type"] {
|
||||
case "mysql":
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||||
item["username"],
|
||||
item["password"],
|
||||
item["host"],
|
||||
item["port"],
|
||||
item["database"],
|
||||
)
|
||||
dialects[key] = dialectInfo{
|
||||
dialectic: mysql.Open(dsn),
|
||||
logging: parse.Boolean(item["logging"]),
|
||||
}
|
||||
default:
|
||||
logger.Warnf("%s: %v\n Not Load DB Config Type", key, item)
|
||||
}
|
||||
}
|
||||
|
||||
return dialects
|
||||
}
|
||||
|
||||
// 载入连接日志配置
|
||||
func loadLogger() gormLog.Interface {
|
||||
newLogger := gormLog.New(
|
||||
log.New(os.Stdout, "[GORM] ", log.LstdFlags), // 将日志输出到控制台
|
||||
gormLog.Config{
|
||||
SlowThreshold: time.Second, // Slow SQL 阈值
|
||||
LogLevel: gormLog.Info, // 日志级别 Silent不输出任何日志
|
||||
ParameterizedQueries: false, // 参数化查询SQL 用实际值带入?的执行语句
|
||||
Colorful: false, // 彩色日志输出
|
||||
},
|
||||
)
|
||||
return newLogger
|
||||
}
|
||||
|
||||
// Connect 连接数据库实例
|
||||
func Connect() {
|
||||
// 遍历进行连接数据库实例
|
||||
for key, info := range loadDialect() {
|
||||
opts := &gorm.Config{
|
||||
Logger: gormLog.Discard,
|
||||
}
|
||||
// 是否需要日志输出
|
||||
if info.logging {
|
||||
opts.Logger = loadLogger()
|
||||
}
|
||||
// 创建连接
|
||||
db, err := gorm.Open(info.dialectic, opts)
|
||||
if err != nil {
|
||||
logger.Errorf("failed error db connect: %s", err)
|
||||
continue
|
||||
}
|
||||
// 获取底层 SQL 数据库连接
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error underlying SQL database: %v", err)
|
||||
}
|
||||
// 测试数据库连接
|
||||
err = sqlDB.Ping()
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error ping database: %v", err)
|
||||
}
|
||||
// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
|
||||
sqlDB.SetMaxIdleConns(10)
|
||||
// SetMaxOpenConns 设置打开数据库连接的最大数量。
|
||||
sqlDB.SetMaxOpenConns(100)
|
||||
// SetConnMaxLifetime 设置了连接可复用的最大时间。
|
||||
sqlDB.SetConnMaxLifetime(time.Hour)
|
||||
logger.Infof("database %s connection is successful.", key)
|
||||
dbMap[key] = db
|
||||
}
|
||||
}
|
||||
|
||||
// Close 关闭数据库实例
|
||||
func Close() {
|
||||
for _, db := range dbMap {
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if err := sqlDB.Close(); err != nil {
|
||||
logger.Errorf("fatal error db close: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DB 获取数据源
|
||||
//
|
||||
// source-数据源
|
||||
func DB(source string) *gorm.DB {
|
||||
// 不指定时获取默认实例
|
||||
if source == "" {
|
||||
source = config.Get("gorm.defaultDataSourceName").(string)
|
||||
}
|
||||
db := dbMap[source]
|
||||
if db == nil {
|
||||
logger.Errorf("not database source: %s", source)
|
||||
return nil
|
||||
}
|
||||
return db
|
||||
}
|
||||
|
||||
// Names 获取数据源名称列表
|
||||
func Names() []string {
|
||||
var names []string
|
||||
for key := range dbMap {
|
||||
names = append(names, key)
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
||||
// RawDB 原生语句查询
|
||||
//
|
||||
// source-数据源
|
||||
// sql-预编译的SQL语句
|
||||
// parameters-预编译的SQL语句参数
|
||||
func RawDB(source string, sql string, parameters []any) ([]map[string]any, error) {
|
||||
var rows []map[string]any
|
||||
// 数据源
|
||||
db := DB(source)
|
||||
if db == nil {
|
||||
return rows, fmt.Errorf("not database source")
|
||||
}
|
||||
// 使用正则表达式替换连续的空白字符为单个空格
|
||||
fmtSql := regexp.MustCompile(`\s+`).ReplaceAllString(sql, " ")
|
||||
// 查询结果
|
||||
res := db.Raw(fmtSql, parameters...).Scan(&rows)
|
||||
if res.Error != nil {
|
||||
return nil, res.Error
|
||||
}
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
// ExecDB 原生语句执行
|
||||
//
|
||||
// source-数据源
|
||||
// sql-预编译的SQL语句
|
||||
// parameters-预编译的SQL语句参数
|
||||
func ExecDB(source string, sql string, parameters []any) (int64, error) {
|
||||
// 数据源
|
||||
db := DB(source)
|
||||
if db == nil {
|
||||
return 0, fmt.Errorf("not database source")
|
||||
}
|
||||
// 使用正则表达式替换连续的空白字符为单个空格
|
||||
fmtSql := regexp.MustCompile(`\s+`).ReplaceAllString(sql, " ")
|
||||
// 执行结果
|
||||
res := db.Exec(fmtSql, parameters...)
|
||||
if res.Error != nil {
|
||||
return 0, res.Error
|
||||
}
|
||||
return res.RowsAffected, nil
|
||||
}
|
||||
|
||||
// PageNumSize 分页页码记录数
|
||||
//
|
||||
// pageNum-页码
|
||||
// pageSize-记录数
|
||||
func PageNumSize(pageNum, pageSize any) (int, int) {
|
||||
// 记录起始索引
|
||||
num := parse.Number(pageNum)
|
||||
if num < 1 {
|
||||
num = 1
|
||||
}
|
||||
|
||||
// 显示记录数
|
||||
size := parse.Number(pageSize)
|
||||
if size < 0 {
|
||||
size = 10
|
||||
}
|
||||
return int(num - 1), int(size)
|
||||
}
|
||||
104
src/framework/database/db/expand.go
Normal file
104
src/framework/database/db/expand.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
)
|
||||
|
||||
// ImportSQL 导入SQL
|
||||
func ImportSQL() {
|
||||
sqlPath := config.Get("sqlPath").(string)
|
||||
if sqlPath == "" {
|
||||
return
|
||||
}
|
||||
sqlSource := config.Get("sqlSource").(string)
|
||||
if sqlSource == "" {
|
||||
sqlSource = config.Get("database.defaultDataSourceName").(string)
|
||||
}
|
||||
|
||||
// 数据源
|
||||
db := DB(sqlSource)
|
||||
if db == nil {
|
||||
log.Fatalln("not database source")
|
||||
return
|
||||
}
|
||||
|
||||
// 获取路径信息
|
||||
fileInfo, err := os.Stat(sqlPath)
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// 处理目录或文件
|
||||
if fileInfo.IsDir() {
|
||||
// 处理目录
|
||||
files, err := os.ReadDir(sqlPath)
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
if !strings.HasSuffix(file.Name(), ".sql") {
|
||||
continue
|
||||
}
|
||||
processSQLFile(db, filepath.Join(sqlPath, file.Name()))
|
||||
}
|
||||
} else {
|
||||
// 处理单个文件
|
||||
processSQLFile(db, sqlPath)
|
||||
}
|
||||
|
||||
log.Println("process success")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
// 处理单个SQL文件的通用函数
|
||||
func processSQLFile(db *gorm.DB, filePath string) {
|
||||
file, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// 逐行读取 SQL 文件
|
||||
scanner := bufio.NewScanner(file)
|
||||
var sqlBuilder strings.Builder
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
// 跳过注释和空行
|
||||
if strings.HasPrefix(line, "--") || strings.TrimSpace(line) == "" {
|
||||
continue
|
||||
}
|
||||
// 跳过配置语句
|
||||
if strings.HasPrefix(line, "/*!") {
|
||||
continue
|
||||
}
|
||||
|
||||
sqlBuilder.WriteString(line + "\n")
|
||||
|
||||
// 当遇到分号时,执行 SQL 语句
|
||||
if strings.HasSuffix(line, ";") {
|
||||
// 执行 SQL 语句
|
||||
if err := db.Exec(sqlBuilder.String()).Error; err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
sqlBuilder.Reset()
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
175
src/framework/database/redis/expand.go
Normal file
175
src/framework/database/redis/expand.go
Normal file
@@ -0,0 +1,175 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/logger"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
// 连接Redis实例
|
||||
func ConnectPush(source string, rdb *redis.Client) {
|
||||
if rdb == nil {
|
||||
delete(rdbMap, source)
|
||||
return
|
||||
}
|
||||
rdbMap[source] = rdb
|
||||
}
|
||||
|
||||
// 批量获得缓存数据 [key]result
|
||||
func GetHashBatch(source string, keys []string) (map[string]map[string]string, error) {
|
||||
result := make(map[string]map[string]string, 0)
|
||||
if len(keys) == 0 {
|
||||
return result, fmt.Errorf("not keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return result, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
// 创建一个有限的并发控制信号通道
|
||||
sem := make(chan struct{}, 10)
|
||||
var wg sync.WaitGroup
|
||||
var mt sync.Mutex
|
||||
batchSize := 1000
|
||||
total := len(keys)
|
||||
if total < batchSize {
|
||||
batchSize = total
|
||||
}
|
||||
|
||||
for i := 0; i < total; i += batchSize {
|
||||
wg.Add(1)
|
||||
go func(start int) {
|
||||
ctx := context.Background()
|
||||
// 并发控制,限制同时执行的 Goroutine 数量
|
||||
sem <- struct{}{}
|
||||
defer func() {
|
||||
<-sem
|
||||
ctx.Done()
|
||||
wg.Done()
|
||||
}()
|
||||
|
||||
// 检查索引是否越界
|
||||
end := start + batchSize
|
||||
if end > total {
|
||||
end = total
|
||||
}
|
||||
pipe := rdb.Pipeline()
|
||||
for _, key := range keys[start:end] {
|
||||
pipe.HGetAll(ctx, key)
|
||||
}
|
||||
|
||||
cmds, err := pipe.Exec(ctx)
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to get hash batch exec err: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 将结果添加到 result map 并发访问
|
||||
mt.Lock()
|
||||
defer mt.Unlock()
|
||||
|
||||
// 处理命令结果
|
||||
for _, cmd := range cmds {
|
||||
if cmd.Err() != nil {
|
||||
logger.Errorf("Failed to get hash batch cmds err: %v", cmd.Err())
|
||||
continue
|
||||
}
|
||||
// 将结果转换为 *redis.StringStringMapCmd 类型
|
||||
rcmd, ok := cmd.(*redis.MapStringStringCmd)
|
||||
if !ok {
|
||||
logger.Errorf("Failed to get hash batch type err: %v", cmd.Err())
|
||||
continue
|
||||
}
|
||||
|
||||
key := "-"
|
||||
args := rcmd.Args()
|
||||
if len(args) > 0 {
|
||||
key = fmt.Sprint(args[1])
|
||||
}
|
||||
|
||||
result[key] = rcmd.Val()
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// GetHash 获得缓存数据
|
||||
func GetHash(source, key, field string) (string, error) {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return "", fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
v, err := rdb.HGet(ctx, key, field).Result()
|
||||
if errors.Is(err, redis.Nil) {
|
||||
return "", fmt.Errorf("no key field")
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return v, nil
|
||||
}
|
||||
|
||||
// SetHash 设置缓存数据
|
||||
func SetHash(source, key string, value map[string]any) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.HSet(ctx, key, value).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis HSet err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// IncrBy 累加统计数据
|
||||
func IncrBy(source, key, field string, value int64) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
// 使用HINCRBY命令进行累加统计
|
||||
ctx := context.Background()
|
||||
err := rdb.HIncrBy(ctx, key, field, value).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis HIncrBy err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Expire 过期时间设置
|
||||
func Expire(source, key string, expiration time.Duration) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
// 过期时间设置
|
||||
ctx := context.Background()
|
||||
err := rdb.Expire(ctx, key, expiration).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis HIncrBy err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
346
src/framework/database/redis/redis.go
Normal file
346
src/framework/database/redis/redis.go
Normal file
@@ -0,0 +1,346 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/logger"
|
||||
)
|
||||
|
||||
// Redis连接实例
|
||||
var rdbMap = make(map[string]*redis.Client)
|
||||
|
||||
// Connect 连接Redis实例
|
||||
func Connect() {
|
||||
ctx := context.Background()
|
||||
// 读取数据源配置
|
||||
datasource := config.Get("redis.dataSource").(map[string]any)
|
||||
for k, v := range datasource {
|
||||
client := v.(map[string]any)
|
||||
// 创建连接
|
||||
address := fmt.Sprintf("%s:%d", client["host"], client["port"])
|
||||
rdb := redis.NewClient(&redis.Options{
|
||||
Addr: address,
|
||||
Password: client["password"].(string),
|
||||
DB: client["db"].(int),
|
||||
})
|
||||
// 测试数据库连接
|
||||
pong, err := rdb.Ping(ctx).Result()
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error redis connect: %s is %v", k, err)
|
||||
}
|
||||
logger.Infof("redis %s %d %s connection is successful.", k, client["db"].(int), pong)
|
||||
rdbMap[k] = rdb
|
||||
}
|
||||
}
|
||||
|
||||
// Close 关闭Redis实例
|
||||
func Close() {
|
||||
for _, rdb := range rdbMap {
|
||||
if err := rdb.Close(); err != nil {
|
||||
logger.Errorf("redis db close: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RDB 获取实例
|
||||
func RDB(source string) *redis.Client {
|
||||
// 不指定时获取默认实例
|
||||
if source == "" {
|
||||
source = config.Get("redis.defaultDataSourceName").(string)
|
||||
}
|
||||
return rdbMap[source]
|
||||
}
|
||||
|
||||
// Info 获取redis服务信息
|
||||
func Info(source string) map[string]map[string]string {
|
||||
infoObj := make(map[string]map[string]string)
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return infoObj
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
info, err := rdb.Info(ctx).Result()
|
||||
if err != nil {
|
||||
return infoObj
|
||||
}
|
||||
|
||||
lines := strings.Split(info, "\r\n")
|
||||
label := ""
|
||||
for _, line := range lines {
|
||||
if strings.Contains(line, "#") {
|
||||
label = strings.Fields(line)[len(strings.Fields(line))-1]
|
||||
label = strings.ToLower(label)
|
||||
infoObj[label] = make(map[string]string)
|
||||
continue
|
||||
}
|
||||
kvArr := strings.Split(line, ":")
|
||||
if len(kvArr) >= 2 {
|
||||
key := strings.TrimSpace(kvArr[0])
|
||||
value := strings.TrimSpace(kvArr[len(kvArr)-1])
|
||||
infoObj[label][key] = value
|
||||
}
|
||||
}
|
||||
return infoObj
|
||||
}
|
||||
|
||||
// KeySize 获取redis当前连接可用键Key总数信息
|
||||
func KeySize(source string) int64 {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
size, err := rdb.DBSize(ctx).Result()
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return size
|
||||
}
|
||||
|
||||
// CommandStats 获取redis命令状态信息
|
||||
func CommandStats(source string) []map[string]string {
|
||||
statsObjArr := make([]map[string]string, 0)
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return statsObjArr
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
commandstats, err := rdb.Info(ctx, "commandstats").Result()
|
||||
if err != nil {
|
||||
return statsObjArr
|
||||
}
|
||||
|
||||
lines := strings.Split(commandstats, "\r\n")
|
||||
for _, line := range lines {
|
||||
if !strings.HasPrefix(line, "cmdstat_") {
|
||||
continue
|
||||
}
|
||||
kvArr := strings.Split(line, ":")
|
||||
key := kvArr[0]
|
||||
valueStr := kvArr[len(kvArr)-1]
|
||||
statsObj := make(map[string]string)
|
||||
statsObj["name"] = key[8:]
|
||||
statsObj["value"] = valueStr[6:strings.Index(valueStr, ",usec=")]
|
||||
statsObjArr = append(statsObjArr, statsObj)
|
||||
}
|
||||
return statsObjArr
|
||||
}
|
||||
|
||||
// GetExpire 获取键的剩余有效时间(秒)
|
||||
func GetExpire(source string, key string) (int64, error) {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return 0, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
ttl, err := rdb.TTL(ctx, key).Result()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int64(ttl.Seconds()), nil
|
||||
}
|
||||
|
||||
// GetKeys 获得缓存数据的key列表
|
||||
func GetKeys(source string, pattern string) ([]string, error) {
|
||||
keys := make([]string, 0)
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return keys, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
// 游标
|
||||
var cursor uint64 = 0
|
||||
var count int64 = 100
|
||||
ctx := context.Background()
|
||||
// 循环遍历获取匹配的键
|
||||
for {
|
||||
// 使用 SCAN 命令获取匹配的键
|
||||
batchKeys, nextCursor, err := rdb.Scan(ctx, cursor, pattern, count).Result()
|
||||
if err != nil {
|
||||
logger.Errorf("failed to scan keys: %v", err)
|
||||
return keys, err
|
||||
}
|
||||
cursor = nextCursor
|
||||
keys = append(keys, batchKeys...)
|
||||
// 当 cursor 为 0,表示遍历完成
|
||||
if cursor == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
return keys, nil
|
||||
}
|
||||
|
||||
// GetBatch 批量获得缓存数据
|
||||
func GetBatch(source string, keys []string) ([]any, error) {
|
||||
result := make([]any, 0)
|
||||
if len(keys) == 0 {
|
||||
return result, fmt.Errorf("not keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return result, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
// 获取缓存数据
|
||||
v, err := rdb.MGet(context.Background(), keys...).Result()
|
||||
if err != nil || errors.Is(err, redis.Nil) {
|
||||
logger.Errorf("failed to get batch data: %v", err)
|
||||
return result, err
|
||||
}
|
||||
return v, nil
|
||||
}
|
||||
|
||||
// Get 获得缓存数据
|
||||
func Get(source, key string) (string, error) {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return "", fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
v, err := rdb.Get(ctx, key).Result()
|
||||
if errors.Is(err, redis.Nil) {
|
||||
return "", fmt.Errorf("no keys")
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return v, nil
|
||||
}
|
||||
|
||||
// Has 判断是否存在
|
||||
func Has(source string, keys ...string) (int64, error) {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return 0, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
exists, err := rdb.Exists(ctx, keys...).Result()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return exists, nil
|
||||
}
|
||||
|
||||
// Set 设置缓存数据
|
||||
func Set(source, key string, value any) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Set(ctx, key, value, 0).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis Set err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetByExpire 设置缓存数据与过期时间
|
||||
func SetByExpire(source, key string, value any, expiration time.Duration) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Set(ctx, key, value, expiration).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis SetByExpire err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Del 删除单个
|
||||
func Del(source string, key string) error {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
if err := rdb.Del(ctx, key).Err(); err != nil {
|
||||
logger.Errorf("redis Del err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DelKeys 删除多个
|
||||
func DelKeys(source string, keys []string) error {
|
||||
if len(keys) == 0 {
|
||||
return fmt.Errorf("no keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
if err := rdb.Del(ctx, keys...).Err(); err != nil {
|
||||
logger.Errorf("redis DelKeys err %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RateLimit 限流查询并记录
|
||||
func RateLimit(source, limitKey string, time, count int64) (int64, error) {
|
||||
// 数据源
|
||||
rdb := RDB(source)
|
||||
if rdb == nil {
|
||||
return 0, fmt.Errorf("redis not client")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
result, err := rateLimitCommand.Run(ctx, rdb, []string{limitKey}, time, count).Result()
|
||||
if err != nil {
|
||||
logger.Errorf("redis lua script err %v", err)
|
||||
return 0, err
|
||||
}
|
||||
return result.(int64), err
|
||||
}
|
||||
|
||||
// 声明定义限流脚本命令
|
||||
var rateLimitCommand = redis.NewScript(`
|
||||
local key = KEYS[1]
|
||||
local time = tonumber(ARGV[1])
|
||||
local count = tonumber(ARGV[2])
|
||||
local current = redis.call('get', key);
|
||||
if current and tonumber(current) >= count then
|
||||
return tonumber(current);
|
||||
end
|
||||
current = redis.call('incr', key)
|
||||
if tonumber(current) == 1 then
|
||||
redis.call('expire', key, time)
|
||||
end
|
||||
return tonumber(current);`)
|
||||
@@ -1,127 +1,22 @@
|
||||
package datasource
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/database/db"
|
||||
"be.ems/src/framework/utils/parse"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
gormLog "gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
// 数据库连接实例
|
||||
var dbMap = make(map[string]*gorm.DB)
|
||||
|
||||
type dialectInfo struct {
|
||||
dialector gorm.Dialector
|
||||
logging bool
|
||||
}
|
||||
|
||||
// 载入数据库连接
|
||||
func loadDialect() map[string]dialectInfo {
|
||||
dialects := make(map[string]dialectInfo, 0)
|
||||
|
||||
// 读取数据源配置
|
||||
datasource := config.Get("gorm.datasource").(map[string]any)
|
||||
for key, value := range datasource {
|
||||
item := value.(map[string]any)
|
||||
// 数据库类型对应的数据库连接
|
||||
switch item["type"] {
|
||||
case "mysql":
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||||
item["username"],
|
||||
item["password"],
|
||||
item["host"],
|
||||
item["port"],
|
||||
item["database"],
|
||||
)
|
||||
dialects[key] = dialectInfo{
|
||||
dialector: mysql.Open(dsn),
|
||||
logging: item["logging"].(bool),
|
||||
}
|
||||
default:
|
||||
logger.Fatalf("%s: %v\n Not Load DB Config Type", key, item)
|
||||
}
|
||||
}
|
||||
|
||||
return dialects
|
||||
}
|
||||
|
||||
// 载入连接日志配置
|
||||
func loadLogger() gormLog.Interface {
|
||||
newLogger := gormLog.New(
|
||||
log.New(os.Stdout, "[GORM] ", log.LstdFlags), // 将日志输出到控制台
|
||||
gormLog.Config{
|
||||
SlowThreshold: time.Second, // Slow SQL 阈值
|
||||
LogLevel: gormLog.Info, // 日志级别 Silent不输出任何日志
|
||||
ParameterizedQueries: false, // 参数化查询SQL 用实际值带入?的执行语句
|
||||
Colorful: false, // 彩色日志输出
|
||||
},
|
||||
)
|
||||
return newLogger
|
||||
}
|
||||
|
||||
// 连接数据库实例
|
||||
func Connect() {
|
||||
// 遍历进行连接数据库实例
|
||||
for key, info := range loadDialect() {
|
||||
opts := &gorm.Config{}
|
||||
// 是否需要日志输出
|
||||
if info.logging {
|
||||
opts.Logger = loadLogger()
|
||||
}
|
||||
// 创建连接
|
||||
db, err := gorm.Open(info.dialector, opts)
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error db connect: %s", err)
|
||||
}
|
||||
// 获取底层 SQL 数据库连接
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error underlying SQL database: %v", err)
|
||||
}
|
||||
// 测试数据库连接
|
||||
err = sqlDB.Ping()
|
||||
if err != nil {
|
||||
logger.Fatalf("failed error ping database: %v", err)
|
||||
}
|
||||
logger.Infof("database %s connection is successful.", key)
|
||||
dbMap[key] = db
|
||||
}
|
||||
}
|
||||
|
||||
// 关闭数据库实例
|
||||
func Close() {
|
||||
for _, db := range dbMap {
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if err := sqlDB.Close(); err != nil {
|
||||
logger.Errorf("fatal error db close: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取默认数据源
|
||||
func DefaultDB() *gorm.DB {
|
||||
source := config.Get("gorm.defaultDataSourceName").(string)
|
||||
return dbMap[source]
|
||||
return db.DB("")
|
||||
}
|
||||
|
||||
// 获取数据源
|
||||
func DB(source string) *gorm.DB {
|
||||
if source == "" {
|
||||
source = config.Get("gorm.defaultDataSourceName").(string)
|
||||
}
|
||||
return dbMap[source]
|
||||
return db.DB(source)
|
||||
}
|
||||
|
||||
// RawDB 原生查询语句
|
||||
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/constants/cachekey"
|
||||
"be.ems/src/framework/database/redis"
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/redis"
|
||||
"be.ems/src/framework/utils/ctx"
|
||||
"be.ems/src/framework/utils/ip2region"
|
||||
"be.ems/src/framework/vo/result"
|
||||
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/constants/cachekey"
|
||||
"be.ems/src/framework/database/redis"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/redis"
|
||||
"be.ems/src/framework/utils/ctx"
|
||||
"be.ems/src/framework/utils/ip2region"
|
||||
"be.ems/src/framework/vo/result"
|
||||
|
||||
@@ -1,442 +0,0 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/logger"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
// Redis连接实例
|
||||
var rdbMap = make(map[string]*redis.Client)
|
||||
|
||||
// 声明定义限流脚本命令
|
||||
var rateLimitCommand = redis.NewScript(`
|
||||
local key = KEYS[1]
|
||||
local time = tonumber(ARGV[1])
|
||||
local count = tonumber(ARGV[2])
|
||||
local current = redis.call('get', key);
|
||||
if current and tonumber(current) >= count then
|
||||
return tonumber(current);
|
||||
end
|
||||
current = redis.call('incr', key)
|
||||
if tonumber(current) == 1 then
|
||||
redis.call('expire', key, time)
|
||||
end
|
||||
return tonumber(current);`)
|
||||
|
||||
// 连接Redis实例
|
||||
func ConnectPush(source string, rdb *redis.Client) {
|
||||
if rdb == nil {
|
||||
delete(rdbMap, source)
|
||||
return
|
||||
}
|
||||
rdbMap[source] = rdb
|
||||
}
|
||||
|
||||
// 连接Redis实例
|
||||
func Connect() {
|
||||
ctx := context.Background()
|
||||
// 读取数据源配置
|
||||
datasource := config.Get("redis.dataSource").(map[string]any)
|
||||
for k, v := range datasource {
|
||||
client := v.(map[string]any)
|
||||
// 创建连接
|
||||
address := fmt.Sprintf("%s:%d", client["host"], client["port"])
|
||||
rdb := redis.NewClient(&redis.Options{
|
||||
Addr: address,
|
||||
Password: client["password"].(string),
|
||||
DB: client["db"].(int),
|
||||
})
|
||||
// 测试数据库连接
|
||||
pong, err := rdb.Ping(ctx).Result()
|
||||
if err != nil {
|
||||
logger.Fatalf("Ping redis %s is %v", k, err)
|
||||
}
|
||||
logger.Infof("redis %s %s %d connection is successful.", k, pong, client["db"].(int))
|
||||
rdbMap[k] = rdb
|
||||
}
|
||||
}
|
||||
|
||||
// 关闭Redis实例
|
||||
func Close() {
|
||||
for _, rdb := range rdbMap {
|
||||
if err := rdb.Close(); err != nil {
|
||||
logger.Errorf("fatal error db close: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取默认实例
|
||||
func DefaultRDB() *redis.Client {
|
||||
source := config.Get("redis.defaultDataSourceName").(string)
|
||||
return rdbMap[source]
|
||||
}
|
||||
|
||||
// 获取实例
|
||||
func RDB(source string) *redis.Client {
|
||||
return rdbMap[source]
|
||||
}
|
||||
|
||||
// Info 获取redis服务信息
|
||||
func Info(source string) map[string]map[string]string {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
info, err := rdb.Info(ctx).Result()
|
||||
if err != nil {
|
||||
return map[string]map[string]string{}
|
||||
}
|
||||
infoObj := make(map[string]map[string]string)
|
||||
lines := strings.Split(info, "\r\n")
|
||||
label := ""
|
||||
for _, line := range lines {
|
||||
if strings.Contains(line, "#") {
|
||||
label = strings.Fields(line)[len(strings.Fields(line))-1]
|
||||
label = strings.ToLower(label)
|
||||
infoObj[label] = make(map[string]string)
|
||||
continue
|
||||
}
|
||||
kvArr := strings.Split(line, ":")
|
||||
if len(kvArr) >= 2 {
|
||||
key := strings.TrimSpace(kvArr[0])
|
||||
value := strings.TrimSpace(kvArr[len(kvArr)-1])
|
||||
infoObj[label][key] = value
|
||||
}
|
||||
}
|
||||
return infoObj
|
||||
}
|
||||
|
||||
// KeySize 获取redis当前连接可用键Key总数信息
|
||||
func KeySize(source string) int64 {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
size, err := rdb.DBSize(ctx).Result()
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return size
|
||||
}
|
||||
|
||||
// CommandStats 获取redis命令状态信息
|
||||
func CommandStats(source string) []map[string]string {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
commandstats, err := rdb.Info(ctx, "commandstats").Result()
|
||||
if err != nil {
|
||||
return []map[string]string{}
|
||||
}
|
||||
statsObjArr := make([]map[string]string, 0)
|
||||
lines := strings.Split(commandstats, "\r\n")
|
||||
for _, line := range lines {
|
||||
if !strings.HasPrefix(line, "cmdstat_") {
|
||||
continue
|
||||
}
|
||||
kvArr := strings.Split(line, ":")
|
||||
key := kvArr[0]
|
||||
valueStr := kvArr[len(kvArr)-1]
|
||||
statsObj := make(map[string]string)
|
||||
statsObj["name"] = key[8:]
|
||||
statsObj["value"] = valueStr[6:strings.Index(valueStr, ",usec=")]
|
||||
statsObjArr = append(statsObjArr, statsObj)
|
||||
}
|
||||
return statsObjArr
|
||||
}
|
||||
|
||||
// 获取键的剩余有效时间(秒)
|
||||
func GetExpire(source string, key string) (float64, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
ttl, err := rdb.TTL(ctx, key).Result()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return ttl.Seconds(), nil
|
||||
}
|
||||
|
||||
// 获得缓存数据的key列表
|
||||
func GetKeys(source string, match string) ([]string, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
keys := make([]string, 0)
|
||||
ctx := context.Background()
|
||||
iter := rdb.Scan(ctx, 0, match, 1000).Iterator()
|
||||
if err := iter.Err(); err != nil {
|
||||
logger.Errorf("Failed to scan keys: %v", err)
|
||||
return keys, err
|
||||
}
|
||||
for iter.Next(ctx) {
|
||||
keys = append(keys, iter.Val())
|
||||
}
|
||||
return keys, nil
|
||||
}
|
||||
|
||||
// 批量获得缓存数据
|
||||
func GetBatch(source string, keys []string) ([]any, error) {
|
||||
if len(keys) == 0 {
|
||||
return []any{}, fmt.Errorf("not keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
// 获取缓存数据
|
||||
result, err := rdb.MGet(context.Background(), keys...).Result()
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to get batch data: %v", err)
|
||||
return []any{}, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// 获得缓存数据
|
||||
func Get(source, key string) (string, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
value, err := rdb.Get(ctx, key).Result()
|
||||
if err == redis.Nil || err != nil {
|
||||
return "", err
|
||||
}
|
||||
return value, nil
|
||||
}
|
||||
|
||||
// 获得缓存数据Hash
|
||||
func GetHash(source, key string) (map[string]string, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
value, err := rdb.HGetAll(ctx, key).Result()
|
||||
if err == redis.Nil || err != nil {
|
||||
return map[string]string{}, err
|
||||
}
|
||||
return value, nil
|
||||
}
|
||||
|
||||
// 批量获得缓存数据 [key]result
|
||||
func GetHashBatch(source string, keys []string) (map[string]map[string]string, error) {
|
||||
result := make(map[string]map[string]string, 0)
|
||||
if len(keys) == 0 {
|
||||
return result, fmt.Errorf("not keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
// 创建一个有限的并发控制信号通道
|
||||
sem := make(chan struct{}, 10)
|
||||
var wg sync.WaitGroup
|
||||
var mt sync.Mutex
|
||||
batchSize := 1000
|
||||
total := len(keys)
|
||||
if total < batchSize {
|
||||
batchSize = total
|
||||
}
|
||||
|
||||
for i := 0; i < total; i += batchSize {
|
||||
wg.Add(1)
|
||||
go func(start int) {
|
||||
ctx := context.Background()
|
||||
// 并发控制,限制同时执行的 Goroutine 数量
|
||||
sem <- struct{}{}
|
||||
defer func() {
|
||||
<-sem
|
||||
ctx.Done()
|
||||
wg.Done()
|
||||
}()
|
||||
|
||||
// 检查索引是否越界
|
||||
end := start + batchSize
|
||||
if end > total {
|
||||
end = total
|
||||
}
|
||||
pipe := rdb.Pipeline()
|
||||
for _, key := range keys[start:end] {
|
||||
pipe.HGetAll(ctx, key)
|
||||
}
|
||||
|
||||
cmds, err := pipe.Exec(ctx)
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to get hash batch exec err: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 将结果添加到 result map 并发访问
|
||||
mt.Lock()
|
||||
defer mt.Unlock()
|
||||
|
||||
// 处理命令结果
|
||||
for _, cmd := range cmds {
|
||||
if cmd.Err() != nil {
|
||||
logger.Errorf("Failed to get hash batch cmds err: %v", cmd.Err())
|
||||
continue
|
||||
}
|
||||
// 将结果转换为 *redis.StringStringMapCmd 类型
|
||||
rcmd, ok := cmd.(*redis.MapStringStringCmd)
|
||||
if !ok {
|
||||
logger.Errorf("Failed to get hash batch type err: %v", cmd.Err())
|
||||
continue
|
||||
}
|
||||
|
||||
key := "-"
|
||||
args := rcmd.Args()
|
||||
if len(args) > 0 {
|
||||
key = fmt.Sprint(args[1])
|
||||
}
|
||||
|
||||
result[key] = rcmd.Val()
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// 判断是否存在
|
||||
func Has(source string, keys ...string) (bool, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
exists, err := rdb.Exists(ctx, keys...).Result()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return exists >= 1, nil
|
||||
}
|
||||
|
||||
// 设置缓存数据
|
||||
func Set(source, key string, value any) (bool, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Set(ctx, key, value, 0).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis Set err %v", err)
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// 设置缓存数据与过期时间
|
||||
func SetByExpire(source, key string, value any, expiration time.Duration) (bool, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Set(ctx, key, value, expiration).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis SetByExpire err %v", err)
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// 删除单个
|
||||
func Del(source string, key string) (bool, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Del(ctx, key).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis Del err %v", err)
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// 删除多个
|
||||
func DelKeys(source string, keys []string) (bool, error) {
|
||||
if len(keys) == 0 {
|
||||
return false, fmt.Errorf("no keys")
|
||||
}
|
||||
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
err := rdb.Del(ctx, keys...).Err()
|
||||
if err != nil {
|
||||
logger.Errorf("redis DelKeys err %v", err)
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// 限流查询并记录
|
||||
func RateLimit(source, limitKey string, time, count int64) (int64, error) {
|
||||
// 数据源
|
||||
rdb := DefaultRDB()
|
||||
if source != "" {
|
||||
rdb = RDB(source)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
result, err := rateLimitCommand.Run(ctx, rdb, []string{limitKey}, time, count).Result()
|
||||
if err != nil {
|
||||
logger.Errorf("redis RateLimit err %v", err)
|
||||
return 0, err
|
||||
}
|
||||
return result.(int64), err
|
||||
}
|
||||
160
src/framework/reqctx/auth.go
Normal file
160
src/framework/reqctx/auth.go
Normal file
@@ -0,0 +1,160 @@
|
||||
package reqctx
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/constants"
|
||||
"be.ems/src/framework/vo"
|
||||
)
|
||||
|
||||
// LoginUser 登录用户信息
|
||||
func LoginUser(c *gin.Context) (vo.LoginUser, error) {
|
||||
value, exists := c.Get(constants.CTX_LOGIN_USER)
|
||||
if exists && value != nil {
|
||||
return value.(vo.LoginUser), nil
|
||||
}
|
||||
return vo.LoginUser{}, fmt.Errorf("invalid login user information")
|
||||
}
|
||||
|
||||
// LoginUserToUserID 登录用户信息-用户ID
|
||||
func LoginUserToUserID(c *gin.Context) string {
|
||||
info, err := LoginUser(c)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return info.UserID
|
||||
}
|
||||
|
||||
// LoginUserToUserName 登录用户信息-用户名称
|
||||
func LoginUserToUserName(c *gin.Context) string {
|
||||
info, err := LoginUser(c)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return info.User.UserName
|
||||
}
|
||||
|
||||
// LoginUserByContainRoles 登录用户信息-包含角色KEY
|
||||
func LoginUserByContainRoles(c *gin.Context, target string) bool {
|
||||
info, err := LoginUser(c)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if config.IsAdmin(info.UserID) {
|
||||
return true
|
||||
}
|
||||
roles := info.User.Roles
|
||||
for _, item := range roles {
|
||||
if item.RoleKey == target {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// LoginUserByContainPerms 登录用户信息-包含权限标识
|
||||
func LoginUserByContainPerms(c *gin.Context, target string) bool {
|
||||
loginUser, err := LoginUser(c)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if config.IsAdmin(loginUser.UserID) {
|
||||
return true
|
||||
}
|
||||
perms := loginUser.Permissions
|
||||
for _, str := range perms {
|
||||
if str == target {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// LoginUserToDataScopeSQL 登录用户信息-角色数据范围过滤SQL字符串
|
||||
func LoginUserToDataScopeSQL(c *gin.Context, deptAlias string, userAlias string) string {
|
||||
dataScopeSQL := ""
|
||||
// 登录用户信息
|
||||
info, err := LoginUser(c)
|
||||
if err != nil {
|
||||
return dataScopeSQL
|
||||
}
|
||||
userInfo := info.User
|
||||
|
||||
// 如果是系统管理员,则不过滤数据
|
||||
if config.IsAdmin(userInfo.UserID) {
|
||||
return dataScopeSQL
|
||||
}
|
||||
// 无用户角色
|
||||
if len(userInfo.Roles) <= 0 {
|
||||
return dataScopeSQL
|
||||
}
|
||||
|
||||
// 记录角色权限范围定义添加过, 非自定数据权限不需要重复拼接SQL
|
||||
var scopeKeys []string
|
||||
var conditions []string
|
||||
for _, role := range userInfo.Roles {
|
||||
dataScope := role.DataScope
|
||||
|
||||
if constants.ROLE_SCOPE_ALL == dataScope {
|
||||
break
|
||||
}
|
||||
|
||||
if constants.ROLE_SCOPE_CUSTOM != dataScope {
|
||||
hasKey := false
|
||||
for _, key := range scopeKeys {
|
||||
if key == dataScope {
|
||||
hasKey = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if hasKey {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if constants.ROLE_SCOPE_CUSTOM == dataScope {
|
||||
sql := fmt.Sprintf(`%s.dept_id IN
|
||||
( SELECT dept_id FROM sys_role_dept WHERE role_id = %s )
|
||||
AND %s.dept_id NOT IN
|
||||
(
|
||||
SELECT d.parent_id FROM sys_dept d
|
||||
INNER JOIN sys_role_dept rd ON rd.dept_id = d.dept_id
|
||||
AND rd.role_id = %s
|
||||
)`, deptAlias, role.RoleID, deptAlias, role.RoleID)
|
||||
conditions = append(conditions, sql)
|
||||
}
|
||||
|
||||
if constants.ROLE_SCOPE_DEPT == dataScope {
|
||||
sql := fmt.Sprintf("%s.dept_id = %s", deptAlias, userInfo.DeptID)
|
||||
conditions = append(conditions, sql)
|
||||
}
|
||||
|
||||
if constants.ROLE_SCOPE_DEPT_CHILD == dataScope {
|
||||
sql := fmt.Sprintf("%s.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = %s OR find_in_set(%s, ancestors ) )", deptAlias, userInfo.DeptID, userInfo.DeptID)
|
||||
conditions = append(conditions, sql)
|
||||
}
|
||||
|
||||
if constants.ROLE_SCOPE_SELF == dataScope {
|
||||
if userAlias == "" {
|
||||
sql := fmt.Sprintf("%s.dept_id = %s", deptAlias, userInfo.DeptID)
|
||||
conditions = append(conditions, sql)
|
||||
} else {
|
||||
sql := fmt.Sprintf("%s.user_id = %s", userAlias, userInfo.UserID)
|
||||
conditions = append(conditions, sql)
|
||||
}
|
||||
}
|
||||
|
||||
// 记录角色范围
|
||||
scopeKeys = append(scopeKeys, dataScope)
|
||||
}
|
||||
|
||||
// 构建查询条件语句
|
||||
if len(conditions) > 0 {
|
||||
dataScopeSQL = fmt.Sprintf(" ( %s ) ", strings.Join(conditions, " OR "))
|
||||
}
|
||||
return dataScopeSQL
|
||||
}
|
||||
106
src/framework/reqctx/context.go
Normal file
106
src/framework/reqctx/context.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package reqctx
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"be.ems/src/framework/constants"
|
||||
)
|
||||
|
||||
// QueryMap Query参数转换Map
|
||||
func QueryMap(c *gin.Context) map[string]string {
|
||||
queryValues := c.Request.URL.Query()
|
||||
queryParams := make(map[string]string, len(queryValues))
|
||||
for key, values := range queryValues {
|
||||
queryParams[key] = values[0]
|
||||
}
|
||||
return queryParams
|
||||
}
|
||||
|
||||
// BodyJSONMap JSON参数转换Map
|
||||
func BodyJSONMap(c *gin.Context) map[string]any {
|
||||
params := make(map[string]any, 0)
|
||||
c.ShouldBindBodyWithJSON(¶ms)
|
||||
return params
|
||||
}
|
||||
|
||||
// RequestParamsMap 请求参数转换Map
|
||||
func RequestParamsMap(c *gin.Context) map[string]any {
|
||||
params := make(map[string]any, 0)
|
||||
// json
|
||||
if strings.HasPrefix(c.ContentType(), "application/json") {
|
||||
c.ShouldBindBodyWithJSON(¶ms)
|
||||
}
|
||||
|
||||
// 表单
|
||||
formParams := c.Request.PostForm
|
||||
for key, value := range formParams {
|
||||
if _, ok := params[key]; !ok {
|
||||
params[key] = value[0]
|
||||
}
|
||||
}
|
||||
|
||||
// 查询
|
||||
queryParams := c.Request.URL.Query()
|
||||
for key, value := range queryParams {
|
||||
if _, ok := params[key]; !ok {
|
||||
params[key] = value[0]
|
||||
}
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
// Authorization 解析请求头
|
||||
func Authorization(c *gin.Context) string {
|
||||
// Query请求查询
|
||||
if authQuery, ok := c.GetQuery(constants.ACCESS_TOKEN); ok && authQuery != "" {
|
||||
return authQuery
|
||||
}
|
||||
// Header请求头
|
||||
if authHeader := c.GetHeader(constants.ACCESS_TOKEN); authHeader != "" {
|
||||
return authHeader
|
||||
}
|
||||
|
||||
// Query请求查询
|
||||
if authQuery, ok := c.GetQuery(constants.ACCESS_TOKEN_QUERY); ok && authQuery != "" {
|
||||
return authQuery
|
||||
}
|
||||
// Header请求头
|
||||
authHeader := c.GetHeader(constants.HEADER_KEY)
|
||||
if authHeader == "" {
|
||||
return ""
|
||||
}
|
||||
// 拆分 Authorization 请求头,提取 JWT 令牌部分
|
||||
arr := strings.SplitN(authHeader, constants.HEADER_PREFIX, 2)
|
||||
if len(arr) < 2 {
|
||||
return ""
|
||||
}
|
||||
return arr[1]
|
||||
}
|
||||
|
||||
// AcceptLanguage 解析客户端接收语言 zh:中文 en: 英文
|
||||
func AcceptLanguage(c *gin.Context) string {
|
||||
preferredLanguage := language.English
|
||||
|
||||
// Query请求查询
|
||||
if v, ok := c.GetQuery("language"); ok && v != "" {
|
||||
tags, _, _ := language.ParseAcceptLanguage(v)
|
||||
if len(tags) > 0 {
|
||||
preferredLanguage = tags[0]
|
||||
}
|
||||
}
|
||||
// Header请求头
|
||||
if v := c.GetHeader("Accept-Language"); v != "" {
|
||||
tags, _, _ := language.ParseAcceptLanguage(v)
|
||||
if len(tags) > 0 {
|
||||
preferredLanguage = tags[0]
|
||||
}
|
||||
}
|
||||
|
||||
// 只取前缀
|
||||
lang := preferredLanguage.String()
|
||||
arr := strings.Split(lang, "-")
|
||||
return arr[0]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user