From ec57024cca54a31cf5f656502929e19d7af06804 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 1 Mar 2024 19:01:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B8=A6=E4=B8=BB=E6=9C=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/controller/ne_info.go | 20 +++++++++++++++++-- src/modules/network_element/model/ne_info.go | 4 ++++ .../repository/ne_info.impl.go | 13 +++++++++--- .../network_element/service/ne_info.go | 4 +++- .../network_element/service/ne_info.impl.go | 15 ++++++++++++-- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/modules/network_element/controller/ne_info.go b/src/modules/network_element/controller/ne_info.go index 285d89b2..97b87225 100644 --- a/src/modules/network_element/controller/ne_info.go +++ b/src/modules/network_element/controller/ne_info.go @@ -140,7 +140,7 @@ func (s *NeInfoController) Info(c *gin.Context) { return } - neHost := s.neInfoService.SelectById(infoId) + neHost := s.neInfoService.SelectById(infoId, true) if neHost.ID != infoId { // 没有可访问网元信息数据! c.JSON(200, result.ErrMsg(i18n.TKey(language, "neInfo.noData"))) @@ -193,6 +193,14 @@ func (s *NeInfoController) Add(c *gin.Context) { return } + // 下发网管配置信息给网元 + _, err = neService.NeConfigOMC(body) + if err == nil { + body.Status = "1" + } else { + body.Status = "0" + } + insertId := s.neInfoService.Insert(body) if insertId != "" { c.JSON(200, result.Ok(nil)) @@ -223,13 +231,21 @@ func (s *NeInfoController) Edit(c *gin.Context) { } // 检查是否存在 - neInfo := s.neInfoService.SelectById(body.ID) + neInfo := s.neInfoService.SelectById(body.ID, false) if neInfo.ID != body.ID { // 没有可访问网元信息数据! c.JSON(200, result.ErrMsg(i18n.TKey(language, "neInfo.noData"))) return } + // 下发网管配置信息给网元 + _, err = neService.NeConfigOMC(body) + if err == nil { + body.Status = "1" + } else { + body.Status = "0" + } + rows := s.neInfoService.Update(body) if rows > 0 { c.JSON(200, result.Ok(nil)) diff --git a/src/modules/network_element/model/ne_info.go b/src/modules/network_element/model/ne_info.go index 1cc6833c..86b1ba78 100644 --- a/src/modules/network_element/model/ne_info.go +++ b/src/modules/network_element/model/ne_info.go @@ -16,9 +16,13 @@ type NeInfo struct { NeAddress string `json:"neAddress"` Status string `json:"status"` // 0: 在线 1: 下线 2: 备用 3: 工程 UpdateTime string `json:"updateTime"` + HostIDs string `json:"hostIds"` // 网元主机ID组 数据格式(ssh,telnet,telnet) // ====== 非数据库字段属性 ====== // 服务状态 ServerState map[string]any `json:"serverState,omitempty"` + + // 主机对象组 + Hosts []NeHost `json:"hosts,omitempty" binding:"hosts"` } diff --git a/src/modules/network_element/repository/ne_info.impl.go b/src/modules/network_element/repository/ne_info.impl.go index dc2f1512..93971cf9 100644 --- a/src/modules/network_element/repository/ne_info.impl.go +++ b/src/modules/network_element/repository/ne_info.impl.go @@ -33,7 +33,7 @@ var neListSort = []string{ // 实例化数据层 NeInfoImpl 结构体 var NewNeInfoImpl = &NeInfoImpl{ - selectSql: `select id, ne_type, ne_id, rm_uid, ne_name, ip, port, pv_flag, province, vendor_name, dn, ne_address, status, update_time from ne_info`, + selectSql: `select id, ne_type, ne_id, rm_uid, ne_name, ip, port, pv_flag, province, vendor_name, dn, ne_address, status, update_time, host_ids from ne_info`, resultMap: map[string]string{ "id": "ID", @@ -50,6 +50,7 @@ var NewNeInfoImpl = &NeInfoImpl{ "ne_address": "NeAddress", "status": "Status", "update_time": "UpdateTime", + "host_ids": "HostIDs", }, } @@ -291,13 +292,16 @@ func (r *NeInfoImpl) Insert(neInfo model.NeInfo) string { params["vendor_name"] = neInfo.VendorName } if neInfo.Dn != "" { - params["dn"] = neInfo.VendorName + params["dn"] = neInfo.Dn } if neInfo.NeAddress != "" { params["ne_address"] = neInfo.NeAddress } params["status"] = neInfo.Status params["update_time"] = time.Now() + if neInfo.HostIDs != "" { + params["host_ids"] = neInfo.HostIDs + } // 构建执行语句 keys, placeholder, values := repo.KeyPlaceholderValueByInsert(params) @@ -353,10 +357,13 @@ func (r *NeInfoImpl) Update(neInfo model.NeInfo) int64 { } params["province"] = neInfo.Province params["vendor_name"] = neInfo.VendorName - params["dn"] = neInfo.VendorName + params["dn"] = neInfo.Dn params["ne_address"] = neInfo.NeAddress params["status"] = neInfo.Status params["update_time"] = time.Now() + if neInfo.HostIDs != "" { + params["host_ids"] = neInfo.HostIDs + } // 构建执行语句 keys, values := repo.KeyValueByUpdate(params) diff --git a/src/modules/network_element/service/ne_info.go b/src/modules/network_element/service/ne_info.go index 3e122d42..cbf36642 100644 --- a/src/modules/network_element/service/ne_info.go +++ b/src/modules/network_element/service/ne_info.go @@ -24,7 +24,9 @@ type INeInfo interface { SelectList(ne model.NeInfo, bandStatus bool) []model.NeInfo // SelectByIds 通过ID查询 - SelectById(infoId string) model.NeInfo + // + // bandStatus 带主机信息 + SelectById(infoId string, bandHost bool) model.NeInfo // Insert 新增信息 Insert(neInfo model.NeInfo) string diff --git a/src/modules/network_element/service/ne_info.impl.go b/src/modules/network_element/service/ne_info.impl.go index 2f862f46..e4bc4d8e 100644 --- a/src/modules/network_element/service/ne_info.impl.go +++ b/src/modules/network_element/service/ne_info.impl.go @@ -3,6 +3,7 @@ package service import ( "encoding/json" "fmt" + "strings" "ems.agt/src/framework/constants/cachekey" "ems.agt/src/framework/redis" @@ -13,12 +14,15 @@ import ( // 实例化服务层 NeInfoImpl 结构体 var NewNeInfoImpl = &NeInfoImpl{ neInfoRepository: repository.NewNeInfoImpl, + neHostRepository: repository.NewNeHostImpl, } // 网元信息 服务层处理 type NeInfoImpl struct { // 网元信息数据信息 neInfoRepository repository.INeInfo + // 网元主机连接表 + neHostRepository repository.INeHost } // SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息 @@ -123,13 +127,20 @@ func (r *NeInfoImpl) SelectList(ne model.NeInfo, bandStatus bool) []model.NeInfo } // SelectByIds 通过ID查询 -func (r *NeInfoImpl) SelectById(infoId string) model.NeInfo { +// +// bandStatus 带主机信息 +func (r *NeInfoImpl) SelectById(infoId string, bandHost bool) model.NeInfo { if infoId == "" { return model.NeInfo{} } neInfos := r.neInfoRepository.SelectByIds([]string{infoId}) if len(neInfos) > 0 { - return neInfos[0] + neInfo := neInfos[0] + // 带主机信息 + if neInfo.HostIDs != "" && bandHost { + neInfo.Hosts = r.neHostRepository.SelectByIds(strings.Split(neInfo.HostIDs, ",")) + } + return neInfo } return model.NeInfo{} }