perf: 更新UDM签约数据表,同步数据支持MICO和RAT操作修改

This commit is contained in:
TsMask
2024-10-12 15:26:55 +08:00
parent b5e7317ee7
commit 5dd0ea9143
9 changed files with 311 additions and 230 deletions

View File

@@ -3,32 +3,40 @@
-- --
DROP TABLE IF EXISTS `u_sub_user`; DROP TABLE IF EXISTS `u_sub_user`;
CREATE TABLE `u_sub_user` ( CREATE TABLE `u_sub_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID', `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码', `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识', `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'SubUeAMBRTemp', `am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'SubSNSSAITemp', `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
`rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR', `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
`arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'forbiddenAreasTemp', `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RAT 0x00:VIRTUAL 0x01:WLAN 0x02:EUTRA 0x03:NR',
`sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'serviceAreaRestrictTemp', `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData AreaForbidden',
`cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'cnType EPC|5GC', `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData serviceAreaRestrictTemp',
`cn_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData CNType 0x00:EPC和5GC 0x01:5GC 0x02:EPC 0x03:EPC+5GC',
`rfsp_index` varchar(50) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RfspIndex',
`reg_timer` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RegTimer',
`ue_usage_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData UEUsageType',
`active_time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData ActiveTime',
`mico` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData MICO',
`odb_ps` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData ODB_PS 0-all,1-hplmn,2-vplmn',
`group_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData GroupId',
`eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat',
`eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat epsFlag',
`eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat epsOdb',
`hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat hplmnOdb',
`ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat Ard',
`epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat Epstpl',
`context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat ContextId',
`apn_mum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat apnNum',
`apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat apnContext',
`static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat staticIp 指给4G UE分配的静态IP没有可不带此字段名',
`sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smData', `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smData',
`smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel', `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel',
`eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Eps',
`eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'epsFlag',
`eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'epsOdb',
`hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'hplmnOdb',
`ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Ard',
`epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Epstpl',
`context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ContextId',
`apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'apnContext',
`static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP没有可不带此字段名',
`cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG', `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_ne唯一索引' UNIQUE KEY `imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_ne唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM签约用户'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM签约用户';
-- Dump completed on 2024-03-06 17:26:59 -- Dump completed on 2024-10-12 15:26:59

View File

@@ -2,53 +2,68 @@
-- Table structure for table `u_sub_user` -- Table structure for table `u_sub_user`
-- --
-- DROP TABLE IF EXISTS `u_sub_user`; -- DROP TABLE IF EXISTS `u_sub_user`;
CREATE TABLE IF NOT EXISTS `u_sub_user` ( CREATE TABLE `u_sub_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID', `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码', `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识', `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'SubUeAMBRTemp', `am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'SubSNSSAITemp', `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
`rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR', `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
`arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'forbiddenAreasTemp', `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RAT 0x00:VIRTUAL 0x01:WLAN 0x02:EUTRA 0x03:NR',
`sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'serviceAreaRestrictTemp', `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData AreaForbidden',
`cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'cnType EPC|5GC', `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData serviceAreaRestrictTemp',
`cn_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData CNType 0x00:EPC和5GC 0x01:5GC 0x02:EPC 0x03:EPC+5GC',
`rfsp_index` varchar(50) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RfspIndex',
`reg_timer` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData RegTimer',
`ue_usage_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData UEUsageType',
`active_time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData ActiveTime',
`mico` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData MICO',
`odb_ps` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData ODB_PS 0-all,1-hplmn,2-vplmn',
`group_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData GroupId',
`eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat',
`eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat epsFlag',
`eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat epsOdb',
`hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat hplmnOdb',
`ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat Ard',
`epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat Epstpl',
`context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat ContextId',
`apn_mum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat apnNum',
`apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat apnContext',
`static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'EpsDat staticIp 指给4G UE分配的静态IP没有可不带此字段名',
`sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smData', `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smData',
`smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel', `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel',
`eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Eps',
`eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'epsFlag',
`eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'epsOdb',
`hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'hplmnOdb',
`ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Ard',
`epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Epstpl',
`context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ContextId',
`apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'apnContext',
`static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP没有可不带此字段名',
`cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG', `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_ne唯一索引' UNIQUE KEY `imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_ne唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM签约用户'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM签约用户';
-- Dump completed on 2024-03-06 17:26:59 -- Dump completed on 2024-10-12 15:26:59
ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'CAG' AFTER `static_ip`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData' AFTER `ne_id`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `cn_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData CNType 0x00:EPC和5GC 0x01:5GC 0x02:EPC 0x03:EPC+5GC' AFTER `sar`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户电话号码' AFTER `imsi`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `rfsp_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData RfspIndex' AFTER `cn_type`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `msisdn`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `reg_timer` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData RegTimer' AFTER `rfsp_index`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubUeAMBRTemp' AFTER `ne_id`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `ue_usage_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData UEUsageType' AFTER `reg_timer`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubSNSSAITemp' AFTER `ambr`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `active_time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData ActiveTime' AFTER `ue_usage_type`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR' AFTER `nssai`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `mico` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData MICO' AFTER `active_time`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'forbiddenAreasTemp' AFTER `rat`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `odb_ps` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData ODB_PS 0-all,1-hplmn,2-vplmn' AFTER `mico`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'serviceAreaRestrictTemp' AFTER `arfb`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `group_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData GroupId' AFTER `odb_ps`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'cnType EPC|5GC' AFTER `sar`; ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `apn_mum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat apnNum' AFTER `context_id`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smData' AFTER `cn`; ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData SubUeAMBRTemp' AFTER `am_dat`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData SubSNSSAITemp' AFTER `ambr`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData RAT 0x00:VIRTUAL 0x01:WLAN 0x02:EUTRA 0x03:NR' AFTER `nssai`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData AreaForbidden' AFTER `rat`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AmData serviceAreaRestrictTemp' AFTER `arfb`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat' AFTER `group_id`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat epsFlag' AFTER `eps_dat`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat epsOdb' AFTER `eps_flag`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat hplmnOdb' AFTER `eps_odb`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat Ard' AFTER `hplmn_odb`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat Epstpl' AFTER `ard`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat ContextId' AFTER `epstpl`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat apnContext' AFTER `apn_mum`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'EpsDat staticIp 指给4G UE分配的静态IP没有可不带此字段名' AFTER `apn_context`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smData' AFTER `static_ip`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smfSel' AFTER `sm_data`; ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smfSel' AFTER `sm_data`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Eps' AFTER `smf_sel`; ALTER TABLE `u_sub_user` DROP COLUMN IF EXISTS `cn`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsFlag' AFTER `eps_dat`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsOdb' AFTER `eps_flag`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'hplmnOdb' AFTER `eps_odb`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Ard' AFTER `hplmn_odb`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Epstpl' AFTER `ard`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ContextId' AFTER `epstpl`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'apnContext' AFTER `context_id`;
ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP没有可不带此字段名' AFTER `apn_context`;

View File

@@ -142,7 +142,8 @@ func (s *UDMAuthController) Add(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("add authdat:imsi=%s,ki=%s,amf=%s,algo=%s,opc=%s", body.IMSI, body.Ki, body.Amf, body.AlgoIndex, body.Opc) cmd := fmt.Sprintf("add authdat:imsi=%s,", body.IMSI)
cmd += s.udmAuthService.ParseCommandParams(body)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))
@@ -191,7 +192,8 @@ func (s *UDMAuthController) Adds(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("baa authdat:start_imsi=%s,sub_num=%s,ki=%s,amf=%s,algo=%s,opc=%s", body.IMSI, num, body.Ki, body.Amf, body.AlgoIndex, body.Opc) cmd := fmt.Sprintf("baa authdat:start_imsi=%s,sub_num=%s,", body.IMSI, num)
cmd += s.udmAuthService.ParseCommandParams(body)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))
@@ -239,20 +241,8 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("mod authdata:imsi=%s", body.IMSI) cmd := fmt.Sprintf("mod authdata:imsi=%s,", body.IMSI)
// 修改的参数名称 cmd += s.udmAuthService.ParseCommandParams(body)
if body.Ki != "" {
cmd += fmt.Sprintf(",ki=%s", body.Ki)
}
if body.Amf != "" {
cmd += fmt.Sprintf(",amf=%s", body.Amf)
}
if body.AlgoIndex != "" {
cmd += fmt.Sprintf(",algo=%s", body.AlgoIndex)
}
if body.Opc != "" {
cmd += fmt.Sprintf(",opc=%s", body.Opc)
}
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))

