From 8d9215c033f03d54980d9acf8015cbfb05145a1f Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 23 Nov 2024 11:17:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AE=9E=E8=AE=AD?= =?UTF-8?q?=E6=95=99=E5=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/install/pt_ne_config_apply.sql | 20 ++++ database/install/pt_ne_config_data.sql | 96 ++++++++++++++++ database/install/pt_ne_config_data_log.sql | 23 ++++ database/install/sys_dict_data0.sql | 7 ++ database/install/sys_dict_data1_i18n_zh.sql | 48 ++++++++ database/install/sys_dict_data2_i18n_en.sql | 48 ++++++++ database/install/sys_dict_type.sql | 3 + database/install/sys_menu.sql | 4 + database/install/sys_post.sql | 6 +- database/install/sys_role.sql | 8 +- database/install/sys_role_menu.sql | 107 +++++------------- database/install/sys_user.sql | 9 +- src/app.go | 3 + .../excel/student_import_template_en.xlsx | Bin 0 -> 11077 bytes .../excel/student_import_template_zh.xlsx | Bin 0 -> 11094 bytes .../excel/user_import_template_en.xlsx | Bin 9513 -> 11289 bytes .../excel/user_import_template_zh.xlsx | Bin 9581 -> 11324 bytes src/modules/practical_training/README.md | 2 +- 18 files changed, 294 insertions(+), 90 deletions(-) create mode 100644 database/install/pt_ne_config_apply.sql create mode 100644 database/install/pt_ne_config_data.sql create mode 100644 database/install/pt_ne_config_data_log.sql create mode 100644 src/assets/template/excel/student_import_template_en.xlsx create mode 100644 src/assets/template/excel/student_import_template_zh.xlsx diff --git a/database/install/pt_ne_config_apply.sql b/database/install/pt_ne_config_apply.sql new file mode 100644 index 00000000..fe98628c --- /dev/null +++ b/database/install/pt_ne_config_apply.sql @@ -0,0 +1,20 @@ +-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Table structure for table `pt_ne_config_apply` +-- + +DROP TABLE IF EXISTS `pt_ne_config_apply`; +CREATE TABLE `pt_ne_config_apply` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `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 '更新时间', + `ne_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', + `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '应用状态 0申请 1撤回 2应用 3退回', + `back_info` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '退回信息', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_user_stub_ne_name` (`create_by`,`status`,`ne_type`) USING BTREE COMMENT '个人_状态_网元' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='实训教学_网元参数配置应用下发申请'; + +-- Dump completed on 2024-07-27 10:55:22 diff --git a/database/install/pt_ne_config_data.sql b/database/install/pt_ne_config_data.sql new file mode 100644 index 00000000..8a76d20e --- /dev/null +++ b/database/install/pt_ne_config_data.sql @@ -0,0 +1,96 @@ +-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Table structure for table `pt_ne_config_data` +-- + +DROP TABLE IF EXISTS `pt_ne_config_data`; +CREATE TABLE `pt_ne_config_data` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `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_general_ci DEFAULT NULL COMMENT '备注', + `stub_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '存根数据类型 0系统 1班级 2个人', + `ne_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', + `param_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '参数名', + `param_display` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数显示名', + `param_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数类型 list列表单层 array数组多层', + `param_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '参数数据', + `dept_id` bigint DEFAULT '0' COMMENT '部门班级ID 100系统', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_user_stub_ne_name` (`create_by`,`stub_type`,`ne_type`,`param_name`) USING BTREE COMMENT '个人_存根_网元_参数可选值' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='实训教学_网元参数配置数据信息'; + +INSERT INTO `pt_ne_config_data` VALUES (1, 'admin', 1721115330344, 'admin', 1722596226570, '', '0', 'AMF', 'system', 'System Config', 'list', '[{\"amfName\":\"AMF\",\"ausfUri\":\"http://172.60.5.130:8080\",\"cipheringAlgorithm\":0,\"defaultDnn\":\"internet\",\"dnnCorrectionEnabled\":false,\"integrityAlgorithm\":2,\"lmfUri\":\"http://172.16.5.200:8080\",\"nefUri\":\"http://172.16.5.210:8080\",\"nrfEnabled\":false,\"nrfUri\":\"http://172.60.5.180:8080\",\"pcfUri\":\"http://172.60.5.160:8080\",\"relativeCapacity\":255,\"sbiScheme\":0,\"sbiServerIp\":\"172.60.5.120\",\"sbiServerPort\":8080,\"smfUri\":\"http://172.60.5.150:8080\",\"t3502\":720,\"t3512\":3600,\"t3513\":2,\"t3522\":2,\"t3550\":2,\"t3555\":2,\"t3560\":2,\"t3565\":2,\"t3570\":2,\"udmUri\":\"http://172.60.5.140:8080\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (2, 'admin', 1721115333776, 'admin', 1722596226582, '', '0', 'AMF', 'association', 'TNL Association List', 'array', '[{\"index\":0,\"ngapIp\":\"192.168.5.60\",\"ngapSctpPort\":38412,\"weightFactor\":255}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (3, 'admin', 1721115335363, 'admin', 1722596226588, '', '0', 'AMF', 'guami', 'GUAMI List', 'array', '[{\"index\":0,\"plmnId\":\"00101\",\"pointer\":1,\"regionId\":1,\"setId\":1}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (4, 'admin', 1721115335515, 'admin', 1722596226592, '', '0', 'AMF', 'tai', 'TAI List', 'array', '[{\"index\":0,\"plmnId\":\"00101\",\"tac\":\"4388\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (5, 'admin', 1721115336497, 'admin', 1722596226595, '', '0', 'AMF', 'slice', 'Slice List', 'array', '[{\"index\":0,\"plmnId\":\"00101\",\"sd\":\"000001\",\"sst\":1}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (10, 'admin', 1722062503452, 'admin', 1722596269441, '', '0', 'AUSF', 'system', 'System', 'list', '[{\"enableNrf\":false,\"groupId\":\"ausfGroup001\",\"nrfUri\":\"http://172.60.5.180:8080\",\"scheme\":0,\"serviceIP\":\"172.60.5.130\",\"servicePort\":8080,\"udmUri\":\"http://172.60.5.140:8080\"}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (20, 'admin', 1722062508293, 'admin', 1722596273008, '', '0', 'UDM', 'system', 'System', 'list', '[{\"ausfIP\":\"172.60.5.130\",\"capacity\":4096,\"enableNrf\":false,\"fqdn\":\"udm.5gc.com\",\"gpsiRanges\":\"msisdn-69072000~msisdn-69072099\",\"groupId\":\"0\",\"nrfUri\":\"http://172.60.5.180:8080\",\"priority\":1,\"redisAddr\":\"172.60.5.140:6379\",\"redisLink\":0,\"scheme\":0,\"serviceIP\":\"172.60.5.140\",\"servicePort\":8080,\"supiRanges\":\"imsi-001010100080000~imsi-001010100080099\",\"supportedPlmn1\":\"00101\",\"supportedPlmn2\":\"\",\"supportedPlmn3\":\"\",\"supportedPlmn4\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (21, 'admin', 1722062508301, 'admin', 1722596273012, '', '0', 'UDM', 'subsUEAmbr', 'Subs UE AMBR', 'array', '[{\"downlink\":\"20 Gbps\",\"index\":1,\"name\":\"def_ambr\",\"uplink\":\"10 Gbps\"},{\"downlink\":\"2 Gbps\",\"index\":2,\"name\":\"lab_ambr\",\"uplink\":\"1 Gbps\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (22, 'admin', 1722062508337, 'admin', 1722596273018, '', '0', 'UDM', 'subsNssais', 'Subs NSSAIs', 'array', '[{\"defaultSingleNSSAIs\":\"1-000001\",\"index\":1,\"name\":\"def_nssai\",\"singleNssais\":\"1-000001\",\"supportedFeatures\":\"00000002\"},{\"defaultSingleNSSAIs\":\"2-000002\",\"index\":2,\"name\":\"lab_nssai\",\"singleNssais\":\"2-000001\",\"supportedFeatures\":\"00000006\"},{\"defaultSingleNSSAIs\":\"1-000002\",\"index\":3,\"name\":\"nssai_2\",\"singleNssais\":\"1-000002\",\"supportedFeatures\":\"00000002\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (23, 'admin', 1722062508436, 'admin', 1722596273023, '', '0', 'UDM', 'forbiddenAreas', 'Forbidden Areas', 'array', '[{\"areaCodes\":\"\",\"index\":1,\"name\":\"def_arfb\",\"tacs\":\"\"},{\"areaCodes\":\"\",\"index\":2,\"name\":\"arfb_0\",\"tacs\":\"123\"},{\"areaCodes\":\"\",\"index\":3,\"name\":\"arfb_1\",\"tacs\":\"456\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (24, 'admin', 1722062508495, 'admin', 1722596273027, '', '0', 'UDM', 'serviceAreaRestriction', 'Service Area Restriction', 'array', '[{\"areaCodes\":\"\",\"index\":1,\"maxTAs\":0,\"name\":\"def_sar\",\"restrictionType\":1,\"tacs\":\"\"},{\"areaCodes\":\"\",\"index\":2,\"maxTAs\":0,\"name\":\"sar_not_allowed\",\"restrictionType\":1,\"tacs\":\"4388\"},{\"areaCodes\":\"\",\"index\":3,\"maxTAs\":0,\"name\":\"sar_allowed\",\"restrictionType\":0,\"tacs\":\"4388\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (25, 'admin', 1722062508545, 'admin', 1722596273031, '', '0', 'UDM', 'smfSelection', 'Subs SMF Selection', 'array', '[{\"dnnList\":[{\"defaultDnnInd\":true,\"dnn\":\"internet\",\"index\":1,\"iwkEpsInd\":false,\"ladnIndicator\":false,\"lboRoamingAllowed\":false},{\"defaultDnnInd\":true,\"dnn\":\"ims\",\"index\":2,\"iwkEpsInd\":false,\"ladnIndicator\":false,\"lboRoamingAllowed\":false}],\"index\":1,\"name\":\"def_snssai\",\"snssai\":\"1-000001\"},{\"dnnList\":[{\"defaultDnnInd\":true,\"dnn\":\"internet\",\"index\":1,\"iwkEpsInd\":false,\"ladnIndicator\":false,\"lboRoamingAllowed\":false}],\"index\":2,\"name\":\"lab_snssai\",\"snssai\":\"1-000001\"},{\"dnnList\":[{\"defaultDnnInd\":true,\"dnn\":\"internet\",\"index\":1,\"iwkEpsInd\":false,\"ladnIndicator\":false,\"lboRoamingAllowed\":false},{\"defaultDnnInd\":false,\"dnn\":\"ims\",\"index\":2,\"iwkEpsInd\":false,\"ladnIndicator\":false,\"lboRoamingAllowed\":false}],\"index\":3,\"name\":\"snssai_2\",\"snssai\":\"1-000001\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (26, 'admin', 1722062508595, 'admin', 1722596273035, '', '0', 'UDM', 'dnn', 'DNN Conf', 'array', '[{\"5qi\":9,\"allowedPDUSessionTypes\":6,\"allowedSSCmodes\":3,\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":6,\"chargingCharacteristics\":\"0002\",\"defaultPDUSessionType\":0,\"defaultSSCmode\":0,\"index\":1,\"interworkingEPSIndicator\":true,\"ladnIndicator\":false,\"name\":\"internet\",\"priorityLevel\":90,\"staticIPAddress\":\"\",\"subscribedSessionAmbrDL\":\"20Gbps\",\"subscribedSessionAmbrUL\":\"10Gbps\",\"userPlaneConfidentiality\":3,\"userPlaneIntegrity\":3},{\"5qi\":5,\"allowedPDUSessionTypes\":6,\"allowedSSCmodes\":3,\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":6,\"chargingCharacteristics\":\"0001\",\"defaultPDUSessionType\":0,\"defaultSSCmode\":0,\"index\":2,\"interworkingEPSIndicator\":false,\"ladnIndicator\":false,\"name\":\"ims\",\"priorityLevel\":10,\"staticIPAddress\":\"\",\"subscribedSessionAmbrDL\":\"2Gbps\",\"subscribedSessionAmbrUL\":\"1Gbps\",\"userPlaneConfidentiality\":3,\"userPlaneIntegrity\":3}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (27, 'admin', 1722062508696, 'admin', 1722596273044, '', '0', 'UDM', 'epsTemplate', 'EPS User Template', 'array', '[{\"ambrDownlink\":200000000,\"ambrUplink\":100000000,\"apnOIReplacement\":\"money\",\"chargingCharacteristic\":\"0001\",\"index\":1,\"name\":\"def_eps\",\"rauTauTimer\":120,\"rfsp\":1}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (28, 'admin', 1722062508738, 'admin', 1722596273048, '', '0', 'UDM', 'epsApn', 'EPS APN', 'array', '[{\"ambrDownlink\":200000000,\"ambrUplink\":100000000,\"arpPreemptCap\":1,\"arpPreemptVuln\":0,\"arpPriorityLevel\":8,\"chargingCharacteristic\":\"0001\",\"contextIdentifier\":1,\"dnn\":\"internet\",\"index\":1,\"pdnGWAllocationType\":1,\"pdnType\":0,\"qci\":9,\"vplmnDynamicAddressAllowed\":true},{\"ambrDownlink\":10000000,\"ambrUplink\":10000000,\"arpPreemptCap\":1,\"arpPreemptVuln\":0,\"arpPriorityLevel\":2,\"chargingCharacteristic\":\"0400\",\"contextIdentifier\":2,\"dnn\":\"ims\",\"index\":2,\"pdnGWAllocationType\":1,\"pdnType\":0,\"qci\":5,\"vplmnDynamicAddressAllowed\":true}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (29, 'admin', 1722062508771, 'admin', 1722596273052, '', '0', 'UDM', 'applicationServer', 'Application Server', 'array', '[{\"defaultHandling\":0,\"diameterAddress\":\"mmtel.ims.mnc001.mcc001.3gppnetwork.org\",\"includeRegisterRequest\":false,\"includeRegisterResponse\":false,\"index\":1,\"name\":\"mmtel_as\",\"repDataSizeLimit\":0,\"serverName\":\"sip:192.168.5.60:7060\"},{\"defaultHandling\":0,\"diameterAddress\":\"smsc.ims.mnc001.mcc001.3gppnetwork.org\",\"includeRegisterRequest\":false,\"includeRegisterResponse\":false,\"index\":2,\"name\":\"sms_as\",\"repDataSizeLimit\":0,\"serverName\":\"sip:192.168.5.60:8060\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (30, 'admin', 1722062508788, 'admin', 1722596273056, '', '0', 'UDM', 'scscfSet', 'SCSCF Set', 'array', '[{\"index\":1,\"name\":\"def_scscf\",\"priority\":1,\"serverName\":\"sip:scscf.ims.mnc001.mcc001.3gppnetwork.org:6060\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (31, 'admin', 1722062508806, 'admin', 1722596273061, '', '0', 'UDM', 'triggerPoint', 'Trigger Point', 'array', '[{\"conditionTypeCNF\":0,\"index\":1,\"name\":\"mmtel_tp\",\"sptList\":[{\"conditionNegated\":0,\"enable\":true,\"group\":1,\"index\":1,\"method\":\"REGISTER\",\"sipContent\":\"\",\"sipHeader\":\"\"},{\"conditionNegated\":0,\"enable\":true,\"group\":2,\"index\":2,\"method\":\"INVITE\",\"sipContent\":\"\",\"sipHeader\":\"\"}]},{\"conditionTypeCNF\":0,\"index\":2,\"name\":\"sms_tp\",\"sptList\":[{\"conditionNegated\":0,\"enable\":true,\"group\":0,\"index\":1,\"method\":\"REGISTER\",\"sipContent\":\"\",\"sipHeader\":\"\"},{\"conditionNegated\":0,\"enable\":true,\"group\":2,\"index\":2,\"method\":\"\",\"sipContent\":\"123456789\",\"sipHeader\":\"to\"},{\"conditionNegated\":0,\"enable\":true,\"group\":2,\"index\":3,\"method\":\"MESSAGE\",\"sipContent\":\"\",\"sipHeader\":\"\"}]}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (32, 'admin', 1722062508824, 'admin', 1722596273064, '', '0', 'UDM', 's6aServer', 'S6a Server', 'list', '[{\"addr\":\"172.60.5.140:3868\",\"enable\":true,\"host\":\"hss.ims.mnc001.mcc001.3gppnetwork.org\",\"netType\":1,\"realm\":\"ims.mnc001.mcc001.3gppnetwork.org\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (33, 'admin', 1722062508838, 'admin', 1722596273068, '', '0', 'UDM', 'cxServer', 'Cx Server', 'list', '[{\"addr\":\"172.60.5.140:3868\",\"enable\":true,\"host\":\"hss.ims.mnc001.mcc001.3gppnetwork.org\",\"netType\":0,\"realm\":\"ims.mnc001.mcc001.3gppnetwork.org\"}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (50, 'admin', 1722062512389, 'admin', 1722596281081, '', '0', 'SMF', 'smfSystem', 'SMF System Config', 'list', '[{\"amfUri\":\"172.60.5.120:8080\",\"chfEnable\":false,\"chfPrimaryUri\":\"172.16.5.240:8080\",\"chfSecondaryUri\":\"\",\"n10CfgEnable\":false,\"n10IpAddr\":\"\",\"n10Port\":0,\"n10Scheme\":0,\"n11CfgEnable\":false,\"n11IpAddr\":\"\",\"n11Port\":0,\"n11Scheme\":0,\"n4Ipv4\":\"172.60.5.150\",\"n4Ipv6\":\"\",\"n4UIpv4\":\"\",\"n4UIpv6\":\"\",\"n7CfgEnable\":false,\"n7IpAddr\":\"\",\"n7Port\":0,\"n7Scheme\":0,\"nrfCfgEnable\":false,\"nrfEnable\":false,\"nrfIpAddr\":\"\",\"nrfPort\":0,\"nrfScheme\":0,\"nrfUri\":\"172.60.5.180:8080\",\"pcfEnable\":true,\"pcfUri\":\"172.60.5.160:8080\",\"primaryDnsIpv4\":\"8.8.4.4\",\"primaryDnsIpv6\":\"\",\"primaryPcscfIpv4\":\"192.168.5.60\",\"primaryPcscfIpv6\":\"\",\"sbiIpAddr\":\"172.60.5.150\",\"sbiPort\":8080,\"sbiScheme\":0,\"secondaryDnsIpv4\":\"1.1.1.1\",\"secondaryDnsIpv6\":\"\",\"secondaryPcscfIpv4\":\"\",\"secondaryPcscfIpv6\":\"\",\"udmUri\":\"172.60.5.140:8080\",\"ueMtu\":1400}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (51, 'admin', 1722062512552, 'admin', 1722596281099, '', '0', 'SMF', 'spgwSystem', 'SPGW Sytem Config', 'list', '[{\"gxChargingEnable\":false,\"localDiameterHostName\":\"smf.mnc001.mcc001.3gppnetwork.org\",\"localDiameterIp\":\"172.60.5.150\",\"localDiameterRealmName\":\"mnc001.mcc001.3gppnetwork.org\",\"localGxConfigEnable\":null,\"localGxHostName\":null,\"localGxIp\":null,\"localGxRealmName\":null,\"localGyConfigEnable\":null,\"localGyHostName\":null,\"localGyIp\":null,\"localGyRealmName\":null,\"peerGxEnable\":true,\"peerGyEnable\":false,\"primaryPeerGxIp\":\"172.60.5.160\",\"primaryPeerGxPort\":3868,\"primaryPeerGyIp\":\"\",\"primaryPeerGyPort\":3868,\"s11Ip\":\"172.60.5.150\",\"secondaryPeerGxIp\":\"\",\"secondaryPeerGxPort\":3868,\"secondaryPeerGyIp\":\"\",\"secondaryPeerGyPort\":3868}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (52, 'admin', 1722062512600, 'admin', 1722596281103, '', '0', 'SMF', 'upfConfig', 'UPF Config', 'array', '[{\"addr\":\"172.60.5.190:8805\",\"id\":\"upf-1\",\"index\":0,\"ipPoolType\":\"ipv4v6\",\"ipv4Pools\":\"10.2.1.0/24\",\"ipv6Pools\":\"\",\"staticIpv4Enable\":false,\"staticIpv4End\":\"10.2.1.240\",\"staticIpv4Start\":\"10.2.1.200\",\"staticIpv6Enable\":false,\"staticIpv6End\":\"\",\"staticIpv6Start\":\"\",\"ueDnnIpPool\":[{\"dnn\":\"test\",\"index\":0,\"ipPoolType\":\"ipv4v6\",\"ipv4Pools\":\"10.10.13.0/24\",\"ipv6Pools\":\"fd0d:10:1::/50\",\"staticIpv4Enable\":false,\"staticIpv4End\":\"0.0.0.0\",\"staticIpv4Start\":\"0.0.0.0\",\"staticIpv6Enable\":false,\"staticIpv6End\":\"\",\"staticIpv6Start\":\"\"}]}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (53, 'admin', 1722062512754, 'admin', 1722596281105, '', '0', 'SMF', 'dnnSelectUpf', 'DNN Select UPF', 'array', '[{\"dnn\":\"internet\",\"index\":0,\"upfId\":\"upf-1\"},{\"dnn\":\"ims\",\"index\":1,\"upfId\":\"upf-1\"},{\"dnn\":\"*\",\"index\":2,\"upfId\":\"upf-1\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (54, 'admin', 1722062512921, 'admin', 1722596281107, '', '0', 'SMF', 'dnnTaiSelectUpf', 'DNN TAI Select UPF', 'array', '[{\"dnn\":\"example\",\"index\":0,\"tai\":\"00101666666\",\"upfId\":\"upf2-id\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (55, 'admin', 1722062513008, 'admin', 1722596281111, '', '0', 'SMF', 'offlineChargingConfig', 'Offline Charging Config', 'list', '[{\"cdrFileMaxAge\":30,\"cdrFileName\":\"smf.cdr\",\"cdrFileNum\":50,\"cdrFilePath\":\"/var/log/smfCdr\",\"cdrFileSize\":300,\"freeSubsCdrEnable\":false,\"timeThreshold\":600,\"volumeThreshold\":0}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (70, 'admin', 1722062518382, 'admin', 1722596289640, '', '0', 'PCF', 'system', 'System', 'list', '[{\"enableNrf\":false,\"nrfUri\":\"http://172.60.5.180:8080\",\"scheme\":0,\"serviceIP\":\"172.60.5.160\",\"servicePort\":8080,\"supportedPlmn1\":\"00101\",\"supportedPlmn2\":\"\",\"supportedPlmn3\":\"\",\"supportedPlmn4\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (71, 'admin', 1722062518461, 'admin', 1722596289650, '', '0', 'PCF', 'serviceAreaRestriction', 'Service Area Restriction', 'array', '[{\"areaCodes\":\"\",\"index\":1,\"maxTAs\":0,\"name\":\"def_sar\",\"restrictionType\":1,\"tacs\":\"\"},{\"areaCodes\":\"\",\"index\":2,\"maxTAs\":0,\"name\":\"sar_not_allowed\",\"restrictionType\":1,\"tacs\":\"4388\"},{\"areaCodes\":\"\",\"index\":3,\"maxTAs\":0,\"name\":\"sar_allowed\",\"restrictionType\":0,\"tacs\":\"4388\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (72, 'admin', 1722062518548, 'admin', 1722596289663, '', '0', 'PCF', 'pccRules', 'PCC Rules', 'array', '[{\"activate\":true,\"appId\":\"\",\"flowTemplate\":\"flow_any\",\"flowUsage\":0,\"index\":1,\"precedence\":253,\"qosId\":\"qos_internet\",\"ruleId\":\"internet\",\"trafficControlId\":\"\",\"usageMonitoringId\":\"\"},{\"activate\":true,\"appId\":\"\",\"flowTemplate\":\"flow_any\",\"flowUsage\":1,\"index\":2,\"precedence\":80,\"qosId\":\"qos_ims\",\"ruleId\":\"ims_sig\",\"trafficControlId\":\"\",\"usageMonitoringId\":\"\"},{\"activate\":false,\"appId\":\"\",\"flowTemplate\":\"flow_web\",\"flowUsage\":0,\"index\":3,\"precedence\":85,\"qosId\":\"qos_web\",\"ruleId\":\"rule_web\",\"trafficControlId\":\"\",\"usageMonitoringId\":\"\"},{\"activate\":false,\"appId\":\"\",\"flowTemplate\":\"flow_ftp\",\"flowUsage\":0,\"index\":4,\"precedence\":80,\"qosId\":\"qos_ftp\",\"ruleId\":\"rule_ftp\",\"trafficControlId\":\"\",\"usageMonitoringId\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (73, 'admin', 1722062518601, 'admin', 1722596289667, '', '0', 'PCF', 'sessionRules', 'Session Rules', 'array', '[{\"activate\":true,\"ambrDl\":\"5Gbps\",\"ambrUl\":\"1Gbps\",\"arpPreemptCap\":0,\"arpPreemptVuln\":1,\"arpPriorityLevel\":1,\"averagingWindow\":0,\"fiveQI\":9,\"fiveQIPriorityLevel\":0,\"flowUsage\":0,\"gbrDl\":\"1Gbps\",\"gbrUl\":\"1Gbps\",\"index\":1,\"maxDataBurstVolume\":0,\"maxbrDl\":\"5Gbps\",\"maxbrUl\":\"5Gbps\",\"ruleId\":\"internet\",\"usageMonitoringId\":\"def_um\"},{\"activate\":true,\"ambrDl\":\"200Kbps\",\"ambrUl\":\"100Kbps\",\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":10,\"averagingWindow\":0,\"fiveQI\":5,\"fiveQIPriorityLevel\":0,\"flowUsage\":1,\"gbrDl\":\"\",\"gbrUl\":\"\",\"index\":2,\"maxDataBurstVolume\":0,\"maxbrDl\":\"\",\"maxbrUl\":\"\",\"ruleId\":\"ims_sig\",\"usageMonitoringId\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (74, 'admin', 1722062518622, 'admin', 1722596289672, '', '0', 'PCF', 'gxServer', 'Gx Server', 'list', '[{\"addr\":\"172.60.5.160:3868\",\"enable\":true,\"host\":\"pcrf.epc.mnc001.mcc001.3gppnetwork.org\",\"netType\":0,\"realm\":\"epc.mnc001.mcc001.3gppnetwork.org\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (75, 'admin', 1722062518639, 'admin', 1722596289675, '', '0', 'PCF', 'rxServer', 'Rx Server', 'list', '[{\"addr\":\"172.60.5.160:3867\",\"enable\":false,\"host\":\"pcrf.epc.mnc001.mcc001.3gppnetwork.org\",\"netType\":0,\"realm\":\"epc.mnc001.mcc001.3gppnetwork.org\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (76, 'admin', 1722062518655, 'admin', 1722596289679, '', '0', 'PCF', 'flowTemplate', 'Flow Template', 'array', '[{\"flowDescription\":\"permit out ip from any to assigned\",\"flowDirection\":3,\"index\":1,\"templateName\":\"flow_any\"},{\"flowDescription\":\"permit out 6 from 192.168.1.205 80 to assigned\",\"flowDirection\":3,\"index\":2,\"templateName\":\"flow_web\"},{\"flowDescription\":\"permit out 6 from any 20-21 to assigned\",\"flowDirection\":3,\"index\":3,\"templateName\":\"flow_ftp\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (77, 'admin', 1722062518703, 'admin', 1722596289683, '', '0', 'PCF', 'qosTemplate', 'QoS Template', 'array', '[{\"arpPreemptCap\":0,\"arpPreemptVuln\":1,\"arpPriorityLevel\":1,\"defQosFlowIndication\":false,\"fiveQI\":8,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"2Gbps\",\"gbrUl\":\"500Mbps\",\"index\":1,\"maxbrDl\":\"5Gbps\",\"maxbrUl\":\"1Gbps\",\"qosId\":\"qos_internet\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":1,\"arpPriorityLevel\":1,\"defQosFlowIndication\":false,\"fiveQI\":8,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"2Gbps\",\"gbrUl\":\"500Mbps\",\"index\":2,\"maxbrDl\":\"5Gbps\",\"maxbrUl\":\"1Gbps\",\"qosId\":\"qos_enrich\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":10,\"defQosFlowIndication\":false,\"fiveQI\":5,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"200Mbps\",\"gbrUl\":\"100Mbps\",\"index\":3,\"maxbrDl\":\"500Mbps\",\"maxbrUl\":\"200Mbps\",\"qosId\":\"qos_ims\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":10,\"defQosFlowIndication\":false,\"fiveQI\":6,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"50Mbps\",\"gbrUl\":\"30Mbps\",\"index\":4,\"maxbrDl\":\"50Mbps\",\"maxbrUl\":\"30Mbps\",\"qosId\":\"qos_web\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":10,\"defQosFlowIndication\":false,\"fiveQI\":8,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"50Mbps\",\"gbrUl\":\"30Mbps\",\"index\":5,\"maxbrDl\":\"50Mbps\",\"maxbrUl\":\"30Mbps\",\"qosId\":\"qos_ftp\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":1,\"defQosFlowIndication\":false,\"fiveQI\":1,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"41Kbps\",\"gbrUl\":\"41Kbps\",\"index\":6,\"maxbrDl\":\"64Kbps\",\"maxbrUl\":\"64Kbps\",\"qosId\":\"qos_audio\"},{\"arpPreemptCap\":0,\"arpPreemptVuln\":0,\"arpPriorityLevel\":2,\"defQosFlowIndication\":false,\"fiveQI\":2,\"fiveQIPriorityLevel\":0,\"gbrDl\":\"960Kbps\",\"gbrUl\":\"960Kbps\",\"index\":7,\"maxbrDl\":\"960Kbps\",\"maxbrUl\":\"960Kbps\",\"qosId\":\"qos_video\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (78, 'admin', 1722062518749, 'admin', 1722596289685, '', '0', 'PCF', 'usageMonitoringTemplate', 'Usage Monitoring Template', 'array', '[{\"inactivityTime\":0,\"index\":1,\"timeThreshold\":1800,\"umId\":\"def_um\",\"volumeThreshold\":5120,\"volumeThresholdDownlink\":0,\"volumeThresholdUplink\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (79, 'admin', 1722062518767, 'admin', 1722596289689, '', '0', 'PCF', 'trafficControlTemplate', 'Traffic Control Template', 'array', '[{\"flowStatus\":0,\"index\":1,\"muteNotif\":true,\"tcId\":\"tc_01\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (80, 'admin', 1722062518825, 'admin', 1722596289693, '', '0', 'PCF', 'headerEnrichTemplate', 'Header Enrich Template', 'array', '[{\"headerName\":\"gpsi\",\"headerType\":0,\"index\":1,\"templateName\":\"gpsi\"},{\"headerName\":\"supi\",\"headerType\":1,\"index\":2,\"templateName\":\"supi\"},{\"headerName\":\"ueip\",\"headerType\":2,\"index\":3,\"templateName\":\"ueip\"},{\"headerName\":\"dnn\",\"headerType\":4,\"index\":4,\"templateName\":\"dnn\"},{\"headerName\":\"uli\",\"headerType\":3,\"index\":5,\"templateName\":\"uli\"},{\"headerName\":\"dnn\",\"headerType\":4,\"index\":6,\"templateName\":\"dnn_uli\"}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (90, 'admin', 1722062580153, 'admin', 1722596254903, '', '0', 'IMS', 'system', 'System', 'list', '[{\"InternalCDRInd\":true,\"InternalKPIInd\":true,\"LocalNetworkIPv4\":\"172.60.5.110\\n\",\"dispatchSystemIP\":\"1.0.0.1\",\"dispatchSystemInd\":false,\"dispatchSystemPort\":0,\"domainName1\":\"ims.mnc001.mcc001.3gppnetwork.org\",\"domainName2\":\"\",\"domainName3\":\"\",\"domainName4\":\"\",\"hplmnMCC\":\"001\",\"hplmnMNC\":\"01\",\"internalSMSInd\":true,\"label\":\"IMS-CORE\",\"logDir\":\"/var/log/ims\",\"logLevel\":\"INFO\",\"logNum\":10,\"logSize\":\"200\",\"maxCallDuration\":43200,\"multiDomainInd\":true,\"multiIPStackInd\":false,\"pcfIP\":\"172.60.5.160\",\"redisAddr\":\"\\\"127.0.0.1:6379\",\"redisPassword\":\"\\\"helloearth\",\"redisUserName\":\"\",\"registerTimer\":4000,\"serviceIP\":\"192.168.5.60\",\"serviceIPv6\":\"::1\",\"transcodeInd\":false}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (91, 'admin', 1722062580453, 'admin', 1722596254908, '', '0', 'IMS', 'plmn', 'PLMN List', 'array', '[{\"domain\":\"ims.mnc001.mcc001.3gppnetwork.org\",\"index\":0,\"mcc\":\"001\",\"mnc\":\"01\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (92, 'admin', 1722062580462, 'admin', 1722596254913, '', '0', 'IMS', 'mmtel_dialplan', 'MMTEL Dialplan', 'array', '[{\"adminState\":0,\"attrib\":\"1\",\"e164Delete\":\"0\",\"e164Insert\":\"\",\"e164Nai\":\"1\",\"end\":\"\",\"index\":0,\"method\":\"0\",\"naName\":\"NA-1\",\"numberLen\":\"0\",\"prefix\":\"123\",\"rsc\":\"0\",\"start\":\"\",\"title\":\"Called\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (93, 'admin', 1722062580469, 'admin', 1722596254916, '', '0', 'IMS', 'ds_system', 'DS System', 'list', '[{\"dispatchSystemIP\":\"1.0.0.1\",\"dispatchSystemInd\":false,\"dispatchSystemPort\":5060,\"transcodeInd\":false}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (100, 'admin', 1722062709590, 'admin', 1722596313267, '', '0', 'UPF', 'general', 'General', 'list', '[{\"checksumOffload\":0,\"commonStatisticInterval\":60,\"configFileDirectory\":\"/usr/local/etc/upf/\",\"dataForwarderNum\":1,\"exeFileDirectory\":\"/usr/local/bin/\",\"maxDownlinkBufferNum\":32,\"rxN3OverLoadThresholdMbps\":0,\"rxN6OverLoadThresholdMbps\":0,\"systemId\":0,\"userStatisticInterval\":60}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (101, 'admin', 1722062709895, 'admin', 1722596313273, '', '0', 'UPF', 'logger', 'Logger', 'list', '[{\"logDir\":\"/var/log/\",\"logLevel\":\"debug\",\"logNum\":10,\"logSize\":200,\"reportCaller\":false,\"upfdLogLevel\":\"debug\",\"upfdLogTransfer\":false}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (102, 'admin', 1722062710095, 'admin', 1722596313285, '', '0', 'UPF', 'pfcp', 'PFCP', 'list', '[{\"heartbeatInterval\":15,\"ipType\":\"ipv4\",\"localIpv4\":\"172.60.5.190\",\"localIpv6\":\"\",\"localUdpPort\":8805,\"maxRetry\":3,\"retryInterval\":2,\"smfIpv4\":\"0.0.0.0\",\"smfIpv6\":\"\",\"smfUdpPort\":8805}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (103, 'admin', 1722062711707, 'admin', 1722596313288, '', '0', 'UPF', 'telnet', 'Telnet', 'list', '[{\"enabled\":true,\"ipType\":\"ipv4\",\"localIpv4\":\"172.60.5.190\",\"localIpv6\":\"\",\"localPort\":4100}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (104, 'admin', 1722062712550, 'admin', 1722596313290, '', '0', 'UPF', 'redisDb', 'Redis DB', 'list', '[{\"enabled\":false,\"netType\":\"tcp\",\"password\":\"helloearth\",\"serverAddr\":\"172.16.5.140:6379\",\"username\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (105, 'admin', 1722062713042, 'admin', 1722596313293, '', '0', 'UPF', 'dataForwarderCommon', 'Data Forwarder Common', 'list', '[{\"cpuWorkers\":\"\",\"downlinkCpuWorkers\":\"\",\"enableQer\":0,\"enableTap\":0,\"instanceId\":1,\"isHotStandby\":0,\"isRun\":0,\"mainCpu\":1,\"n3HeartbeatInterval\":30,\"pfcpIpType\":\"ipv4\",\"pfcpLocalIpv4\":\"0.0.0.0\",\"pfcpLocalIpv6\":\"\",\"pfcpLocalUdpPort\":8805,\"rxTxQueueNum\":1,\"teidStart\":16777216,\"type\":\"tun\",\"uplinkCpuWorkers\":\"\",\"useSocket\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (106, 'admin', 1722062713076, 'admin', 1722596313296, '', '0', 'UPF', 'dataForwarderUpfd', 'Data Forwarder Upfd', 'list', '[{\"Dprc\":0,\"buffersPerNuma\":100000,\"commandlineListen\":\"172.60.5.190:5002\",\"dpdkNoPci\":0,\"heapSizeGB\":2,\"memChannelNum\":0,\"n3RssHash\":\"\",\"sessionBaseVa\":\"0x2000000000\",\"stateSegSizeMB\":256,\"uioDriver\":\"vfio-pci\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (107, 'admin', 1722062713526, 'admin', 1722596313299, '', '0', 'UPF', 'dataInterfaceList', 'Data Interface List', 'array', '[{\"bfdGatewayIpv4\":\"0.0.0.0\",\"bfdGatewayIpv6\":\"\",\"bfdRxIntervalMs\":0,\"bfdTxIntervalMs\":0,\"bondId\":1,\"bondType\":\"\",\"dataDefaultDSCPValue\":0,\"dnnName\":\"default\",\"dpdkRxDescNumber\":0,\"dpdkRxQueuesNumber\":0,\"dpdkTxDescNumber\":0,\"dpdkTxQueuesNumber\":0,\"dpdkworkers\":\"\",\"driverType\":\"vmxnet3\",\"gatewayIpv4\":\"192.168.1.1\",\"gatewayIpv6\":\"\",\"gtpuRemoteIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"gtpuRemoteIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gtpuSignalingHandle\":0,\"imsDefaultDSCPValue\":0,\"index\":1,\"innerDSCPValueMap\":0,\"interfaceId\":1,\"interfacePCI\":\"0000:00:00.0\",\"interfaceType\":\"N3\",\"ipType\":\"ipv4\",\"ipv4\":\"\",\"ipv4AddrList\":[{\"index\":1,\"ipv4\":\"192.168.5.60\",\"ipv4Mask\":\"255.255.255.0\"}],\"ipv4Mask\":\"\",\"ipv6\":\"\",\"ipv6AddrList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"ipv6Prefix\":0,\"linkDetectionType\":0,\"macAddr\":\"00:00:00:00:00:00\",\"maxSupportSpeedMbps\":0,\"mtu\":1500,\"natInterfaceId\":0,\"systemNetworkCardName\":\"\",\"udpListenPort\":2152,\"udpSrcPort\":0,\"udsLocalFileFullPath\":\"\",\"udsRemoteFileFullPath\":\"\",\"ueIpv4\":\"10.2.1.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64,\"vlanIdMax\":0,\"vlanIdMin\":0},{\"bfdGatewayIpv4\":\"0.0.0.0\",\"bfdGatewayIpv6\":\"\",\"bfdRxIntervalMs\":0,\"bfdTxIntervalMs\":0,\"bondId\":1,\"bondType\":\"\",\"dataDefaultDSCPValue\":0,\"dnnName\":\"default\",\"dpdkRxDescNumber\":0,\"dpdkRxQueuesNumber\":0,\"dpdkTxDescNumber\":0,\"dpdkTxQueuesNumber\":0,\"dpdkworkers\":\"\",\"driverType\":\"vmxnet3\",\"gatewayIpv4\":\"192.168.1.1\",\"gatewayIpv6\":\"\",\"gtpuRemoteIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"gtpuRemoteIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gtpuSignalingHandle\":0,\"imsDefaultDSCPValue\":0,\"index\":2,\"innerDSCPValueMap\":0,\"interfaceId\":1,\"interfacePCI\":\"0000:00:00.0\",\"interfaceType\":\"N6\",\"ipType\":\"ipv4\",\"ipv4\":\"\",\"ipv4AddrList\":[{\"index\":1,\"ipv4\":\"192.168.8.191\",\"ipv4Mask\":\"255.255.255.0\"}],\"ipv4Mask\":\"\",\"ipv6\":\"\",\"ipv6AddrList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"ipv6Prefix\":0,\"linkDetectionType\":0,\"macAddr\":\"00:00:00:00:00:00\",\"maxSupportSpeedMbps\":0,\"mtu\":1500,\"natInterfaceId\":0,\"systemNetworkCardName\":\"\",\"udpListenPort\":2152,\"udpSrcPort\":0,\"udsLocalFileFullPath\":\"\",\"udsRemoteFileFullPath\":\"\",\"ueIpv4\":\"10.2.1.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64,\"vlanIdMax\":0,\"vlanIdMin\":0},{\"bfdGatewayIpv4\":\"0.0.0.0\",\"bfdGatewayIpv6\":\"\",\"bfdRxIntervalMs\":0,\"bfdTxIntervalMs\":0,\"bondId\":1,\"bondType\":\"\",\"dataDefaultDSCPValue\":0,\"dnnName\":\"default\",\"dpdkRxDescNumber\":0,\"dpdkRxQueuesNumber\":0,\"dpdkTxDescNumber\":0,\"dpdkTxQueuesNumber\":0,\"dpdkworkers\":\"\",\"driverType\":\"\",\"gatewayIpv4\":\"0.0.0.0\",\"gatewayIpv6\":\"\",\"gtpuRemoteIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"gtpuRemoteIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gtpuSignalingHandle\":0,\"imsDefaultDSCPValue\":0,\"index\":3,\"innerDSCPValueMap\":0,\"interfaceId\":1,\"interfacePCI\":\"0000:00:00.0\",\"interfaceType\":\"N9\",\"ipType\":\"ipv4\",\"ipv4\":\"\",\"ipv4AddrList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"ipv4Mask\":\"\",\"ipv6\":\"\",\"ipv6AddrList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"ipv6Prefix\":0,\"linkDetectionType\":0,\"macAddr\":\"00:00:00:00:00:00\",\"maxSupportSpeedMbps\":0,\"mtu\":1500,\"natInterfaceId\":0,\"systemNetworkCardName\":\"\",\"udpListenPort\":2152,\"udpSrcPort\":0,\"udsLocalFileFullPath\":\"\",\"udsRemoteFileFullPath\":\"\",\"ueIpv4\":\"0.0.0.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64,\"vlanIdMax\":0,\"vlanIdMin\":0},{\"bfdGatewayIpv4\":\"0.0.0.0\",\"bfdGatewayIpv6\":\"\",\"bfdRxIntervalMs\":0,\"bfdTxIntervalMs\":0,\"bondId\":1,\"bondType\":\"\",\"dataDefaultDSCPValue\":0,\"dnnName\":\"default\",\"dpdkRxDescNumber\":0,\"dpdkRxQueuesNumber\":0,\"dpdkTxDescNumber\":0,\"dpdkTxQueuesNumber\":0,\"dpdkworkers\":\"\",\"driverType\":\"\",\"gatewayIpv4\":\"0.0.0.0\",\"gatewayIpv6\":\"\",\"gtpuRemoteIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"gtpuRemoteIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gtpuSignalingHandle\":0,\"imsDefaultDSCPValue\":0,\"index\":4,\"innerDSCPValueMap\":0,\"interfaceId\":1,\"interfacePCI\":\"0000:00:00.0\",\"interfaceType\":\"N19\",\"ipType\":\"ipv4\",\"ipv4\":\"\",\"ipv4AddrList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"ipv4Mask\":\"\",\"ipv6\":\"\",\"ipv6AddrList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"ipv6Prefix\":0,\"linkDetectionType\":0,\"macAddr\":\"00:00:00:00:00:00\",\"maxSupportSpeedMbps\":0,\"mtu\":1500,\"natInterfaceId\":0,\"systemNetworkCardName\":\"\",\"udpListenPort\":2152,\"udpSrcPort\":0,\"udsLocalFileFullPath\":\"\",\"udsRemoteFileFullPath\":\"\",\"ueIpv4\":\"0.0.0.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64,\"vlanIdMax\":0,\"vlanIdMin\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (108, 'admin', 1722062713626, 'admin', 1722596313304, '', '0', 'UPF', 'networkControlCommon', 'Network Control Common', 'list', '[{\"dscpInnerMapping\":0,\"localSwitchDisabled\":0,\"maxTCPSyncPerSecond\":0,\"upfMaxSupportMbps\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (109, 'admin', 1722062713643, 'admin', 1722596313308, '', '0', 'UPF', 'networkControlDnnList', 'Network Control DNN List', 'array', '[{\"dnnName\":\"ims\",\"dstServerIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"dstServerIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gatewayIpType\":\"ipv4\",\"gatewayIpv4\":\"0.0.0.0\",\"gatewayIpv6\":\"\",\"greLocalInnerIpType\":\"ipv4\",\"greLocalInnerIpv4\":\"0.0.0.0\",\"greLocalInnerIpv6\":\"\",\"greRemoteOuterIpType\":\"ipv4\",\"greRemoteOuterIpv4\":\"0.0.0.0\",\"greRemoteOuterIpv6\":\"\",\"headerEnrichInfoList\":[{\"index\":1,\"name\":\"\",\"type\":0,\"value\":\"\"}],\"httpProtoEnabled\":0,\"httpsProtoEnabled\":0,\"index\":1,\"localSwitchCheck\":0,\"m2mIpType\":\"ipv4\",\"m2mIpv4\":\"0.0.0.0\",\"m2mIpv6\":\"\",\"m2mUdpPort\":0,\"n3InterfaceId\":1,\"n6InterfaceId\":1,\"qerMaxSupportMbps\":0,\"secondaryGatewayIpv4\":\"0.0.0.0\",\"secondaryGatewayIpv6\":\"\",\"statisticEnabled\":0,\"ueIpv4PoolList\":[{\"index\":1,\"ipv4\":\"10.10.0.0\",\"ipv4Mask\":\"255.255.0.0\"}],\"ueIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}]},{\"dnnName\":\"\",\"dstServerIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"dstServerIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}],\"gatewayIpType\":\"ipv4\",\"gatewayIpv4\":\"0.0.0.0\",\"gatewayIpv6\":\"\",\"greLocalInnerIpType\":\"ipv4\",\"greLocalInnerIpv4\":\"0.0.0.0\",\"greLocalInnerIpv6\":\"\",\"greRemoteOuterIpType\":\"ipv4\",\"greRemoteOuterIpv4\":\"0.0.0.0\",\"greRemoteOuterIpv6\":\"\",\"headerEnrichInfoList\":[{\"index\":1,\"name\":\"\",\"type\":0,\"value\":\"\"}],\"httpProtoEnabled\":0,\"httpsProtoEnabled\":0,\"index\":2,\"localSwitchCheck\":0,\"m2mIpType\":\"ipv4\",\"m2mIpv4\":\"0.0.0.0\",\"m2mIpv6\":\"\",\"m2mUdpPort\":0,\"n3InterfaceId\":1,\"n6InterfaceId\":1,\"qerMaxSupportMbps\":0,\"secondaryGatewayIpv4\":\"0.0.0.0\",\"secondaryGatewayIpv6\":\"\",\"statisticEnabled\":0,\"ueIpv4PoolList\":[{\"index\":1,\"ipv4\":\"0.0.0.0\",\"ipv4Mask\":\"255.255.255.0\"}],\"ueIpv6PoolList\":[{\"index\":1,\"ipv6\":\"\",\"ipv6Prefix\":64}]}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (110, 'admin', 1722062713659, 'admin', 1722596313314, '', '0', 'UPF', 'networkControlSnssaiList', 'Network Control SNSSAI List', 'array', '[{\"index\":1,\"n3InterfaceId\":1,\"n6InterfaceId\":1,\"qerMaxSupportMbps\":0,\"sd\":0,\"sst\":0,\"statisticEnabled\":0,\"vlanIdMax\":0,\"vlanIdMin\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (111, 'admin', 1722062713803, 'admin', 1722596313318, '', '0', 'UPF', 'networkControlAclWhiteList', 'Network Control ACL White List', 'array', '[{\"dstServerIpv4\":\"0.0.0.0\",\"dstServerIpv4Mask\":\"255.255.255.0\",\"dstServerIpv6\":\"\",\"dstServerIpv6Prefix\":64,\"index\":1,\"ueIpv4\":\"0.0.0.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (112, 'admin', 1722062713820, 'admin', 1722596313331, '', '0', 'UPF', 'networkControlAclBlackList', 'Network Control ACL Black List', 'array', '[{\"dstServerIpv4\":\"0.0.0.0\",\"dstServerIpv4Mask\":\"255.255.255.0\",\"dstServerIpv6\":\"\",\"dstServerIpv6Prefix\":64,\"index\":1,\"ueIpv4\":\"0.0.0.0\",\"ueIpv4Mask\":\"255.255.255.0\",\"ueIpv6\":\"\",\"ueIpv6Prefix\":64}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (113, 'admin', 1722062713919, 'admin', 1722596313335, '', '0', 'UPF', 'networkControlDnsServerList', 'Network Control DNS Server List', 'array', '[{\"dnsName\":\"\",\"enabled\":0,\"index\":1,\"serverIpv4\":\"0.0.0.0\",\"serverIpv6\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (114, 'admin', 1722062714043, 'admin', 1722596313340, '', '0', 'UPF', 'dpiCommon', 'DPI Common', 'list', '[{\"httpProtoEnabled\":0,\"httpsProtoEnabled\":0,\"maxDetectPacketNum\":20}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (115, 'admin', 1722062714049, 'admin', 1722596313343, '', '0', 'UPF', 'dpiHeaderEnrichInfoList', 'DPI Header Enrich Info List', 'array', '[{\"index\":1,\"name\":\"\",\"type\":0,\"value\":\"\"}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (116, 'admin', 1722062714055, 'admin', 1722596313347, '', '0', 'UPF', 'dpiAppList', 'DPI APP List', 'array', '[{\"appName\":\"\",\"forceCheckType\":0,\"index\":1,\"n3InterfaceId\":1,\"n6InterfaceId\":1,\"proxyEnabled\":0,\"ruleList\":[{\"customName\":\"\",\"flowDescription\":\"\",\"index\":1,\"regexMatch\":\"\",\"ruleId\":1}]}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (117, 'admin', 1722596294290, 'admin', 1722596308736, '', '0', 'NSSF', 'general', 'General', 'list', '[{\"logDir\":\"/var/log/\",\"logLevel\":\"info\",\"logNum\":10,\"logSize\":200,\"nfId\":\"f1466470-9dc7-49fb-adff-ba014c58af19\",\"nrfUri\":\"http://172.60.5.180:8080\",\"nssfName\":\"nssf\",\"systemId\":0}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (118, 'admin', 1722596294306, 'admin', 1722596308736, '', '0', 'NSSF', 'sbi', 'SBI', 'list', '[{\"bindingIpv4\":\"172.60.5.170\",\"bindingIpv6\":\"\",\"ipType\":\"ipv4\",\"port\":8080,\"registerIpv4\":\"172.60.5.170\",\"registerIpv6\":\"\",\"scheme\":\"http\",\"telnetIpv4\":\"172.60.5.170\",\"telnetIpv6\":\"\",\"telnetPort\":4100}]', 100); +INSERT INTO `pt_ne_config_data` VALUES (119, 'admin', 1722596294310, 'admin', 1722596308736, '', '0', 'NSSF', 'supportedNetworkSliceList', 'Supported Network Slice List', 'array', '[{\"accessType\":\"3GPP_ACCESS\",\"amfSetId\":\"001-01-01-001\",\"index\":1,\"mcc\":\"001\",\"mnc\":\"01\",\"nrfId\":\"http://172.60.5.180:8080/nnrf-nfm/v1/nf-instances\",\"nsiId\":\"11\",\"restrictedSd\":\"000001\",\"restrictedSst\":2,\"supportedSd\":\"000001\",\"supportedSst\":1,\"tac\":\"001124\"},{\"accessType\":\"3GPP_ACCESS\",\"amfSetId\":\"001-01-01-002\",\"index\":2,\"mcc\":\"001\",\"mnc\":\"01\",\"nrfId\":\"http://172.60.5.180:8080/nnrf-nfm/v1/nf-instances\",\"nsiId\":\"11\",\"restrictedSd\":\"000001\",\"restrictedSst\":2,\"supportedSd\":\"000001\",\"supportedSst\":1,\"tac\":\"000002\"}]', 100); + +INSERT INTO `pt_ne_config_data` VALUES (120, 'admin', 1722596299802, 'admin', 1722596308736, '', '0', 'NRF', 'system', 'System', 'list', '[{\"scheme\":0,\"serviceIP\":\"172.60.5.180\",\"servicePort\":8080}]', 100); + +-- Dump completed on 2022-07-27 10:55:22 diff --git a/database/install/pt_ne_config_data_log.sql b/database/install/pt_ne_config_data_log.sql new file mode 100644 index 00000000..8ad2b43e --- /dev/null +++ b/database/install/pt_ne_config_data_log.sql @@ -0,0 +1,23 @@ +-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Table structure for table `pt_ne_config_data_log` +-- + +DROP TABLE IF EXISTS `pt_ne_config_data_log`; +CREATE TABLE `pt_ne_config_data_log` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', + `create_time` bigint DEFAULT '0' COMMENT '创建时间', + `stub_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '存根数据类型 0系统 1班级 2个人', + `ne_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', + `param_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '参数名', + `param_display` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数显示名', + `param_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数类型 list列表单层 array数组多层', + `param_json_old` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '原始内容', + `param_json_new` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '当前内容', + `opera_type` int DEFAULT '0' COMMENT '操作类型 0其他 1新增 2更新 3删除', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_user_stub_ne_name` (`create_by`,`stub_type`,`ne_type`,`param_name`) USING BTREE COMMENT '个人_存根_网元_参数可选值' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='实训教学_网元参数配置数据变更日志'; + +-- Dump completed on 2024-07-27 10:55:22 diff --git a/database/install/sys_dict_data0.sql b/database/install/sys_dict_data0.sql index 4382e14b..ce12a5af 100644 --- a/database/install/sys_dict_data0.sql +++ b/database/install/sys_dict_data0.sql @@ -169,4 +169,11 @@ INSERT INTO `sys_dict_data` VALUES (141, 22, 'dictData.cdr_cause_code.42', '42', 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 (200, 0, 'dictData.pt_config_apply_status.0', '0', 'pt_config_apply_status', '', 'processing', '1', 'supervisor', 1712720201349, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (201, 1, 'dictData.pt_config_apply_status.1', '1', 'pt_config_apply_status', '', 'default', '1', 'supervisor', 1712720201349, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (202, 2, 'dictData.pt_config_apply_status.2', '2', 'pt_config_apply_status', '', 'success', '1', 'supervisor', 1712720201349, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (203, 3, 'dictData.pt_config_apply_status.3', '3', 'pt_config_apply_status', '', 'purple', '1', 'supervisor', 1712720201349, '', 0, ''); + + SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_dict_data1_i18n_zh.sql b/database/install/sys_dict_data1_i18n_zh.sql index e6c8388a..466a52cb 100644 --- a/database/install/sys_dict_data1_i18n_zh.sql +++ b/database/install/sys_dict_data1_i18n_zh.sql @@ -696,4 +696,52 @@ INSERT INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', ' 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, ''); +-- 字典数据-中文 +REPLACE INTO `sys_dict_data` VALUES (1016, 1016, 'menu.security.dept', '班级管理', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1017, 1017, 'menu.security.post', '职位管理', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1035, 1035, 'menu.security.deptRemark', '班级管理菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1036, 1036, 'menu.security.postRemark', '职位管理菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1464, 1464, 'dictData.datascope.dept', '班级数据权限', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1465, 1465, 'dictData.datascope.deptAndChid', '班级及以下数据权限', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1600, 1600, 'dept.root', 'XXXX大学', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1601, 1601, 'dept.root.item1', '未指定', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1602, 1602, 'dept.noData', '没有可访问班级数据!', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1603, 1603, 'dept.errParentDelFlag', '上级班级【{name}】已删除,不允许新增', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1604, 1604, 'dept.errParentStatus', '上级班级【{name}】停用,不允许新增', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1605, 1605, 'dept.errNameExists', '操作班级【{name}】失败,班级名称已存在', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1606, 1606, 'dept.errParentID', '操作班级【{name}】失败,上级班级不能是自己', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1607, 1607, 'dept.errHasChildUse', '操作失败,该班级包含未停用的子班级数量:{num}', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1608, 1608, 'dept.errHasUserUse', '不允许删除,班级已分配给用户数:{num}', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1751, 1751, 'role.admin', '管理员', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1752, 1752, 'role.teacher', '教师', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1753, 1753, 'role.student', '学生', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1756, 1756, 'role.adminRemark', '管理员 可以对设备进行任何操作', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1757, 1757, 'role.teacherRemark', '教师 可以从设备读取数据,并对设备进行配置,但是不能对设备进行软件升级操作。', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1758, 1758, 'role.studentRemark', '学生 只能从设备读取数据,而不能对设备进行任何设置', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1800, 1800, 'post.admin', '管理员', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1801, 1801, 'post.teacher', '教师', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1802, 1802, 'post.student', '学生', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1804, 1804, 'post.export.id', '职位编号 ', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1805, 1805, 'post.export.code', '职位编码', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1806, 1806, 'post.export.name', '职位名称', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1807, 1807, 'post.export.sort', '职位排序', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1808, 1808, 'post.export.status', '职位状态', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1809, 1809, 'post.noData', '没有可访问职位数据!', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1810, 1810, 'post.errNameExists', '操作职位【{name}】失败,职位名称已存在已存在', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1837, 1837, 'user.export.deptID', '班级编号', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1838, 1838, 'user.export.deptName', '班级名称', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1839, 1839, 'user.export.deptLeader', '班级负责人', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1919, 1919, 'log.operate.export.deptName', '操作人员班级名称', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1947, 1947, 'log.operate.title.sysDept', '班级', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1951, 1951, 'log.operate.title.sysPost', '职位', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); + + +-- 实训教学 +INSERT INTO `sys_dict_data` VALUES (800, 800, 'menu.config.configParamApply', '配置应用申请', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (801, 801, 'dictType.pt_config_apply_status', '配置申请应用状态', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (802, 802, 'dictData.pt_config_apply_status.0', '申请', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (803, 803, 'dictData.pt_config_apply_status.1', '撤回', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (804, 804, 'dictData.pt_config_apply_status.2', '应用', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (805, 805, 'dictData.pt_config_apply_status.3', '退回', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); + SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_dict_data2_i18n_en.sql b/database/install/sys_dict_data2_i18n_en.sql index dd59fa10..eed06514 100644 --- a/database/install/sys_dict_data2_i18n_en.sql +++ b/database/install/sys_dict_data2_i18n_en.sql @@ -696,4 +696,52 @@ INSERT INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Se 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, ''); +-- 字典数据-英文 +REPLACE INTO `sys_dict_data` VALUES (3016, 3016, 'menu.security.dept', 'Class Management', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3017, 3017, 'menu.security.post', 'Position Management', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3035, 3035, 'menu.security.deptRemark', 'Class management menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3036, 3036, 'menu.security.postRemark', 'Job Management Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3464, 3464, 'dictData.datascope.dept', 'Class Data Permissions', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3465, 3465, 'dictData.datascope.deptAndChid', 'Class and below', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3600, 3600, 'dept.root', 'XXXX University', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3601, 3601, 'dept.root.item1', 'Unspecified', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3602, 3602, 'dept.noData', 'There is no accessible class data!', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3603, 3603, 'dept.errParentDelFlag', 'The parent class [{name}] has been deleted and is not allowed to be added.', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3604, 3604, 'dept.errParentStatus', 'Parent class [{name}] is deactivated, additions are not allowed!', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3605, 3605, 'dept.errNameExists', 'Manipulate class [{name}] failed, class name already exists!', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3606, 3606, 'dept.errParentID', 'Failed to operate class [{name}], the parent class cannot be itself.', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3607, 3607, 'dept.errHasChildUse', 'Operation failed, the class contains undeactivated sub-classs number: {num}', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3608, 3608, 'dept.errHasUserUse', 'Deletion is not allowed, number of users the class has been assigned to: {num}', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3752, 3752, 'role.teacher', 'Teacher', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3753, 3753, 'role.student', 'Student', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3756, 3756, 'role.adminRemark', 'Administrator Can perform any operation on the device', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3757, 3757, 'role.teacherRemark', 'Teachers can read data from the device and configure the device, but cannot perform software upgrade operations on the device.', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3758, 3758, 'role.studentRemark', 'Students can only read data from the device and cannot make any settings to the device', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3800, 3800, 'post.admin', 'Systems', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3801, 3801, 'post.teacher', 'Teacher', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3802, 3802, 'post.student', 'Student', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3803, 3803, 'post.visitor', 'Monitoring', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3804, 3804, 'post.export.id', 'Position Number', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3805, 3805, 'post.export.code', 'Position Code', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3806, 3806, 'post.export.name', 'Position Name', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3807, 3807, 'post.export.sort', 'Position Sort', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3808, 3808, 'post.export.status', 'Position Status', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3809, 3809, 'post.noData', 'There is no accessible post data!', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3810, 3810, 'post.errNameExists', 'Failed to manipulate post [{name}], post name already exists already exists', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3837, 3837, 'user.export.deptID', 'Class number', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3838, 3838, 'user.export.deptName', 'Class', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3839, 3839, 'user.export.deptLeader', 'Class Head', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3919, 3919, 'log.operate.export.deptName', 'Operator Class Name', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3947, 3947, 'log.operate.title.sysDept', 'Class', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3951, 3951, 'log.operate.title.sysPost', 'Positions', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); + + +-- 实训教学 +INSERT INTO `sys_dict_data` VALUES (900, 900, 'menu.config.configParamApply', 'Configuring Application Requests', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (901, 901, 'dictType.pt_config_apply_status', 'Configuring Application Status', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (902, 902, 'dictData.pt_config_apply_status.0', 'Request', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (903, 903, 'dictData.pt_config_apply_status.1', 'Revoke', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (904, 904, 'dictData.pt_config_apply_status.2', 'Applicable', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (905, 905, 'dictData.pt_config_apply_status.3', 'GoBack', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); + SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_dict_type.sql b/database/install/sys_dict_type.sql index bd46756b..73265604 100644 --- a/database/install/sys_dict_type.sql +++ b/database/install/sys_dict_type.sql @@ -57,6 +57,9 @@ INSERT INTO `sys_dict_type` VALUES (122, 'dictType.ne_info_status', 'ne_info_sta 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 (80, 'dictType.pt_config_apply_status', 'pt_config_apply_status', '1', 'supervisor', 1702020000000, '', 0, ''); + UNLOCK TABLES; -- Dump completed on 2024-04-12 21:19:20 diff --git a/database/install/sys_menu.sql b/database/install/sys_menu.sql index ce288a79..bab1fa2d 100644 --- a/database/install/sys_menu.sql +++ b/database/install/sys_menu.sql @@ -212,4 +212,8 @@ INSERT INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 't 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 (10, 'menu.config.configNETreeTable', 4, 4, 'configNETreeTable', 'configManage/configParamTreeTable/index', '1', '1', 'M', '1', '1', 'configManage:configParam:index', 'icon-wofaqi', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (11, 'menu.config.configParamApply', 4, 6, 'configParamApply', 'configManage/configParamApply/index', '1', '0', 'M', '1', '1', 'configManage:configParamApply:index', 'icon-huidingbu', 'supervisor', 1724144595914, '', 0, ''); + SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_post.sql b/database/install/sys_post.sql index f0d81ee2..a92d4311 100644 --- a/database/install/sys_post.sql +++ b/database/install/sys_post.sql @@ -24,9 +24,9 @@ CREATE TABLE `sys_post` ( LOCK TABLES `sys_post` WRITE; -INSERT INTO `sys_post` VALUES (1, 'administator', 'post.admin', 1, '1', 'supervisor', 1697110106499, NULL, 0, NULL); -INSERT INTO `sys_post` VALUES (2, 'operator', 'post.operator', 2, '1', 'supervisor', 1697110106499, NULL, 0, NULL); -INSERT INTO `sys_post` VALUES (3, 'monitor', 'post.monitor', 3, '1', 'supervisor', 1697110106499, NULL, 0, NULL); +INSERT INTO `sys_post` VALUES (1, 'admin', 'post.admin', 1, '1', 'supervisor', 1697110106499, NULL, 0, NULL); +INSERT INTO `sys_post` VALUES (2, 'teacher', 'post.teacher', 2, '1', 'supervisor', 1697110106499, NULL, 0, NULL); +INSERT INTO `sys_post` VALUES (3, 'student', 'post.student', 3, '1', 'supervisor', 1697110106499, NULL, 0, NULL); INSERT INTO `sys_post` VALUES (4, 'visitor', 'post.visitor', 4, '1', 'supervisor', 1697110106499, NULL, 0, NULL); UNLOCK TABLES; diff --git a/database/install/sys_role.sql b/database/install/sys_role.sql index 3376f7d9..4d32cee0 100644 --- a/database/install/sys_role.sql +++ b/database/install/sys_role.sql @@ -30,10 +30,10 @@ CREATE TABLE `sys_role` ( LOCK TABLES `sys_role` WRITE; INSERT INTO `sys_role` VALUES (1, 'role.system', 'system', 1, '1', '1', '1', '1', '0', 'supervisor', 1697091437683, 'supervisor', 1697091437683, 'role.systemRemark'); -INSERT INTO `sys_role` VALUES (2, 'role.admin', 'admin', 2, '1', '1', '1', '1', '0', 'supervisor', 1698486915894, 'supervisor', 1717143830709, 'role.adminRemark'); -INSERT INTO `sys_role` VALUES (3, 'role.operator', 'operator', 3, '1', '1', '1', '1', '0', 'supervisor', 1698486934900, 'supervisor', 1717143582784, 'role.operatorRemark'); -INSERT INTO `sys_role` VALUES (4, 'role.monitor', 'monitor', 4, '1', '1', '1', '1', '0', 'supervisor', 1698486950714, 'supervisor', 1706774389300, 'role.monitorRemark'); -INSERT INTO `sys_role` VALUES (5, 'role.vistor', 'vistor', 5, '1', '1', '1', '1', '0', 'supervisor', 1698486975779, 'supervisor', 1706774405096, 'role.vistorRemark'); +INSERT INTO `sys_role` VALUES (2, 'role.admin', 'admin', 1, '1', '1', '1', '1', '0', 'supervisor', 1698486915894, 'supervisor', 1717143830709, 'role.adminRemark'); +INSERT INTO `sys_role` VALUES (3, 'role.teacher', 'teacher', 2, '4', '1', '1', '1', '0', 'supervisor', 1698486934900, 'supervisor', 1717143582784, 'role.teacherRemark'); +INSERT INTO `sys_role` VALUES (4, 'role.student', 'student', 3, '5', '1', '1', '1', '0', 'supervisor', 1698486950714, 'supervisor', 1706774389300, 'role.studentRemark'); +INSERT INTO `sys_role` VALUES (5, 'role.vistor', 'vistor', 4, '5', '1', '1', '1', '0', 'supervisor', 1698486975779, 'supervisor', 1706774405096, 'role.vistorRemark'); UNLOCK TABLES; diff --git a/database/install/sys_role_menu.sql b/database/install/sys_role_menu.sql index bbb815d0..b43d4a3d 100644 --- a/database/install/sys_role_menu.sql +++ b/database/install/sys_role_menu.sql @@ -20,19 +20,12 @@ 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); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 101); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 102); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 103); 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); @@ -65,16 +58,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1021); 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); @@ -92,24 +79,14 @@ 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); 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, 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, 2107); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2108); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2109); @@ -119,13 +96,10 @@ 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, 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); @@ -151,29 +125,21 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2153); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2154); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2155); INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2156); -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, 2165); - 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, 100); 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, 1000); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1001); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1002); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1003); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1004); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1005); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1006); 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); @@ -188,17 +154,16 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2088); 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, 2097); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2099); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2104); 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, 2118); 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); @@ -212,46 +177,37 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2137); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2138); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2140); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2141); -INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2143); -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 (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, 5); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 501); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1039); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1041); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1042); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1044); -INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1048); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2009); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2010); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2080); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2081); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2082); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2083); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2086); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2087); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2088); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2089); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2091); -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, 2099); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2104); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2118); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2120); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2123); 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,22 +221,13 @@ 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, 2163); -INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165); - -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 (4, 3000); 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, 2080); +INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2081); +INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2082); INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132); -INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165); UNLOCK TABLES; --- Dump completed on 2024-04-12 21:19:19 +-- Dump completed on 2023-07-13 15:53:31 diff --git a/database/install/sys_user.sql b/database/install/sys_user.sql index 3292b4bd..fb26c2bb 100644 --- a/database/install/sys_user.sql +++ b/database/install/sys_user.sql @@ -34,10 +34,15 @@ CREATE TABLE `sys_user` ( LOCK TABLES `sys_user` WRITE; /*!40000 ALTER TABLE `sys_user` DISABLE KEYS */; +-- INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', 'sys', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); +-- INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', 'sys', '', '', '', '0', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); +-- INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', 'sys', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); +-- INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', 'sys', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); + INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', 'sys', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', 'sys', '', '', '', '0', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); -INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', 'sys', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); -INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', 'sys', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); +INSERT INTO `sys_user` VALUES (3, 101, 'testTeacher', 'Teacher', 'sys', '', '', '0', '', '$2a$10$7J0zKKV9HHyZyuh03yCYvew695nsxfYqQ6cXKEcFS/GZATsxS4UT6', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); +INSERT INTO `sys_user` VALUES (4, 101, 'testStudent', 'Student', 'sys', '', '', '0', '', '$2a$10$7J0zKKV9HHyZyuh03yCYvew695nsxfYqQ6cXKEcFS/GZATsxS4UT6', '1', '0', '127.0.0.1', 0, 'system', 0, '', 0, ''); UNLOCK TABLES; diff --git a/src/app.go b/src/app.go index 743f79fd..44480c6f 100644 --- a/src/app.go +++ b/src/app.go @@ -15,6 +15,7 @@ import ( "be.ems/src/modules/monitor" networkdata "be.ems/src/modules/network_data" networkelement "be.ems/src/modules/network_element" + practicalTraining "be.ems/src/modules/practical_training" "be.ems/src/modules/system" "be.ems/src/modules/tool" "be.ems/src/modules/trace" @@ -140,6 +141,8 @@ func initModulesRoute(app *gin.Engine) { networkelement.Setup(app) // 网元数据模块 networkdata.Setup(app) + // 实训教学模块 + practicalTraining.Setup(app) // 跟踪模块 trace.Setup(app) // 图表模块 diff --git a/src/assets/template/excel/student_import_template_en.xlsx b/src/assets/template/excel/student_import_template_en.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..54f1010f9ebfa22d4b2f82609d72cac8c407b0d1 GIT binary patch literal 11077 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 bi-mB-2UF{6V&nY1Pxfcv{xL_y@;CQCP}@we diff --git a/src/assets/template/excel/user_import_template_zh.xlsx b/src/assets/template/excel/user_import_template_zh.xlsx index 0f034a35ceaf406b17c02068f21c7553bc475ad9..b51fd7ebb41f48b8c0b65651f8fa4aa4d36a8bf0 100644 GIT binary patch delta 7337 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%0AybU7MvnjsgXeE{=&+SQUT>gn<7L?*AJc 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 diff --git a/src/modules/practical_training/README.md b/src/modules/practical_training/README.md index 735a6811..f4dbdf03 100644 --- a/src/modules/practical_training/README.md +++ b/src/modules/practical_training/README.md @@ -4,7 +4,7 @@ ## 静态资源 add_file -将目录下文件放置到对应目录 +将目录下文件放置到对应目录 约17个文件变更 - assets 对应覆盖 src\assets - database 对应覆盖 database