From ba936d0a467924b7614fc1299adcf3b1254e3896 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 27 Jan 2024 18:36:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=BB=84=E9=87=91=E6=8C=87=E6=A0=875s?= =?UTF-8?q?=E6=95=B0=E6=8D=AEsql=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/network_data/controller/perf_kpi.go | 4 ++++ src/modules/network_data/repository/perf_kpi.impl.go | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/modules/network_data/controller/perf_kpi.go b/src/modules/network_data/controller/perf_kpi.go index e163d75d..18274f15 100644 --- a/src/modules/network_data/controller/perf_kpi.go +++ b/src/modules/network_data/controller/perf_kpi.go @@ -49,6 +49,10 @@ func (s *PerfKPIController) GoldKPI(c *gin.Context) { c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) return } + if querys.Interval < 5 || querys.Interval > 3600 { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } // 查询网元获取IP neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) diff --git a/src/modules/network_data/repository/perf_kpi.impl.go b/src/modules/network_data/repository/perf_kpi.impl.go index 1ac6b8c6..33c583b4 100644 --- a/src/modules/network_data/repository/perf_kpi.impl.go +++ b/src/modules/network_data/repository/perf_kpi.impl.go @@ -43,9 +43,15 @@ func (r *PerfKPIImpl) SelectGoldKPI(query model.GoldKPIQuery, kpiIds []string) [ } // 查询字段列 - timeFormat := "DATE_FORMAT(gk.start_time, '%Y-%m-%d %H:')" - minuteGroup := fmt.Sprintf("LPAD(FLOOR(SECOND(gk.start_time) / %d) * %d, 2, '0')", query.Interval, query.Interval) - groupByField := fmt.Sprintf("CONCAT( %s, %s ) AS timeGroup", timeFormat, minuteGroup) + timeFormat := "DATE_FORMAT(gk.start_time, '%Y-%m-%d %H:%i:')" + secondGroup := fmt.Sprintf("LPAD(FLOOR(SECOND(gk.start_time) / %d) * %d, 2, '0')", query.Interval, query.Interval) + groupByField := fmt.Sprintf("CONCAT( %s, %s ) AS timeGroup", timeFormat, secondGroup) + if query.Interval > 60 { + minute := query.Interval / 60 + timeFormat = "DATE_FORMAT(gk.start_time, '%Y-%m-%d %H:')" + minuteGroup := fmt.Sprintf("LPAD(FLOOR(MINUTE(gk.start_time) / %d) * %d, 2, '0')", minute, minute) + groupByField = fmt.Sprintf("CONCAT( %s, %s ) AS timeGroup", timeFormat, minuteGroup) + } var fields = []string{ groupByField, "min(CASE WHEN gk.index != '' THEN gk.index ELSE 0 END) AS startIndex",