View File

@@ -141,12 +141,8 @@ func (s *UDMSubController) Add(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("add udmuser:imsi=%s,msisdn=%s,ambr=%s,nssai=%s,arfb=%s,sar=%s,rat=%s,cn=%s,smf_sel=%s,sm_data=%s,eps_flag=%s,eps_odb=%s,hplmn_odb=%s,ard=%s,epstpl=%s,context_id=%s,apn_context=%s,cag=%s", cmd := fmt.Sprintf("add udmuser:imsi=%s,", body.IMSI)
body.IMSI, body.MSISDN, body.Ambr, body.Nssai, body.Arfb, body.Sar, body.Rat, body.Cn, body.SmfSel, body.SmData, body.EpsFlag, body.EpsOdb, body.HplmnOdb, body.Ard, body.Epstpl, body.ContextId, body.ApnContext, body.Cag) cmd += s.udmSubService.ParseCommandParams(body)
// static_ip指给4G UE分配的静态IP没有可不带此字段名批量添加IP会自动递增
if body.StaticIp != "" {
cmd += fmt.Sprintf(",static_ip=%s", body.StaticIp)
}
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))
@@ -196,8 +192,8 @@ func (s *UDMSubController) Adds(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("baa udmuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,ambr=%s,nssai=%s,arfb=%s,sar=%s,rat=%s,cn=%s,smf_sel=%s,sm_data=%s,eps_flag=%s,eps_odb=%s,hplmn_odb=%s,ard=%s,epstpl=%s,context_id=%s,apn_context=%s,cag=%s", cmd := fmt.Sprintf("baa udmuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,", body.IMSI, body.MSISDN, num)
body.IMSI, body.MSISDN, num, body.Ambr, body.Nssai, body.Arfb, body.Sar, body.Rat, body.Cn, body.SmfSel, body.SmData, body.EpsFlag, body.EpsOdb, body.HplmnOdb, body.Ard, body.Epstpl, body.ContextId, body.ApnContext, body.Cag) cmd += s.udmSubService.ParseCommandParams(body)
// static_ip指给4G UE分配的静态IP没有可不带此字段名批量添加IP会自动递增 // static_ip指给4G UE分配的静态IP没有可不带此字段名批量添加IP会自动递增
if body.StaticIp != "" { if body.StaticIp != "" {
cmd += fmt.Sprintf(",static_ip=%s", body.StaticIp) cmd += fmt.Sprintf(",static_ip=%s", body.StaticIp)
@@ -249,65 +245,8 @@ func (s *UDMSubController) Edit(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("mod udmuser:imsi=%s", body.IMSI) cmd := fmt.Sprintf("mod udmuser:imsi=%s,", body.IMSI)
// 修改的参数名称 cmd += s.udmSubService.ParseCommandParams(body)
if body.MSISDN != "" {
cmd += fmt.Sprintf(",msisdn=%s", body.MSISDN)
}
if body.Ambr != "" {
cmd += fmt.Sprintf(",ambr=%s", body.Ambr)
}
if body.Nssai != "" {
cmd += fmt.Sprintf(",nssai=%s", body.Nssai)
}
if body.Arfb != "" {
cmd += fmt.Sprintf(",arfb=%s", body.Arfb)
}
if body.Sar != "" {
cmd += fmt.Sprintf(",sar=%s", body.Sar)
}
if body.Rat != "" {
cmd += fmt.Sprintf(",rat=%s", body.Rat)
}
if body.Cn != "" {
cmd += fmt.Sprintf(",cn=%s", body.Cn)
}
if body.SmfSel != "" {
cmd += fmt.Sprintf(",smf_sel=%s", body.SmfSel)
}
if body.SmData != "" {
cmd += fmt.Sprintf(",sm_data=%s", body.SmData)
}
if body.EpsDat != "" {
cmd += fmt.Sprintf(",eps_dat=%s", body.EpsDat)
}
if body.EpsFlag != "" {
cmd += fmt.Sprintf(",eps_flag=%s", body.EpsFlag)
}
if body.EpsOdb != "" {
cmd += fmt.Sprintf(",eps_odb=%s", body.EpsOdb)
}
if body.HplmnOdb != "" {
cmd += fmt.Sprintf(",hplmn_odb=%s", body.HplmnOdb)
}
if body.Epstpl != "" {
cmd += fmt.Sprintf(",epstpl=%s", body.Epstpl)
}
if body.Ard != "" {
cmd += fmt.Sprintf(",ard=%s", body.Ard)
}
if body.ContextId != "" {
cmd += fmt.Sprintf(",context_id=%s", body.ContextId)
}
if body.ApnContext != "" {
cmd += fmt.Sprintf(",apn_context=%s", body.ApnContext)
}
if body.Cag != "" {
cmd += fmt.Sprintf(",cag=%s", body.Cag)
}
if body.StaticIp != "" {
cmd += fmt.Sprintf(",static_ip=%s", body.StaticIp)
}
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, result.ErrMsg(err.Error())) c.JSON(200, result.ErrMsg(err.Error()))
@@ -450,10 +389,10 @@ func (s *UDMSubController) Export(c *gin.Context) {
if body.Type == "csv" { if body.Type == "csv" {
// 转换数据 // 转换数据
data := [][]string{} data := [][]string{}
data = append(data, []string{"imsi", "msisdn", "ambr", "nssai", "arfb", "sar", "rat", "cn", "smf_sel", "sm_dat", "eps_dat"}) data = append(data, []string{"IMSI", "MSISDN", "UeAmbrTpl", "NssaiTpl", "AreaForbiddenTpl", "ServiceAreaRestrictionTpl", "RatRestrictions", "CnTypeRestrictions", "SmfSel", "SmData", "EPSDat"})
for _, v := range list { for _, v := range list {
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp) epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
data = append(data, []string{v.IMSI, v.MSISDN, v.Ambr, v.Nssai, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, epsDat}) data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat})
} }
// 输出到文件 // 输出到文件
err = file.WriterFileCSV(data, filePath) err = file.WriterFileCSV(data, filePath)
@@ -468,7 +407,7 @@ func (s *UDMSubController) Export(c *gin.Context) {
data := [][]string{} data := [][]string{}
for _, v := range list { for _, v := range list {
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp) epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
data = append(data, []string{v.IMSI, v.MSISDN, v.Ambr, v.Nssai, v.Arfb, v.Sar, v.Rat, v.Cn, v.SmfSel, v.SmData, epsDat}) data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat})
} }
// 输出到文件 // 输出到文件
err = file.WriterFileTXT(data, ",", filePath) err = file.WriterFileTXT(data, ",", filePath)

View File

@@ -3,13 +3,13 @@ package model
// UDMAuthUser UDM鉴权用户 u_auth_user // UDMAuthUser UDM鉴权用户 u_auth_user
type UDMAuthUser struct { type UDMAuthUser struct {
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 默认ID ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 默认ID
IMSI string `json:"imsi" gorm:"imsi"` // SIM卡/USIM卡ID IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
NeId string `json:"neId" gorm:"ne_id"` // UDM网元标识 NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
Amf string `json:"amf" gorm:"amf"` // AMF Amf string `json:"amf" gorm:"column:amf"` // AMF
Status string `json:"status" gorm:"status"` // 状态 Status string `json:"status" gorm:"column:status"` // 状态
Ki string `json:"ki" gorm:"ki"` // ki Ki string `json:"ki" gorm:"column:ki"` // ki
AlgoIndex string `json:"algoIndex" gorm:"algo_index"` // algoIndex AlgoIndex string `json:"algoIndex" gorm:"column:algo_index"` // algoIndex
Opc string `json:"opc" gorm:"opc"` // OPC Opc string `json:"opc" gorm:"column:opc"` // OPC
} }
// TableName 表名称 // TableName 表名称

View File

@@ -2,28 +2,40 @@ package model
// UDMSubUser UDM签约用户 u_sub_user // UDMSubUser UDM签约用户 u_sub_user
type UDMSubUser struct { type UDMSubUser struct {
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
IMSI string `json:"imsi" gorm:"imsi"` // SIM卡/USIM卡ID IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
MSISDN string `json:"msisdn" gorm:"msisdn"` // 用户电话号码 MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码
NeId string `json:"neId" gorm:"ne_id"` // UDM网元标识 NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
Ambr string `json:"ambr" gorm:"ambr"` // SubUeAMBRTemp
Nssai string `json:"nssai" gorm:"nssai"` // SubSNSSAITemp AmDat string `json:"amDat" gorm:"column:am_dat"` // AmData
Rat string `json:"rat" gorm:"rat"` // rat VIRTUAL|WLAN|EUTRA|NR UeAmbrTpl string `json:"ambr" gorm:"column:ambr"` // AmData SubUeAMBRTemp
Arfb string `json:"arfb" gorm:"arfb"` // forbiddenAreasTemp NssaiTpl string `json:"nssai" gorm:"column:nssai"` // AmData SubSNSSAITemp
Sar string `json:"sar" gorm:"sar"` // serviceAreaRestrictTemp RatRestrictions string `json:"rat" gorm:"column:rat"` // AmData RAT 0x00:VIRTUAL 0x01:WLAN 0x02:EUTRA 0x03:NR
Cn string `json:"cn" gorm:"cn"` // cnType EPC|5GC AreaForbiddenTpl string `json:"arfb" gorm:"column:arfb"` // AmData AreaForbidden
SmData string `json:"smData" gorm:"sm_data"` // smData ServiceAreaRestrictionTpl string `json:"sar" gorm:"column:sar"` // AmData serviceAreaRestrictTemp
SmfSel string `json:"smfSel" gorm:"smf_sel"` // smfSel CnTypeRestrictions string `json:"cnType" gorm:"column:cn_type"` // AmData CNType 0x00:EPC和5GC 0x01:5GC 0x02:EPC 0x03:EPC+5GC
EpsDat string `json:"epsDat" gorm:"eps_dat"` // Eps RfspIndex string `json:"rfspIndex" gorm:"column:rfsp_index"` // AmData RfspIndex
EpsFlag string `json:"epsFlag" gorm:"eps_flag"` // epsFlag SubsRegTime string `json:"regTimer" gorm:"column:reg_timer"` // AmData RegTimer
EpsOdb string `json:"epsOdb" gorm:"eps_odb"` // epsOdb UeUsageType string `json:"ueUsageType" gorm:"column:ue_usage_type"` // AmData UEUsageType
HplmnOdb string `json:"hplmnOdb" gorm:"hplmn_odb"` // hplmnOdb ActiveTime string `json:"activeTime" gorm:"column:active_time"` // AmData ActiveTime
Ard string `json:"ard" gorm:"ard"` // Ard MicoAllowed string `json:"mico" gorm:"column:mico"` // AmData MICO
Epstpl string `json:"epstpl" gorm:"epstpl"` // Epstpl OdbPs string `json:"odbPs" gorm:"column:odb_ps"` // AmData ODB_PS 0-all,1-hplmn,2-vplmn
ContextId string `json:"contextId" gorm:"context_id"` // ContextId GroupId string `json:"groupId" gorm:"column:group_id"` // AmData GroupId
ApnContext string `json:"apnContext" gorm:"apn_context"` // apnContext
StaticIp string `json:"staticIp" gorm:"static_ip"` // staticIpstatic_ip指给4G UE分配的静态IP没有可不带此字段名 EpsDat string `json:"epsDat" gorm:"column:eps_dat"` // EpsDat
Cag string `json:"cag" gorm:"cag"` // CAG EpsFlag string `json:"epsFlag" gorm:"column:eps_flag"` // EpsDat epsFlag
EpsOdb string `json:"epsOdb" gorm:"column:eps_odb"` // EpsDat epsOdb
HplmnOdb string `json:"hplmnOdb" gorm:"column:hplmn_odb"` // EpsDat hplmnOdb
Ard string `json:"ard" gorm:"column:ard"` // EpsDat Ard
Epstpl string `json:"epstpl" gorm:"column:epstpl"` // EpsDat Epstpl
ContextId string `json:"contextId" gorm:"column:context_id"` // EpsDat ContextId
ApnNum string `json:"apnNum" gorm:"column:apn_mum"` // EpsDat apnNum
ApnContext string `json:"apnContext" gorm:"column:apn_context"` // EpsDat apnContext
StaticIp string `json:"staticIp" gorm:"column:static_ip"` // EpsDat staticIp 指给4G UE分配的静态IP没有可不带此字段名
SmData string `json:"smData" gorm:"column:sm_data"` // smData
SmfSel string `json:"smfSel" gorm:"column:smf_sel"` // smfSel
Cag string `json:"cag" gorm:"column:cag"` // CAG
// ====== 非数据库字段属性 ====== // ====== 非数据库字段属性 ======

View File

@@ -14,23 +14,33 @@ import (
// 实例化数据层 UDMSubUser 结构体 // 实例化数据层 UDMSubUser 结构体
var NewUDMSub = &UDMSubUser{ var NewUDMSub = &UDMSubUser{
selectSql: `select selectSql: `select
id, imsi, msisdn, ne_id, ambr, nssai, rat, arfb, sar, cn, sm_data, smf_sel, id, imsi, msisdn, ne_id,
eps_dat, eps_flag, eps_odb, hplmn_odb, ard, epstpl, context_id, apn_context, static_ip, cag am_dat, ambr, nssai, rat, arfb, sar, cn_type, rfsp_index, reg_timer, ue_usage_type, active_time, mico, odb_ps, group_id,
eps_dat, eps_flag, eps_odb, hplmn_odb, ard, epstpl, context_id, apn_mum, apn_context, static_ip,
sm_data, smf_sel, cag
from u_sub_user`, from u_sub_user`,
resultMap: map[string]string{ resultMap: map[string]string{
"id": "ID", "id": "ID",
"imsi": "IMSI", "imsi": "IMSI",
"msisdn": "MSISDN", "msisdn": "MSISDN",
"ne_id": "NeId", "ne_id": "NeId",
"ambr": "Ambr",
"nssai": "Nssai", "am_dat": "AmDat",
"rat": "Rat", "ambr": "UeAmbrTpl",
"arfb": "Arfb", "nssai": "NssaiTpl",
"sar": "Sar", "rat": "RatRestrictions",
"cn": "Cn", "arfb": "AreaForbiddenTpl",
"sm_data": "SmData", "sar": "ServiceAreaRestrictionTpl",
"smf_sel": "SmfSel", "cn_type": "CnTypeRestrictions",
"rfsp_index": "RfspIndex",
"reg_timer": "SubsRegTime",
"ue_usage_type": "UeUsageType",
"active_time": "ActiveTime",
"mico": "MicoAllowed",
"odb_ps": "OdbPs",
"group_id": "GroupId",
"eps_dat": "EpsDat", "eps_dat": "EpsDat",
"eps_flag": "EpsFlag", "eps_flag": "EpsFlag",
"eps_odb": "EpsOdb", "eps_odb": "EpsOdb",
@@ -38,9 +48,13 @@ var NewUDMSub = &UDMSubUser{
"ard": "Ard", "ard": "Ard",
"epstpl": "Epstpl", "epstpl": "Epstpl",
"context_id": "ContextId", "context_id": "ContextId",
"apn_mum": "ApnNum",
"apn_context": "ApnContext", "apn_context": "ApnContext",
"static_ip": "StaticIp", "static_ip": "StaticIp",
"cag": "Cag",
"sm_data": "SmData",
"smf_sel": "SmfSel",
"cag": "Cag",
}, },
} }

View File

@@ -69,21 +69,16 @@ func (r *UDMAuthUser) ResetData(neId string) int64 {
// ParseInfo 解析单个用户imsi鉴权信息 data从命令MML得到的结果 // ParseInfo 解析单个用户imsi鉴权信息 data从命令MML得到的结果
func (r *UDMAuthUser) ParseInfo(imsi, neId string, data map[string]string) model.UDMAuthUser { func (r *UDMAuthUser) ParseInfo(imsi, neId string, data map[string]string) model.UDMAuthUser {
u := model.UDMAuthUser{ u := r.udmAuthRepository.SelectByIMSIAndNeID(imsi, neId)
IMSI: imsi,
NeId: neId,
Amf: data["amf"],
Status: "1",
Ki: data["ki"],
AlgoIndex: data["algo"],
Opc: data["opc"],
}
// 补充用户ID用于更新 // 用于更新
auth := r.udmAuthRepository.SelectByIMSIAndNeID(imsi, neId) u.IMSI = imsi
if auth.IMSI == imsi { u.NeId = neId
u.ID = auth.ID u.Amf = data["amf"]
} u.Ki = data["ki"]
u.AlgoIndex = data["algo"]
u.Opc = data["opc"]
u.Status = "1"
return u return u
} }
@@ -170,3 +165,22 @@ func (r *UDMAuthUser) LoadData(neId, imsi, num string) {
r.udmAuthRepository.Inserts(arr) r.udmAuthRepository.Inserts(arr)
} }
} }
// ParseCommandParams 解析数据组成命令参数 ki=xx,xx=xx,...
func (r *UDMAuthUser) ParseCommandParams(item model.UDMAuthUser) string {
var conditions []string
if item.Ki != "" {
conditions = append(conditions, fmt.Sprintf("ki=%s", item.Ki))
}
if item.Amf != "" {
conditions = append(conditions, fmt.Sprintf("amf=%s", item.Amf))
}
if item.AlgoIndex != "" {
conditions = append(conditions, fmt.Sprintf("algo=%s", item.AlgoIndex))
}
if item.Opc != "" {
conditions = append(conditions, fmt.Sprintf("opc=%s", item.Opc))
}
return strings.Join(conditions, ",")
}

View File

@@ -50,12 +50,29 @@ func (r *UDMSubUser) dataByRedis(imsi, neId string) []model.UDMSubUser {
// def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,- // def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,-
if v, ok := m["am-dat"]; ok { if v, ok := m["am-dat"]; ok {
arr := strings.Split(v, ",") arr := strings.Split(v, ",")
a.Ambr = arr[0] a.AmDat = v
a.Nssai = arr[1] a.UeAmbrTpl = arr[0]
a.Rat = arr[2] a.NssaiTpl = arr[1]
a.Arfb = arr[3] a.RatRestrictions = arr[2]
a.Sar = arr[4] a.AreaForbiddenTpl = arr[3]
a.Cn = arr[5] a.ServiceAreaRestrictionTpl = arr[4]
a.CnTypeRestrictions = arr[5]
a.RfspIndex = arr[6]
a.SubsRegTime = arr[7]
a.UeUsageType = arr[8]
a.ActiveTime = arr[9]
a.MicoAllowed = "0" // arr[10]
a.OdbPs = "1" // arr[11]
a.GroupId = "-" // arr[12]
if len(arr) > 10 {
a.MicoAllowed = arr[10]
}
if len(arr) > 11 {
a.OdbPs = arr[11]
}
if len(arr) > 12 && arr[12] != "-" {
a.GroupId = arr[12]
}
} }
// 1,64,24,65,def_eps,1,2,010200000000,- // 1,64,24,65,def_eps,1,2,010200000000,-
if v, ok := m["eps-dat"]; ok { if v, ok := m["eps-dat"]; ok {
@@ -71,9 +88,11 @@ func (r *UDMSubUser) dataByRedis(imsi, neId string) []model.UDMSubUser {
a.Ard = arr[3] a.Ard = arr[3]
a.Epstpl = arr[4] a.Epstpl = arr[4]
a.ContextId = arr[5] a.ContextId = arr[5]
a.ApnNum = arr[6] // 导入和导出不用
a.ApnContext = arr[7] a.ApnContext = arr[7]
// [6] 是不要的,导入和导出不用 if len(arr) >= 9 {
a.StaticIp = arr[8] a.StaticIp = arr[8]
}
} }
arr = append(arr, a) arr = append(arr, a)
@@ -91,27 +110,30 @@ func (r *UDMSubUser) ResetData(neId string) int64 {
// ParseInfo 解析单个用户imsi签约信息 data从命令MML得到的结果 // ParseInfo 解析单个用户imsi签约信息 data从命令MML得到的结果
func (r *UDMSubUser) ParseInfo(imsi, neId string, data map[string]string) model.UDMSubUser { func (r *UDMSubUser) ParseInfo(imsi, neId string, data map[string]string) model.UDMSubUser {
cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) u := r.udmSubRepository.SelectByIMSIAndNeID(imsi, neId)
rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64)
cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) // 0x03(EPC|5GC)
rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) // 0x00(VIRTUAL|WLAN|EUTRA|NR)
msisdn := data["MSISDN"] msisdn := data["MSISDN"]
if imsMsisdnLen := strings.Index(msisdn, ","); imsMsisdnLen != -1 { if imsMsisdnLen := strings.Index(msisdn, ","); imsMsisdnLen != -1 {
msisdn = msisdn[:imsMsisdnLen] msisdn = msisdn[:imsMsisdnLen]
} }
u := model.UDMSubUser{ // 用于更新
IMSI: imsi, u.IMSI = imsi
MSISDN: msisdn, u.MSISDN = msisdn
NeId: neId, u.NeId = neId
Ambr: data["AMBR"], u.UeAmbrTpl = data["AMBR"]
Arfb: data["AreaForbidden"], u.NssaiTpl = data["NSSAI"]
Cn: fmt.Sprint(cnType), u.AreaForbiddenTpl = data["AreaForbidden"]
SmData: data["SM-Data(snssai+dnn[1..n])"], u.ServiceAreaRestrictionTpl = data["ServiceAreaRestriction"]
Sar: data["ServiceAreaRestriction"], u.CnTypeRestrictions = fmt.Sprint(cnType)
Nssai: data["NSSAI"], u.RatRestrictions = fmt.Sprint(rat)
SmfSel: data["Smf-Selection"], u.MicoAllowed = data["MICO"]
Cag: data["cag"], u.SmData = data["SM-Data(snssai+dnn[1..n])"]
Rat: fmt.Sprint(rat), u.SmfSel = data["Smf-Selection"]
} u.Cag = data["cag"]
// 1,64,24,65,def_eps,1,2,010200000000,- // 1,64,24,65,def_eps,1,2,010200000000,-
if v, ok := data["EPS-Data"]; ok { if v, ok := data["EPS-Data"]; ok {
u.EpsDat = v u.EpsDat = v
@@ -122,16 +144,11 @@ func (r *UDMSubUser) ParseInfo(imsi, neId string, data map[string]string) model.
u.Ard = arr[3] u.Ard = arr[3]
u.Epstpl = arr[4] u.Epstpl = arr[4]
u.ContextId = arr[5] u.ContextId = arr[5]
u.ApnNum = arr[6] // 导入和导出不用
u.ApnContext = arr[7] u.ApnContext = arr[7]
// [6] 是不要的,导入和导出不用
u.StaticIp = arr[8] u.StaticIp = arr[8]
} }
// 补充用户ID用于更新
sub := r.udmSubRepository.SelectByIMSIAndNeID(imsi, neId)
if sub.IMSI == imsi {
u.ID = sub.ID
}
// 补充用户拓展信息 // 补充用户拓展信息
info := r.udmUserInfoRepository.SelectByIMSIAndNeID(imsi, neId) info := r.udmUserInfoRepository.SelectByIMSIAndNeID(imsi, neId)
if info.IMSI == imsi { if info.IMSI == imsi {
@@ -252,3 +269,75 @@ func (r *UDMSubUser) LoadData(neId, imsi, num, remark string) {
} }
} }
} }
// ParseCommandParams 解析数据组成命令参数 msisdn=xx,xx=xx,...
func (r *UDMSubUser) ParseCommandParams(item model.UDMSubUser) string {
var conditions []string
if item.MSISDN != "" {
conditions = append(conditions, fmt.Sprintf("msisdn=%s", item.MSISDN))
}
// AmData
if item.UeAmbrTpl != "" {
conditions = append(conditions, fmt.Sprintf("ambr=%s", item.UeAmbrTpl))
}
if item.NssaiTpl != "" {
conditions = append(conditions, fmt.Sprintf("nssai=%s", item.NssaiTpl))
}
if item.AreaForbiddenTpl != "" {
conditions = append(conditions, fmt.Sprintf("arfb=%s", item.AreaForbiddenTpl))
}
if item.ServiceAreaRestrictionTpl != "" {
conditions = append(conditions, fmt.Sprintf("sar=%s", item.ServiceAreaRestrictionTpl))
}
if item.RatRestrictions != "" {
conditions = append(conditions, fmt.Sprintf("rat=%s", item.RatRestrictions))
}
if item.CnTypeRestrictions != "" {
conditions = append(conditions, fmt.Sprintf("cn=%s", item.CnTypeRestrictions))
}
if item.MicoAllowed != "" {
conditions = append(conditions, fmt.Sprintf("mico=%s", item.MicoAllowed))
}
// EpsDat
// if item.EpsDat != "" {
// conditions = append(conditions, fmt.Sprintf("eps_dat=%s", item.EpsDat))
// }
if item.EpsFlag != "" {
conditions = append(conditions, fmt.Sprintf("eps_flag=%s", item.EpsFlag))
}
if item.EpsOdb != "" {
conditions = append(conditions, fmt.Sprintf("eps_odb=%s", item.EpsOdb))
}
if item.HplmnOdb != "" {
conditions = append(conditions, fmt.Sprintf("hplmn_odb=%s", item.HplmnOdb))
}
if item.Epstpl != "" {
conditions = append(conditions, fmt.Sprintf("epstpl=%s", item.Epstpl))
}
if item.Ard != "" {
conditions = append(conditions, fmt.Sprintf("ard=%s", item.Ard))
}
if item.ContextId != "" {
conditions = append(conditions, fmt.Sprintf("context_id=%s", item.ContextId))
}
if item.ApnContext != "" {
conditions = append(conditions, fmt.Sprintf("apn_context=%s", item.ApnContext))
}
if item.StaticIp != "" {
conditions = append(conditions, fmt.Sprintf("static_ip=%s", item.StaticIp))
}
// 其他
if item.SmfSel != "" {
conditions = append(conditions, fmt.Sprintf("smf_sel=%s", item.SmfSel))
}
if item.SmData != "" {
conditions = append(conditions, fmt.Sprintf("sm_data=%s", item.SmData))
}
if item.Cag != "" {
conditions = append(conditions, fmt.Sprintf("cag=%s", item.Cag))
}
return strings.Join(conditions, ",")
}