From a009c6db7303ab43299ce54bb71d57d47e2b4572 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 5 Jul 2024 18:44:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=99=E5=AD=A6=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=8B=E5=8F=91=E5=88=B0=E7=BD=91=E5=85=83?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/controller/ne_config.go | 6 +-- .../network_element/fetch_link/ne_config.go | 12 +++--- .../service/pt_ne_config_data.impl.go | 42 +++++++++++++++++-- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/modules/network_element/controller/ne_config.go b/src/modules/network_element/controller/ne_config.go index d518461a..0c74b33c 100644 --- a/src/modules/network_element/controller/ne_config.go +++ b/src/modules/network_element/controller/ne_config.go @@ -225,7 +225,7 @@ func (s *NeConfigController) DataEdit(c *gin.Context) { } // 网元直连 - resData, err := neFetchlink.NeConfigInfoEdit(neInfo, body.ParamName, body.Loc, body.ParamData) + resData, err := neFetchlink.NeConfigUpdate(neInfo, body.ParamName, body.Loc, body.ParamData) if err != nil { c.JSON(200, result.ErrMsg(err.Error())) return @@ -270,7 +270,7 @@ func (s *NeConfigController) DataAdd(c *gin.Context) { } // 网元直连 - resData, err := neFetchlink.NeConfigInfoAdd(neInfo, body.ParamName, body.Loc, body.ParamData) + resData, err := neFetchlink.NeConfigInstall(neInfo, body.ParamName, body.Loc, body.ParamData) if err != nil { c.JSON(200, result.ErrMsg(err.Error())) return @@ -308,7 +308,7 @@ func (s *NeConfigController) DataRemove(c *gin.Context) { } // 网元直连 - resData, err := neFetchlink.NeConfigInfoDel(neInfo, query.ParamName, query.Loc) + resData, err := neFetchlink.NeConfigDelete(neInfo, query.ParamName, query.Loc) if err != nil { c.JSON(200, result.ErrMsg(err.Error())) return diff --git a/src/modules/network_element/fetch_link/ne_config.go b/src/modules/network_element/fetch_link/ne_config.go index cf0b46e0..c385e4d1 100644 --- a/src/modules/network_element/fetch_link/ne_config.go +++ b/src/modules/network_element/fetch_link/ne_config.go @@ -69,8 +69,8 @@ func NeConfigInfo(neInfo model.NeInfo, paramName string) (map[string]any, error) return resData, nil } -// NeConfigInfoEdit 网元配置更新 -func NeConfigInfoEdit(neInfo model.NeInfo, paramName, loc string, data map[string]any) (map[string]any, error) { +// NeConfigUpdate 网元配置更新 +func NeConfigUpdate(neInfo model.NeInfo, paramName, loc string, data map[string]any) (map[string]any, error) { // array需要层级 if loc != "" { loc = fmt.Sprintf("?loc=%v", loc) @@ -102,8 +102,8 @@ func NeConfigInfoEdit(neInfo model.NeInfo, paramName, loc string, data map[strin return resData, nil } -// NeConfigInfoAdd 网元配置新增 array -func NeConfigInfoAdd(neInfo model.NeInfo, paramName, loc string, data map[string]any) (map[string]any, error) { +// NeConfigInstall 网元配置新增 array +func NeConfigInstall(neInfo model.NeInfo, paramName, loc string, data map[string]any) (map[string]any, error) { // 网元参数配置新增(array) neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/%s?loc=%v", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType), paramName, loc) resBytes, err := fetch.PostJSON(neUrl, data, nil) @@ -131,8 +131,8 @@ func NeConfigInfoAdd(neInfo model.NeInfo, paramName, loc string, data map[string return resData, nil } -// NeConfigInfoDel 网元配置删除 array -func NeConfigInfoDel(neInfo model.NeInfo, paramName, loc string) (map[string]any, error) { +// NeConfigDelete 网元配置删除 array +func NeConfigDelete(neInfo model.NeInfo, paramName, loc string) (map[string]any, error) { // 网元参数配置删除(array) neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/%s?loc=%v", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType), paramName, loc) resBytes, err := fetch.Delete(neUrl, nil) diff --git a/src/modules/practical_training/service/pt_ne_config_data.impl.go b/src/modules/practical_training/service/pt_ne_config_data.impl.go index d86f2c6f..a46326cb 100644 --- a/src/modules/practical_training/service/pt_ne_config_data.impl.go +++ b/src/modules/practical_training/service/pt_ne_config_data.impl.go @@ -3,7 +3,9 @@ package service import ( "encoding/json" "fmt" + "reflect" + "be.ems/src/framework/utils/parse" neFetchlink "be.ems/src/modules/network_element/fetch_link" neModel "be.ems/src/modules/network_element/model" neService "be.ems/src/modules/network_element/service" @@ -205,11 +207,43 @@ func (r *PtNeConfigDataService) ApplyToNe(paramUser, neType string) error { if len(ptConf.ParamData) == 0 { continue } - + // 单层逐个更新 if ptConf.ParamType == "list" { - dataMap := ptConf.ParamData[0] - for k, v := range dataMap { - fmt.Println(k, v) + for k, v := range ptConf.ParamData[0] { + neFetchlink.NeConfigUpdate(neInfo, ptConf.ParamName, "", map[string]any{k: v}) + } + } + // 多层逐个更新 + if ptConf.ParamType == "array" { + // 删除原先配置 + resData, err := neFetchlink.NeConfigInfo(neInfo, ptConf.ParamName) + if err != nil { + continue + } + if data, ok := resData["data"]; ok { + for i := 0; i < len(data.([]any)); i++ { // 倒序遍历 + originIndex := i + newIndex := len(data.([]any)) - originIndex - 1 + element := data.([]any)[newIndex] + loc := parse.Number(element.(map[string]any)["index"]) + neFetchlink.NeConfigDelete(neInfo, ptConf.ParamName, fmt.Sprint(loc)) + } + } + + // 遍历新增 + for _, v := range ptConf.ParamData { + loc := parse.Number(v["index"]) + neFetchlink.NeConfigInstall(neInfo, ptConf.ParamName, fmt.Sprint(loc), v) + // 检查是否有array子层 + for vk, vv := range v { + if reflect.TypeOf(vv).Kind() == reflect.Slice { + for i, item := range vv.([]any) { + data := item.(map[string]any) + data["index"] = i + neFetchlink.NeConfigInstall(neInfo, ptConf.ParamName, fmt.Sprintf("%v/%s/%v", loc, vk, i), data) + } + } + } } } }