diff --git a/src/modules/ws/processor/ne_state.go b/src/modules/ws/processor/ne_state.go new file mode 100644 index 00000000..38d9baf9 --- /dev/null +++ b/src/modules/ws/processor/ne_state.go @@ -0,0 +1,57 @@ +package processor + +import ( + "encoding/json" + "fmt" + + "ems.agt/src/framework/logger" + "ems.agt/src/framework/vo/result" + neService "ems.agt/src/modules/network_element/service" +) + +// GetNeState 获取网元服务状态 +func GetNeState(requestID string, data any) ([]byte, error) { + msgByte, _ := json.Marshal(data) + var querys struct { + NeType string `json:"neType" form:"neType" binding:"required"` + NeID string `json:"neId" form:"neId" binding:"required"` + } + err := json.Unmarshal(msgByte, &querys) + if err != nil { + logger.Warnf("ws processor GetUPFTotalFlow err: %s", err.Error()) + return nil, fmt.Errorf("query data structure error") + } + + if querys.NeType == "" || querys.NeID == "" { + return nil, fmt.Errorf("query neType any neId empty") + } + + // 查询网元获取IP + neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) + if neInfo.NeId != querys.NeID || neInfo.IP == "" { + return nil, fmt.Errorf("no matching network element information found") + } + + // 网元直连 + resData, err := neService.NeState(neInfo) + if err != nil { + resultByte, err := json.Marshal(result.Ok(map[string]any{ + "requestId": requestID, + "data": map[string]any{ + "online": false, + "neId": neInfo.NeId, + "neName": neInfo.NeName, + "neType": neInfo.NeType, + "neIP": neInfo.IP, + }, + })) + return resultByte, err + } + + resData["online"] = true + resultByte, err := json.Marshal(result.Ok(map[string]any{ + "requestId": requestID, + "data": resData, + })) + return resultByte, err +} diff --git a/src/modules/ws/service/ws_receive.impl.go b/src/modules/ws/service/ws_receive.impl.go index 754036b6..697d9880 100644 --- a/src/modules/ws/service/ws_receive.impl.go +++ b/src/modules/ws/service/ws_receive.impl.go @@ -33,6 +33,8 @@ func (s *WSReceiveImpl) Receive(client *model.WSClient, reqMsg model.WSRequest) resByte, err = processor.GetUEConnect(reqMsg.RequestID, reqMsg.Data) case "upf_tf": resByte, err = processor.GetUPFTotalFlow(reqMsg.RequestID, reqMsg.Data) + case "ne_state": + resByte, err = processor.GetNeState(reqMsg.RequestID, reqMsg.Data) default: return fmt.Errorf("message type not supported") }