diff --git a/src/modules/auth/controller/oauth2_client.go b/src/modules/auth/controller/oauth2_client.go index 830c9b71..b8be0406 100644 --- a/src/modules/auth/controller/oauth2_client.go +++ b/src/modules/auth/controller/oauth2_client.go @@ -31,6 +31,13 @@ type Oauth2ClientController struct { // GET /list func (s Oauth2ClientController) List(c *gin.Context) { query := reqctx.QueryMap(c) + // 分页检查 + pageNum := parse.Number(query["pageNum"]) + pageSize := parse.Number(query["pageSize"]) + if pageNum == 0 || pageSize == 0 { + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: pageNum or pageSize not is empty")) + return + } rows, total := s.oauth2ClientService.FindByPage(query) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) } 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 755e1d6f..cd30318c 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 @@ -61,26 +61,49 @@ 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) + query := map[string]string{ + "neType": "", + "neId": "", + "rmUID": "", + "beginTime": fmt.Sprint(start.UnixMilli()), + "endTime": fmt.Sprint(end.UnixMilli()), + } switch v { case "ims": neList := s.neInfoService.Find(neModel.NeInfo{NeType: "IMS"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportIMS(params.Hour, ne.RmUID, params.FileType) + query["neType"] = "IMS" + query["neId"] = ne.NeId + query["rmUID"] = ne.RmUID + result[ne.NeName] = s.exportIMS(query, params.FileType) } case "smsc": neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMSC"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSMSC(params.Hour, ne.RmUID, params.FileType) + query["neType"] = "SMSC" + query["neId"] = ne.NeId + query["rmUID"] = ne.RmUID + result[ne.NeName] = s.exportSMSC(query, params.FileType) } case "smf": neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMF"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSMF(params.Hour, ne.RmUID, params.FileType) + query["neType"] = "SMF" + query["neId"] = ne.NeId + query["rmUID"] = ne.RmUID + result[ne.NeName] = s.exportSMF(query, params.FileType) } case "sgwc": neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SGWC"}, false, false) for _, ne := range neList { - result[ne.NeName] = s.exportSGWC(params.Hour, ne.RmUID, params.FileType) + query["neType"] = "SGWC" + query["neId"] = ne.NeId + query["rmUID"] = ne.RmUID + result[ne.NeName] = s.exportSGWC(query, params.FileType) } } } @@ -90,30 +113,21 @@ 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 map[string]string, fileType string) string { language := "en" - query := map[string]string{ - "sortField": "timestamp", - "sortOrder": "asc", - "rmUID": rmUID, - "beginTime": fmt.Sprint(start.UnixMilli()), - "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": fmt.Sprint(1), - "pageSize": fmt.Sprint(30000), - } - rows, total := s.cdrEventService.FindByPage("IMS", query) + neType := query["neType"] + neTypeLower := strings.ToLower(neType) + neId := query["neId"] + endTime := parse.Number(query["endTime"]) + rows, total := s.cdrEventService.FindByPage(neType, 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, "/cdr/ims_cdr_event", fileName) + dateStr := date.ParseDateToStr(endTime, date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", neTypeLower, neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/cdr/%s", neTypeLower), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -379,30 +393,21 @@ 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 map[string]string, fileType string) string { language := "en" - query := map[string]string{ - "sortField": "timestamp", - "sortOrder": "asc", - "rmUID": rmUID, - "beginTime": fmt.Sprint(start.UnixMilli()), - "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": fmt.Sprint(1), - "pageSize": fmt.Sprint(30000), - } - rows, total := s.cdrEventService.FindByPage("SMSC", query) + neType := query["neType"] + neTypeLower := strings.ToLower(neType) + neId := query["neId"] + endTime := parse.Number(query["endTime"]) + rows, total := s.cdrEventService.FindByPage(neType, 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, "/cdr/smsc_cdr_event", fileName) + dateStr := date.ParseDateToStr(endTime, date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", neTypeLower, neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/cdr/%s", neTypeLower), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -596,29 +601,20 @@ 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 := map[string]string{ - "sortField": "timestamp", - "sortOrder": "asc", - "rmUID": rmUID, - "beginTime": fmt.Sprint(start.UnixMilli()), - "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": fmt.Sprint(1), - "pageSize": fmt.Sprint(30000), - } - rows, total := s.cdrEventService.FindByPage("SMF", query) +func (s BackupExportCDRProcessor) exportSMF(query map[string]string, fileType string) string { + neType := query["neType"] + neTypeLower := strings.ToLower(neType) + neId := query["neId"] + endTime := parse.Number(query["endTime"]) + rows, total := s.cdrEventService.FindByPage(neType, 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, "/cdr/smf_cdr_event", fileName) + dateStr := date.ParseDateToStr(endTime, date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", neTypeLower, neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/cdr/%s", neTypeLower), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -1004,29 +1000,20 @@ 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 := map[string]string{ - "sortField": "timestamp", - "sortOrder": "asc", - "rmUID": rmUID, - "beginTime": fmt.Sprint(start.UnixMilli()), - "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": fmt.Sprint(1), - "pageSize": fmt.Sprint(30000), - } - rows, total := s.cdrEventService.FindByPage("SGWC", query) +func (s BackupExportCDRProcessor) exportSGWC(query map[string]string, fileType string) string { + neType := query["neType"] + neTypeLower := strings.ToLower(neType) + neId := query["neId"] + endTime := parse.Number(query["endTime"]) + rows, total := s.cdrEventService.FindByPage(neType, 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, "/cdr/sgwc_cdr_event", fileName) + dateStr := date.ParseDateToStr(endTime, date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", neTypeLower, neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/cdr/%s", neTypeLower), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } diff --git a/src/modules/crontask/processor/backup_export_kpi/backup_export_kpi.go b/src/modules/crontask/processor/backup_export_kpi/backup_export_kpi.go index d14b4dc4..7249dc3f 100644 --- a/src/modules/crontask/processor/backup_export_kpi/backup_export_kpi.go +++ b/src/modules/crontask/processor/backup_export_kpi/backup_export_kpi.go @@ -118,7 +118,7 @@ func (s *BackupExportKPIProcessor) exportKPI(query neDataModel.KPIQuery, fileTyp // 导出文件名称 dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) fileName := fmt.Sprintf("%s_%s_kpi_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_kpi", strings.ToLower(query.NeType)), fileName) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/kpi/%s", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -275,7 +275,7 @@ func (s *BackupExportKPIProcessor) exportKPIC(query neDataModel.KPICQuery, fileT // 导出文件名称 dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS) fileName := fmt.Sprintf("%s_%s_kpic_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType) - filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_kpi", strings.ToLower(query.NeType)), fileName) + filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/kpi/%s", strings.ToLower(query.NeType)), fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } diff --git a/src/modules/crontask/processor/backup_export_log/backup_export_log.go b/src/modules/crontask/processor/backup_export_log/backup_export_log.go index 6d7d6509..1c311680 100644 --- a/src/modules/crontask/processor/backup_export_log/backup_export_log.go +++ b/src/modules/crontask/processor/backup_export_log/backup_export_log.go @@ -79,8 +79,6 @@ func (s BackupExportLogProcessor) exportOperate(hour int, fileType string) strin query := map[string]string{ "beginTime": fmt.Sprint(start.UnixMilli()), "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": "1", - "pageSize": "30000", } rows, total := s.sysOperateService.FindByPage(query, "") if total == 0 { @@ -97,7 +95,8 @@ func (s BackupExportLogProcessor) exportOperate(hour int, fileType string) strin converI18n(language, &rows) // 导出文件名称 - fileName := fmt.Sprintf("sys_log_operate_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) + dateStr := date.ParseDateToStr(end.UnixMilli(), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("sys_log_operate_export_%d_%s.%s", len(rows), dateStr, fileType) filePath := filepath.Join(s.backupService.BACKUP_DIR, "/log/sys_log_operate", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) @@ -243,8 +242,6 @@ func (s BackupExportLogProcessor) exportLogin(hour int, fileType string) string query := map[string]string{ "beginTime": fmt.Sprint(start.UnixMilli()), "endTime": fmt.Sprint(end.UnixMilli()), - "pageNum": "1", - "pageSize": "30000", } rows, total := s.sysLogLoginService.FindByPage(query, "") if total == 0 { @@ -263,7 +260,8 @@ func (s BackupExportLogProcessor) exportLogin(hour int, fileType string) string converI18n(language, &rows) // 导出文件名称 - fileName := fmt.Sprintf("sys_log_login_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType) + dateStr := date.ParseDateToStr(end.UnixMilli(), date.YYYYMMDDHHMMSS) + fileName := fmt.Sprintf("sys_log_login_export_%d_%s.%s", len(rows), dateStr, fileType) filePath := filepath.Join(s.backupService.BACKUP_DIR, "/log/sys_log_login", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) diff --git a/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go b/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go index e0625a6e..38cc6df5 100644 --- a/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go +++ b/src/modules/crontask/processor/backup_export_udm/backup_export_udm.go @@ -85,9 +85,10 @@ func (s BackupExportUDMProcessor) exportAuth(neId, fileType string) string { return "no data" } - // 文件名 - fileName := fmt.Sprintf("auth_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) - filePath := filepath.Join("/usr/local/omc/backup/udm_data/auth", fileName) + // 导出文件名称 + dateStr := time.Now().Format("20060102150405") + fileName := fmt.Sprintf("auth_%s_export_%d_%s.%s", neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, "/udm/auth", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -139,9 +140,10 @@ func (s BackupExportUDMProcessor) exportSub(neId, fileType string) string { return "no data" } - // 文件名 - fileName := fmt.Sprintf("sub_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) - filePath := filepath.Join("/usr/local/omc/backup/udm_data/sub", fileName) + // 导出文件名称 + dateStr := time.Now().Format("20060102150405") + fileName := fmt.Sprintf("sub_%s_export_%d_%s.%s", neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, "/udm/sub", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -187,9 +189,10 @@ func (s BackupExportUDMProcessor) exportVOIP(neId, fileType string) string { return "no data" } - // 文件名 - fileName := fmt.Sprintf("voip_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) - filePath := filepath.Join("/usr/local/omc/backup/udm_data/voip", fileName) + // 导出文件名称 + dateStr := time.Now().Format("20060102150405") + fileName := fmt.Sprintf("voip_%s_export_%d_%s.%s", neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, "/udm/voip", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } @@ -233,9 +236,10 @@ func (s BackupExportUDMProcessor) exportVolte(neId, fileType string) string { return "no data" } - // 文件名 - fileName := fmt.Sprintf("volte_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) - filePath := filepath.Join("/usr/local/omc/backup/udm_data/volte", fileName) + // 导出文件名称 + dateStr := time.Now().Format("20060102150405") + fileName := fmt.Sprintf("volte_%s_export_%d_%s.%s", neId, len(rows), dateStr, fileType) + filePath := filepath.Join(s.backupService.BACKUP_DIR, "/udm/volte", fileName) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } diff --git a/src/modules/ws/processor/cdr_connect.go b/src/modules/ws/processor/cdr_connect.go index 884008c4..a9b5fdab 100644 --- a/src/modules/ws/processor/cdr_connect.go +++ b/src/modules/ws/processor/cdr_connect.go @@ -6,6 +6,7 @@ import ( "be.ems/src/framework/logger" "be.ems/src/framework/resp" + "be.ems/src/framework/utils/parse" neDataService "be.ems/src/modules/network_data/service" neInfoService "be.ems/src/modules/network_element/service" ) @@ -21,7 +22,12 @@ func GetCDRConnect(requestID string, data any) ([]byte, error) { for k, v := range dataMap { query[k] = fmt.Sprintf("%v", v) } - + // 分页检查 + pageNum := parse.Number(query["pageNum"]) + pageSize := parse.Number(query["pageSize"]) + if pageNum == 0 || pageSize == 0 { + return nil, fmt.Errorf("pageNum or pageSize not is empty") + } // 查询网元信息 rmUID neInfo := neInfoService.NewNeInfo.FindByNeTypeAndNeID(query["neType"], query["neId"]) if neInfo.NeType == "" {