From 4ceb871c232b42610daa988ad94e6346e5d2fde8 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 25 Jul 2024 11:14:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20IMS=20CDR=20RecordType=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=AF=AD=E6=B3=95=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/model/cdr_event_smf.go | 9 --------- .../network_data/repository/cdr_event_ims.impl.go | 15 +++++++++++++-- .../network_data/repository/cdr_event_smf.impl.go | 15 --------------- 3 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/modules/network_data/model/cdr_event_smf.go b/src/modules/network_data/model/cdr_event_smf.go index 259c1025..c076da16 100644 --- a/src/modules/network_data/model/cdr_event_smf.go +++ b/src/modules/network_data/model/cdr_event_smf.go @@ -13,15 +13,6 @@ type CDREventSMF struct { CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"` // ====== 非数据库字段属性 ====== - - // RecordType string `json:"recordType" gorm:"column:record_type"` - // ChargingID string `json:"chargingID" gorm:"column:charging_id"` - // SubscriberID string `json:"subscriberID" gorm:"column:subscriber_id"` - // Duration string `json:"duration" gorm:"column:duration"` - // DataVolumeUplink string `json:"dataVolumeUplink" gorm:"column:data_volume_uplink"` - // DataVolumeDownlink string `json:"dataVolumeDownlink" gorm:"column:data_volume_downlink"` - // DataTotalVolume string `json:"dataTotalVolume" gorm:"column:data_total_volume"` - // PDUAddress string `json:"pduAddress" gorm:"column:pdu_address"` } // CDREventSMFQuery CDR会话对象SMF查询参数结构体 diff --git a/src/modules/network_data/repository/cdr_event_ims.impl.go b/src/modules/network_data/repository/cdr_event_ims.impl.go index 8ab83dda..6d67b6ca 100644 --- a/src/modules/network_data/repository/cdr_event_ims.impl.go +++ b/src/modules/network_data/repository/cdr_event_ims.impl.go @@ -84,13 +84,24 @@ func (r *CDREventIMSImpl) SelectPage(querys model.CDREventIMSQuery) map[string]a conditions = append(conditions, "JSON_EXTRACT(cdr_json, '$.calledParty') = ?") params = append(params, querys.CalledParty) } + // MySQL8支持的 + // if querys.RecordType != "" { + // recordTypes := strings.Split(querys.RecordType, ",") + // placeholder := repo.KeyPlaceholderByQuery(len(recordTypes)) + // conditions = append(conditions, fmt.Sprintf("JSON_EXTRACT(cdr_json, '$.recordType') in (%s)", placeholder)) + // for _, recordType := range recordTypes { + // params = append(params, recordType) + // } + // } + // Mariadb不支持json in查询改or if querys.RecordType != "" { recordTypes := strings.Split(querys.RecordType, ",") - placeholder := repo.KeyPlaceholderByQuery(len(recordTypes)) - conditions = append(conditions, fmt.Sprintf("JSON_EXTRACT(cdr_json, '$.recordType') in (%s)", placeholder)) + var queryStrArr []string for _, recordType := range recordTypes { + queryStrArr = append(queryStrArr, "JSON_EXTRACT(cdr_json, '$.recordType') = ?") params = append(params, recordType) } + conditions = append(conditions, fmt.Sprintf("( %s )", strings.Join(queryStrArr, " OR "))) } // 构建查询条件语句 diff --git a/src/modules/network_data/repository/cdr_event_smf.impl.go b/src/modules/network_data/repository/cdr_event_smf.impl.go index 818f1f25..97c98aa7 100644 --- a/src/modules/network_data/repository/cdr_event_smf.impl.go +++ b/src/modules/network_data/repository/cdr_event_smf.impl.go @@ -14,7 +14,6 @@ import ( // 实例化数据层 CDREventSMFImpl 结构体 var NewCDREventSMFImpl = &CDREventSMFImpl{ selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, cdr_json, created_at from cdr_event_smf`, - // selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, JSON_EXTRACT(cdr_json, '$.recordType') AS record_type, JSON_EXTRACT(cdr_json, '$.chargingID') AS charging_id, JSON_EXTRACT(cdr_json, '$.subscriberIdentifier.subscriptionIDData') AS subscriber_id, JSON_EXTRACT(cdr_json, '$.duration') AS duration, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink') AS data_volume_uplink, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink') AS data_volume_downlink, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume') AS data_total_volume, JSON_EXTRACT(cdr_json, '$.pDUSessionChargingInformation.pDUAddress') AS pdu_address, created_at from cdr_event_smf`, resultMap: map[string]string{ "id": "ID", @@ -24,20 +23,6 @@ var NewCDREventSMFImpl = &CDREventSMFImpl{ "timestamp": "Timestamp", "cdr_json": "CDRJSONStr", "created_at": "CreatedAt", - // "id": "ID", - // "ne_type": "NeType", - // "ne_name": "NeName", - // "rm_uid": "RmUID", - // "timestamp": "Timestamp", - // "record_type": "RecordType", - // "charging_id": "ChargingID", - // "subscriber_id": "SubscriberID", - // "duration": "Duration", - // "data_volume_uplink": "DataVolumeUplink", - // "data_volume_downlink": "DataVolumeDownlink", - // "data_total_volume": "DataTotalVolume", - // "pdu_address": "PDUAddress", - // "created_at": "CreatedAt", }, }