From 9b97890e3394235889fa1244988111c7d36bc922 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Mon, 28 Apr 2025 14:52:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0IMS=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=91=BC=E5=8F=AB?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=92=8C=E5=8E=9F=E5=9B=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/controller/ims.go | 49 ++++++++++++------- .../network_data/service/cdr_event_ims.go | 46 +++++++++++------ 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/src/modules/network_data/controller/ims.go b/src/modules/network_data/controller/ims.go index a4d04292..4a15d50d 100644 --- a/src/modules/network_data/controller/ims.go +++ b/src/modules/network_data/controller/ims.go @@ -166,14 +166,16 @@ func (s *IMSController) CDRExport(c *gin.Context) { "C1": "Type", "D1": "Caller", "E1": "Called", - "F1": "Result", - "G1": "Duration", - "H1": "Call Start Time", - "I1": "Hangup Time", - "J1": "Tenant Name", // for multi-tenancy + "F1": "Duration", + "G1": "Result Code", + "H1": "Result Cause", + "I1": "Call Start Time", + "J1": "Hangup Time", + "K1": "Tenant Name", // for multi-tenancy } // 读取字典数据 CDR SIP响应代码类别类型 dictCDRSipCode := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code") + dictCDRSipCodeCause := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code_cause") // 读取字典数据 CDR 呼叫类型 dictCDRCallType := sysService.NewSysDictData.SelectDictDataByType("cdr_call_type") // 从第二行开始的数据 @@ -220,13 +222,25 @@ func (s *IMSController) CDRExport(c *gin.Context) { duration = fmt.Sprintf("%ds", parse.Number(v)) } // 呼叫结果 非短信都有code作为结果 sms短信都ok - callResult := "Success" - if v, ok := cdrJSON["cause"]; ok && v != nil && callType != "sms" { - cause := fmt.Sprint(v) - for _, v := range dictCDRSipCode { - if cause == v.DictValue { - callResult = i18n.TKey(language, v.DictLabel) - break + callResult := "Other" + callCause := "Call failure for other reason" + if callType == "sms" { + callResult = "Success" + callCause = "Normal Send" + } else { + if v, ok := cdrJSON["cause"]; ok && v != nil { + cause := fmt.Sprint(v) + for _, v := range dictCDRSipCode { + if cause == v.DictValue { + callResult = i18n.TKey(language, v.DictLabel) + break + } + } + for _, v := range dictCDRSipCodeCause { + if cause == v.DictValue { + callCause = i18n.TKey(language, v.DictLabel) + break + } } } } @@ -257,11 +271,12 @@ func (s *IMSController) CDRExport(c *gin.Context) { "C" + idx: callTypeLable, "D" + idx: caller, "E" + idx: called, - "F" + idx: callResult, - "G" + idx: duration, - "H" + idx: seizureTimeStr, - "I" + idx: releaseTimeStr, - "J" + idx: tenantName, + "F" + idx: duration, + "G" + idx: callResult, + "H" + idx: callCause, + "I" + idx: seizureTimeStr, + "J" + idx: releaseTimeStr, + "K" + idx: tenantName, }) } diff --git a/src/modules/network_data/service/cdr_event_ims.go b/src/modules/network_data/service/cdr_event_ims.go index 0592e44a..a69dd61d 100644 --- a/src/modules/network_data/service/cdr_event_ims.go +++ b/src/modules/network_data/service/cdr_event_ims.go @@ -60,13 +60,15 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str "C1": "Type", "D1": "Caller", "E1": "Called", - "F1": "Result", - "G1": "Duration", - "H1": "Call Start Time", - "I1": "Hangup Time", + "F1": "Duration", + "G1": "Result Code", + "H1": "Result Cause", + "I1": "Call Start Time", + "J1": "Hangup Time", } // 读取字典数据 CDR SIP响应代码类别类型 dictCDRSipCode := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code") + dictCDRSipCodeCause := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code_cause") // 读取字典数据 CDR 呼叫类型 dictCDRCallType := sysService.NewSysDictData.SelectDictDataByType("cdr_call_type") // 从第二行开始的数据 @@ -113,13 +115,26 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str duration = fmt.Sprintf("%ds", parse.Number(v)) } // 呼叫结果 非短信都有code作为结果 sms短信都ok - callResult := "Success" - if v, ok := cdrJSON["cause"]; ok && v != nil && callType != "sms" { - cause := fmt.Sprint(v) - for _, v := range dictCDRSipCode { - if cause == v.DictValue { - callResult = i18n.TKey(language, v.DictLabel) - break + // 呼叫结果 非短信都有code作为结果 sms短信都ok + callResult := "Other" + callCause := "Call failure for other reason" + if callType == "sms" { + callResult = "Success" + callCause = "Normal Send" + } else { + if v, ok := cdrJSON["cause"]; ok && v != nil { + cause := fmt.Sprint(v) + for _, v := range dictCDRSipCode { + if cause == v.DictValue { + callResult = i18n.TKey(language, v.DictLabel) + break + } + } + for _, v := range dictCDRSipCodeCause { + if cause == v.DictValue { + callCause = i18n.TKey(language, v.DictLabel) + break + } } } } @@ -148,10 +163,11 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str "C" + idx: callTypeLable, "D" + idx: caller, "E" + idx: called, - "F" + idx: callResult, - "G" + idx: duration, - "H" + idx: seizureTimeStr, - "I" + idx: releaseTimeStr, + "F" + idx: duration, + "G" + idx: callResult, + "H" + idx: callCause, + "I" + idx: seizureTimeStr, + "J" + idx: releaseTimeStr, }) }