diff --git a/src/modules/network_data/network_data.go b/src/modules/network_data/network_data.go index ee2db3a7..95bb9cb6 100644 --- a/src/modules/network_data/network_data.go +++ b/src/modules/network_data/network_data.go @@ -280,6 +280,10 @@ func Setup(router *gin.Engine) { middleware.PreAuthorize(nil), controller.NewMME.NbInfoList, ) + mmeGroup.GET("/nb/list-cfg", + middleware.PreAuthorize(nil), + controller.NewMME.NbStateList, + ) } // 网元SGWC diff --git a/src/modules/network_element/fetch_link/amf.go b/src/modules/network_element/fetch_link/amf.go index 65cce3bf..f1b2dfec 100644 --- a/src/modules/network_element/fetch_link/amf.go +++ b/src/modules/network_element/fetch_link/amf.go @@ -63,16 +63,31 @@ func AMFGnbStateList(neInfo model.NeInfo) ([]map[string]any, error) { resBytes, err := fetch.Get(neUrl, nil, 60_000) if err != nil { errStr := err.Error() - logger.Warnf("AMFNbInfoList Get \"%s\"", neUrl) - logger.Errorf("AMFNbInfoList %s", errStr) + logger.Warnf("AMFGnbStateList Get \"%s\"", neUrl) + logger.Errorf("AMFGnbStateList %s", errStr) return nil, fmt.Errorf("NeService AMF API Error") } - // 序列化结果 {"data":[{"name": "Gnb","address": "192.168.8.1","state": "INACTIVE"}]} + // 序列化结果 + // { + // "data": [ + // { + // "index": 1, + // "name": "Gnb", + // "address": "192.168.8.1", + // "position": "Area-B", + // "offTime": "2024-12-30T16:31:57+08:00", + // "onTime": "2024-12-30T15:41:59+08:00", + // "state": "OFF", + // "nbName": "SA", + // "ueNum": 1 + // }, + // ] + // } var resData map[string]any err = json.Unmarshal(resBytes, &resData) if err != nil { - logger.Errorf("AMFNbInfoList Unmarshal %s", err.Error()) + logger.Errorf("AMFGnbStateList Unmarshal %s", err.Error()) return nil, err } diff --git a/src/modules/network_element/fetch_link/mme.go b/src/modules/network_element/fetch_link/mme.go index 741f48d3..39bd1140 100644 --- a/src/modules/network_element/fetch_link/mme.go +++ b/src/modules/network_element/fetch_link/mme.go @@ -10,7 +10,7 @@ import ( "be.ems/src/modules/network_element/model" ) -// MMENbInfoList AMF基站信息 +// MMENbInfoList MME基站信息 // // 查询参数 {"id":"7"} // @@ -32,7 +32,7 @@ func MMENbInfoList(neInfo model.NeInfo, data map[string]string) ([]map[string]an errStr := err.Error() logger.Warnf("MMENbInfoList Get \"%s\"", neUrl) logger.Errorf("MMENbInfoList %s", errStr) - return nil, fmt.Errorf("NeService AMF API Error") + return nil, fmt.Errorf("NeService MME API Error") } // 序列化结果 {"data":[{"id":"7","name":"NR-SA-GNB","address":"192.168.5.100:60110","ueNum":0}]} @@ -54,3 +54,52 @@ func MMENbInfoList(neInfo model.NeInfo, data map[string]string) ([]map[string]an } return []map[string]any{}, nil } + +// MMEEnbStateList MME基站状态信息,对比配置项enbList +// +// 返回结果 [] +func MMEEnbStateList(neInfo model.NeInfo) ([]map[string]any, error) { + neUrl := fmt.Sprintf("http://%s:%d/api/rest/ueManagement/v1/elementType/mme/objectType/nbState", neInfo.IP, neInfo.Port) + resBytes, err := fetch.Get(neUrl, nil, 60_000) + if err != nil { + errStr := err.Error() + logger.Warnf("MMEEnbStateList Get \"%s\"", neUrl) + logger.Errorf("MMEEnbStateList %s", errStr) + return nil, fmt.Errorf("NeService MME API Error") + } + + // 序列化结果 + // { + // "data": [ + // { + // "index": 1, + // "name": "Enb", + // "address": "192.168.8.1", + // "position": "Area-B", + // "offTime": "2024-12-30T16:31:57+08:00", + // "onTime": "2024-12-30T15:41:59+08:00", + // "state": "OFF", + // "nbName": "SA", + // "ueNum": 1 + // }, + // ] + // } + var resData map[string]any + err = json.Unmarshal(resBytes, &resData) + if err != nil { + logger.Errorf("MMEEnbStateList Unmarshal %s", err.Error()) + return nil, err + } + + // 固定返回字段,方便前端解析 + if v, ok := resData["data"]; ok && v != nil { + if arr := v.([]any); len(arr) > 0 { + result := make([]map[string]any, len(arr)) + for i, item := range arr { + result[i] = item.(map[string]any) + } + return result, nil + } + } + return []map[string]any{}, nil +}