add: cdr and ue event for multi-tenancy

This commit is contained in:
2024-07-04 18:25:25 +08:00
parent 97f53e44e4
commit 52bb4cb69c
16 changed files with 279 additions and 66 deletions

View File

@@ -33,6 +33,7 @@ type UEEvent struct {
Timestamp int64 `json:"timestamp" xorm:"timestamp"`
EventType string `json:"eventType" xorm:"event_type"`
EventJson map[string]any `json:"eventJSON" xorm:"event_json"`
TenantID string `json:"tenantID" xorm:"tenant_id"`
}
func PostUEEventFromAMF(c *gin.Context) {
@@ -64,6 +65,16 @@ func PostUEEventFromAMF(c *gin.Context) {
ueEvent.EventType = eventType
log.Trace("ueEvent AMF:", ueEvent)
// for multi-tenancy
where := fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%v' like tenancy_key", ueEvent.EventJson["imsi"])
tenantID, err := dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where)
if err != nil {
log.Errorf("failed to get tenant_id:%v", err)
}
if tenantID != "" {
ueEvent.TenantID = tenantID
}
affected, err := dborm.XormInsertTableOne("ue_event_amf", ueEvent)
if err != nil && affected <= 0 {
log.Error("Failed to insert ue_event_amf:", err)
@@ -87,6 +98,16 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) {
return
}
// for multi-tenancy
where := fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%v' like tenancy_key", ueEvent.EventJson["imsi"])
tenantID, err := dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where)
if err != nil {
log.Errorf("failed to get tenant_id:%v", err)
}
if tenantID != "" {
ueEvent.TenantID = tenantID
}
ueEvent.NeType = strings.ToUpper(neType)
tableName := fmt.Sprintf("ue_event_%s", strings.ToLower(neType))
affected, err := dborm.XormInsertTableOne(tableName, ueEvent)