From 3a3d4fb43b5a572380a6359e24fce6f629e07ee1 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 17 Sep 2025 15:09:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=A4=87=E4=BB=BDCDR=E6=96=87=E4=BB=B6=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=A0=87=E8=AE=B0neId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backup_export_cdr/backup_export_cdr.go | 124 ++++++++---------- .../network_data/repository/cdr_event_ims.go | 8 +- .../network_data/repository/cdr_event_sgwc.go | 8 +- .../network_data/repository/cdr_event_smf.go | 8 +- .../network_data/repository/cdr_event_smsc.go | 8 +- 5 files changed, 68 insertions(+), 88 deletions(-) diff --git a/src/modules/crontask/processor/backup_export_cdr/backup_export_cdr.go b/src/modules/crontask/processor/backup_export_cdr/backup_export_cdr.go index 98d2ca06..3fe7ed8e 100644 --- a/src/modules/crontask/processor/backup_export_cdr/backup_export_cdr.go +++ b/src/modules/crontask/processor/backup_export_cdr/backup_export_cdr.go @@ -68,26 +68,58 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) { } for _, v := range params.DataType { + // 前 hour 小时 + now := time.Now() + end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) + start := end.Add(-time.Duration(params.Hour) * time.Hour) switch v { case "ims": neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "IMS"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportIMS(params.Hour, ne.RmUID, params.FileType) + query := neDataModel.CDREventIMSQuery{ + NeType: ne.NeType, + NeID: ne.NeId, + RmUID: ne.RmUID, + StartTime: start.UnixMilli(), + EndTime: end.UnixMilli(), + } + result[ne.NeName] = s.exportIMS(query, params.FileType) } case "smsc": neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SMSC"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSMSC(params.Hour, ne.RmUID, params.FileType) + query := neDataModel.CDREventSMSCQuery{ + NeType: ne.NeType, + NeID: ne.NeId, + RmUID: ne.RmUID, + StartTime: start.UnixMilli(), + EndTime: end.UnixMilli(), + } + result[ne.NeName] = s.exportSMSC(query, params.FileType) } case "smf": neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SMF"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSMF(params.Hour, ne.RmUID, params.FileType) + query := neDataModel.CDREventSMFQuery{ + NeType: ne.NeType, + NeID: ne.NeId, + RmUID: ne.RmUID, + StartTime: start.UnixMilli(), + EndTime: end.UnixMilli(), + } + result[ne.NeName] = s.exportSMF(query, params.FileType) } case "sgwc": neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SGWC"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSGWC(params.Hour, ne.RmUID, params.FileType) + query := neDataModel.CDREventSGWCQuery{ + NeType: ne.NeType, + NeID: ne.NeId, + RmUID: ne.RmUID, + StartTime: start.UnixMilli(), + EndTime: end.UnixMilli(), + } + result[ne.NeName] = s.exportSGWC(query, params.FileType) } } } @@ -97,30 +129,17 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) { } // exportIMS 导出IMS-CDR会话事件数据 -func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) string { - // 前 hour 小时 - now := time.Now() - end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) - start := end.Add(-time.Duration(hour) * time.Hour) - +func (s BackupExportCDRProcessor) exportIMS(query neDataModel.CDREventIMSQuery, fileType string) string { language := "en" - query := neDataModel.CDREventIMSQuery{ - SortField: "timestamp", - SortOrder: "asc", - RmUID: rmUID, - StartTime: start.UnixMilli(), - EndTime: end.UnixMilli(), - PageNum: 1, - PageSize: 1000_0000, - } rows, total := s.imsCDREventService.SelectPage(query) if total == 0 { return "no data" } // 导出文件名称 - fileName := fmt.Sprintf("ims_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, "/ims_cdr", fileName) + dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -390,30 +409,17 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st } // exportSMSC 导出SMSC-CDR会话事件数据 -func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) string { - // 前 hour 小时 - now := time.Now() - end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) - start := end.Add(-time.Duration(hour) * time.Hour) - +func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery, fileType string) string { language := "en" - query := neDataModel.CDREventSMSCQuery{ - SortField: "timestamp", - SortOrder: "asc", - RmUID: rmUID, - StartTime: start.UnixMilli(), - EndTime: end.UnixMilli(), - PageNum: 1, - PageSize: 1000_0000, - } rows, total := s.smscCDREventService.SelectPage(query) if total == 0 { return "no data" } // 导出文件名称 - fileName := fmt.Sprintf("smsc_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, "/smsc_cdr", fileName) + dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -611,29 +617,16 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s } // exportSMF 导出SMF-CDR会话事件数据 -func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) string { - // 前 hour 小时 - now := time.Now() - end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) - start := end.Add(-time.Duration(hour) * time.Hour) - - query := neDataModel.CDREventSMFQuery{ - SortField: "timestamp", - SortOrder: "asc", - RmUID: rmUID, - StartTime: start.UnixMilli(), - EndTime: end.UnixMilli(), - PageNum: 1, - PageSize: 1000_0000, - } +func (s BackupExportCDRProcessor) exportSMF(query neDataModel.CDREventSMFQuery, fileType string) string { rows, total := s.smfCDREventService.SelectPage(query) if total == 0 { return "no data" } // 导出文件名称 - fileName := fmt.Sprintf("smf_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, "/smf_cdr", fileName) + dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -1023,29 +1016,16 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st } // exportSGWC 导出SGWC-CDR会话事件数据 -func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) string { - // 前 hour 小时 - now := time.Now() - end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) - start := end.Add(-time.Duration(hour) * time.Hour) - - query := neDataModel.CDREventSGWCQuery{ - SortField: "timestamp", - SortOrder: "asc", - RmUID: rmUID, - StartTime: start.UnixMilli(), - EndTime: end.UnixMilli(), - PageNum: 1, - PageSize: 1000_0000, - } +func (s BackupExportCDRProcessor) exportSGWC(query neDataModel.CDREventSGWCQuery, fileType string) string { rows, total := s.sgwcCDREventService.SelectPage(query) if total == 0 { return "no data" } // 导出文件名称 - fileName := fmt.Sprintf("sgwc_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, "/sgwc_cdr", fileName) + dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } diff --git a/src/modules/network_data/repository/cdr_event_ims.go b/src/modules/network_data/repository/cdr_event_ims.go index 2762d1b6..96f899fc 100644 --- a/src/modules/network_data/repository/cdr_event_ims.go +++ b/src/modules/network_data/repository/cdr_event_ims.go @@ -273,11 +273,11 @@ func (r CDREventIMS) SelectByPage(querys model.CDREventIMSQuery) ([]model.CDREve } // 查询数据分页 - pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) - if pageNum == 0 && pageSize > int(total) { - pageSize = int(total) + if querys.PageNum != 0 && querys.PageSize != 0 { + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) } - tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error()) diff --git a/src/modules/network_data/repository/cdr_event_sgwc.go b/src/modules/network_data/repository/cdr_event_sgwc.go index c7ff6025..41b394e1 100644 --- a/src/modules/network_data/repository/cdr_event_sgwc.go +++ b/src/modules/network_data/repository/cdr_event_sgwc.go @@ -56,11 +56,11 @@ func (r CDREventSGWC) SelectByPage(querys model.CDREventSGWCQuery) ([]model.CDRE } // 查询数据分页 - pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) - if pageNum == 0 && pageSize > int(total) { - pageSize = int(total) + if querys.PageNum != 0 && querys.PageSize != 0 { + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) } - tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error()) diff --git a/src/modules/network_data/repository/cdr_event_smf.go b/src/modules/network_data/repository/cdr_event_smf.go index b4bb80ea..275582e7 100644 --- a/src/modules/network_data/repository/cdr_event_smf.go +++ b/src/modules/network_data/repository/cdr_event_smf.go @@ -254,11 +254,11 @@ func (r CDREventSMF) SelectByPage(querys model.CDREventSMFQuery) ([]model.CDREve } // 查询数据分页 - pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) - if pageNum == 0 && pageSize > int(total) { - pageSize = int(total) + if querys.PageNum != 0 && querys.PageSize != 0 { + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) } - tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error()) diff --git a/src/modules/network_data/repository/cdr_event_smsc.go b/src/modules/network_data/repository/cdr_event_smsc.go index a56572b4..6508df93 100644 --- a/src/modules/network_data/repository/cdr_event_smsc.go +++ b/src/modules/network_data/repository/cdr_event_smsc.go @@ -277,11 +277,11 @@ func (r CDREventSMSC) SelectByPage(querys model.CDREventSMSCQuery) ([]model.CDRE } // 查询数据分页 - pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) - if pageNum == 0 && pageSize > int(total) { - pageSize = int(total) + if querys.PageNum != 0 && querys.PageSize != 0 { + pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize) + tx = tx.Limit(pageSize).Offset(pageSize * pageNum) } - tx = tx.Limit(pageSize).Offset(pageSize * pageNum) + err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error())