From 066b9d41c9702e82d60088f688cdb86f36151e8a Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 29 Aug 2025 16:23:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20license=E4=BF=A1=E6=81=AF=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=94=A8=E6=88=B7=E6=95=B0/=E5=9F=BA=E7=AB=99?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E6=AE=B5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/install/ne_license.sql | 30 ++++++++++--------- database/upgrade/upg_ne_license.sql | 2 ++ .../network_element/controller/ne_info.go | 12 ++++++++ .../network_element/controller/ne_license.go | 13 ++++++-- .../network_element/fetch_link/ne_state.go | 18 +++++++++-- .../network_element/model/ne_license.go | 2 ++ .../network_element/repository/ne_license.go | 16 +++++++++- 7 files changed, 73 insertions(+), 20 deletions(-) diff --git a/database/install/ne_license.sql b/database/install/ne_license.sql index 9df0c78f..9f3f1292 100644 --- a/database/install/ne_license.sql +++ b/database/install/ne_license.sql @@ -15,6 +15,8 @@ CREATE TABLE `ne_license` ( `license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '激活授权文件', `serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '序列号', `expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '许可证到期日期', + `ue_number` bigint DEFAULT '0' COMMENT '用户容量', + `nb_number` bigint DEFAULT '0' COMMENT '基站容量', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态 0无效 1有效', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注', `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', @@ -26,19 +28,19 @@ CREATE TABLE `ne_license` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元授权激活信息'; -- 初始数据对应网元 -INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (2, 'IMS', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (3, 'AMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (4, 'AUSF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (5, 'UDM', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (6, 'SMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (7, 'PCF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (8, 'NSSF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (9, 'NRF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (10, 'UPF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (11, 'LMF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (12, 'NEF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (13, 'MME', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); -INSERT INTO `ne_license` VALUES (14, 'N3IWF', '001', '', '', '', '', '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (2, 'IMS', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (3, 'AMF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (4, 'AUSF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (5, 'UDM', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (6, 'SMF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (7, 'PCF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (8, 'NSSF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (9, 'NRF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (10, 'UPF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (11, 'LMF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (12, 'NEF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (13, 'MME', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); +INSERT INTO `ne_license` VALUES (14, 'N3IWF', '001', '', '', '', '', 0, 0, '0', '', 'supervisor', 1713928436971, '', 0); SET FOREIGN_KEY_CHECKS=1; diff --git a/database/upgrade/upg_ne_license.sql b/database/upgrade/upg_ne_license.sql index cf221fc6..51e01769 100644 --- a/database/upgrade/upg_ne_license.sql +++ b/database/upgrade/upg_ne_license.sql @@ -27,6 +27,8 @@ ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `activation_request_code` varc ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '激活授权文件' AFTER `activation_request_code`; ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' COMMENT '序列号' AFTER `license_path`; ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' COMMENT '许可证到期日期' AFTER `serial_num`; +ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `ue_number` bigint NULL DEFAULT 0 COMMENT '用户容量' AFTER `expiry_date`; +ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `nb_number` bigint NULL DEFAULT 0 COMMENT '基站容量' AFTER `ue_number`; ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' AFTER `status`; ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者' AFTER `remark`; ALTER TABLE `ne_license` ADD COLUMN IF NOT EXISTS `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `create_by`; diff --git a/src/modules/network_element/controller/ne_info.go b/src/modules/network_element/controller/ne_info.go index eda83f76..031e0ff4 100644 --- a/src/modules/network_element/controller/ne_info.go +++ b/src/modules/network_element/controller/ne_info.go @@ -397,6 +397,12 @@ func (s *NeInfoController) Add(c *gin.Context) { neLicense.ExpiryDate = v.(string) neLicense.Status = "1" } + if v, ok := body.ServerState["ueNumber"]; ok && v != nil { + neLicense.UeNumber = parse.Number(v) + } + if v, ok := body.ServerState["nbNumber"]; ok && v != nil { + neLicense.NbNumber = parse.Number(v) + } } s.neVersionService.Insert(neVersion) @@ -492,6 +498,12 @@ func (s *NeInfoController) Edit(c *gin.Context) { neLicense.Status = "1" neLicense.UpdateBy = loginUserName } + if v, ok := body.ServerState["ueNumber"]; ok && v != nil { + neLicense.UeNumber = parse.Number(v) + } + if v, ok := body.ServerState["nbNumber"]; ok && v != nil { + neLicense.NbNumber = parse.Number(v) + } } if neVersion.ID != "" { diff --git a/src/modules/network_element/controller/ne_license.go b/src/modules/network_element/controller/ne_license.go index 0b015e22..b608954f 100644 --- a/src/modules/network_element/controller/ne_license.go +++ b/src/modules/network_element/controller/ne_license.go @@ -8,6 +8,7 @@ import ( "be.ems/src/framework/i18n" "be.ems/src/framework/utils/ctx" + "be.ems/src/framework/utils/parse" "be.ems/src/framework/vo/result" neFetchlink "be.ems/src/modules/network_element/fetch_link" "be.ems/src/modules/network_element/model" @@ -154,6 +155,8 @@ func (s *NeLicenseController) Code(c *gin.Context) { } else { neLicense.SerialNum = "" neLicense.ExpiryDate = "" + neLicense.UeNumber = 0 + neLicense.NbNumber = 0 neLicense.Status = "0" } neLicense.UpdateBy = ctx.LoginUserToUserName(c) @@ -256,6 +259,8 @@ func (s *NeLicenseController) State(c *gin.Context) { neLicense.Status = "1" neLicense.SerialNum = fmt.Sprint(neState["sn"]) neLicense.ExpiryDate = fmt.Sprint(neState["expire"]) + neLicense.UeNumber = parse.Number(neState["ueNumber"]) + neLicense.NbNumber = parse.Number(neState["nbNumber"]) } else { neLicense.Status = "0" } @@ -271,9 +276,11 @@ func (s *NeLicenseController) State(c *gin.Context) { s.neLicenseService.Update(neLicense) if neLicense.Status == "1" { - c.JSON(200, result.OkData(map[string]string{ - "sn": neLicense.SerialNum, - "expire": neLicense.ExpiryDate, + c.JSON(200, result.OkData(map[string]any{ + "sn": neLicense.SerialNum, + "expire": neLicense.ExpiryDate, + "ueNumber": neLicense.UeNumber, + "nbNumber": neLicense.NbNumber, })) return } diff --git a/src/modules/network_element/fetch_link/ne_state.go b/src/modules/network_element/fetch_link/ne_state.go index fd1bbf18..a324b38e 100644 --- a/src/modules/network_element/fetch_link/ne_state.go +++ b/src/modules/network_element/fetch_link/ne_state.go @@ -8,6 +8,7 @@ import ( "be.ems/src/framework/logger" "be.ems/src/framework/utils/fetch" + "be.ems/src/framework/utils/parse" "be.ems/src/modules/network_element/model" ) @@ -39,7 +40,7 @@ func NeState(neInfo model.NeInfo) (map[string]any, error) { } } - return map[string]any{ + info := map[string]any{ "neType": neInfo.NeType, "neId": neInfo.NeId, "neName": neInfo.NeName, @@ -55,5 +56,18 @@ func NeState(neInfo model.NeInfo) (map[string]any, error) { "cpu": resData["cpuUsage"], "mem": resData["memUsage"], "disk": resData["diskSpace"], - }, nil + } + + if ueNumber, ok := resData["capability"]; ok { + info["ueNumber"] = parse.Number(ueNumber) + } else { + info["ueNumber"] = 0 + } + if nbNumber, ok := resData["nbNumber"]; ok { + info["nbNumber"] = parse.Number(nbNumber) + } else { + info["nbNumber"] = 0 + } + + return info, nil } diff --git a/src/modules/network_element/model/ne_license.go b/src/modules/network_element/model/ne_license.go index 0a08802c..77428e20 100644 --- a/src/modules/network_element/model/ne_license.go +++ b/src/modules/network_element/model/ne_license.go @@ -9,6 +9,8 @@ type NeLicense struct { LicensePath string `json:"licensePath" gorm:"license_path"` // 激活授权文件 SerialNum string `json:"serialNum" gorm:"serial_num"` // 序列号 ExpiryDate string `json:"expiryDate" gorm:"expiry_date"` // 许可证到期日期 + UeNumber int64 `json:"ueNumber" gorm:"ue_number"` // 用户容量 + NbNumber int64 `json:"nbNumber" gorm:"nb_number"` // 基站容量 Status string `json:"status" gorm:"status"` // 状态 0无效 1有效 Remark string `json:"remark" gorm:"remark"` // 备注 CreateBy string `json:"createBy" gorm:"create_by"` // 创建者 diff --git a/src/modules/network_element/repository/ne_license.go b/src/modules/network_element/repository/ne_license.go index 1d506fec..eaa5781c 100644 --- a/src/modules/network_element/repository/ne_license.go +++ b/src/modules/network_element/repository/ne_license.go @@ -14,7 +14,7 @@ import ( // 实例化数据层 NeLicense 结构体 var NewNeLicense = &NeLicense{ selectSql: `select - id, ne_type, ne_id, activation_request_code, license_path, serial_num, expiry_date, status, remark, create_by, create_time, update_by, update_time + id, ne_type, ne_id, activation_request_code, license_path, serial_num, expiry_date, ue_number, nb_number, status, remark, create_by, create_time, update_by, update_time from ne_license`, resultMap: map[string]string{ @@ -25,6 +25,8 @@ var NewNeLicense = &NeLicense{ "license_path": "LicensePath", "serial_num": "SerialNum", "expiry_date": "ExpiryDate", + "ue_number": "UeNumber", + "nb_number": "NbNumber", "status": "Status", "remark": "Remark", "create_by": "CreateBy", @@ -202,6 +204,12 @@ func (r *NeLicense) Insert(neLicense model.NeLicense) string { if neLicense.ExpiryDate != "" { params["expiry_date"] = neLicense.ExpiryDate } + if neLicense.UeNumber > 0 { + params["ue_number"] = neLicense.UeNumber + } + if neLicense.NbNumber > 0 { + params["nb_number"] = neLicense.NbNumber + } if neLicense.Status != "" { params["status"] = neLicense.Status } @@ -262,6 +270,12 @@ func (r *NeLicense) Update(neLicense model.NeLicense) int64 { if neLicense.ExpiryDate != "" { params["expiry_date"] = neLicense.ExpiryDate } + if neLicense.UeNumber > 0 { + params["ue_number"] = neLicense.UeNumber + } + if neLicense.NbNumber > 0 { + params["nb_number"] = neLicense.NbNumber + } if neLicense.Status != "" { params["status"] = neLicense.Status }