diff --git a/features/cdr/cdrevent.go b/features/cdr/cdrevent.go new file mode 100644 index 00000000..c30c98f6 --- /dev/null +++ b/features/cdr/cdrevent.go @@ -0,0 +1,59 @@ +package cdr + +import ( + "encoding/json" + "io" + "net/http" + + "ems.agt/lib/dborm" + "ems.agt/lib/global" + "ems.agt/lib/log" + "ems.agt/lib/services" + "ems.agt/restagent/config" +) + +var ( + UriCDREvent = config.DefaultUriPrefix + "/cdrManagement/v1/elementType/{elementTypeValue}/objectType/cdrEvent" + UriCDRFile = config.DefaultUriPrefix + "/cdrManagement/v1/elementType/{elementTypeValue}/objectType/cdrFile" + + CustomUriCDREvent = config.UriPrefix + "/cdrManagement/v1/elementType/{elementTypeValue}/objectType/cdrEvent" + CustomUriCDRFile = config.UriPrefix + "/cdrManagement/v1/elementType/{elementTypeValue}/objectType/cdrFile" +) + +type CDREvent struct { + NeType string `json:"neType" xorm:"ne_type"` + NeName string `json:"neName" xorm:"ne_name"` + RmUID string `json:"rmUID" xorm:"rm_uid"` + Timestamp int `json:"timestamp" xorm:"timestamp"` + CDR map[string]any `json:"CDR" xorm:"cdr_json"` +} + +func PostCDREventFromNF(w http.ResponseWriter, r *http.Request) { + log.Info("PostCDREventFromNF processing... ") + + // body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) + body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) + if err != nil { + log.Error("Faile to io.ReadAll: ", err) + services.ResponseNotFound404UriNotExist(w, r) + return + } + + cdrEvent := new(CDREvent) + err = json.Unmarshal(body, &cdrEvent) + if err != nil { + log.Error("Failed to Unmarshal cdrEvent:", err) + services.ResponseInternalServerError500ProcessError(w, err) + return + } + log.Trace("cdrEvent:", cdrEvent) + + affected, err := dborm.XormInsertTableOne("cdr_event", cdrEvent) + if err != nil && affected <= 0 { + log.Error("Failed to insert cdr_event:", err) + services.ResponseInternalServerError500ProcessError(w, err) + return + } + + services.ResponseStatusOK204NoContent(w) +} diff --git a/features/pm/performance.go b/features/pm/performance.go index 33694dbd..57ae1784 100644 --- a/features/pm/performance.go +++ b/features/pm/performance.go @@ -172,7 +172,7 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) { log.Trace("Request body:", string(body)) kpiReport := new(KpiReport) _ = json.Unmarshal(body, &kpiReport) - log.Debug("kpiReport:", kpiReport) + log.Trace("kpiReport:", kpiReport) session := xEngine.NewSession() defer session.Close() diff --git a/lib/routes/routes.go b/lib/routes/routes.go index df132c88..a4806494 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -6,6 +6,7 @@ import ( // "log" "ems.agt/features/aaaa" + "ems.agt/features/cdr" "ems.agt/features/cm" "ems.agt/features/dbrest" "ems.agt/features/file" @@ -299,6 +300,9 @@ func init() { Register("GET", ue.UriNSSFSubscriptions, ue.GetSubscriptionsFromNSSF, nil) Register("GET", ue.CustomUriNSSFSubscriptions, ue.GetSubscriptionsFromNSSF, nil) + Register("POST", cdr.UriCDREvent, cdr.PostCDREventFromNF, nil) + Register("POST", cdr.CustomUriCDREvent, cdr.PostCDREventFromNF, nil) + // 进程网络 Register("GET", psnet.UriWs, psnet.ProcessWs, nil) Register("POST", psnet.UriStop, psnet.StopProcess, nil)