diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 4b44c8423..185f4625b 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -577,6 +577,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/overview", repo.GetAllCloudbrainsOverview) m.Get("/distribution", repo.GetAllCloudbrainsPeriodDistribution) m.Get("/trend", repo.GetAllCloudbrainsTrend) + m.Get("/trend_detail_data", repo.GetAllCloudbrainsTrendDetail) m.Get("/status_analysis", repo.GetCloudbrainsStatusAnalysis) m.Get("/detail_data", repo.GetCloudbrainsDetailData) m.Get("/hours_data", repo.GetCloudbrainsCreateHoursData) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index 2e9a0fb15..f7907ad2e 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -14,11 +14,6 @@ import ( "code.gitea.io/gitea/modules/setting" ) -type TimeCloudbrainsNum struct { - TimeCloudbrainNum []DateCloudbrainNum `json:"dateCloudbrainNum"` - TotalCount int `json:"totalCount"` - TimeCloudbrainInfo []DateCloudbrainInfo `json:"timeCloudbrainInfo"` -} type DateCloudbrainNum struct { Date string `json:"date"` CloudOneJobTypeRes map[string]int `json:"cloudOneJobTypeRes"` @@ -144,8 +139,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { var endTime time.Time var endTimeTemp time.Time dateCloudbrainNum := make([]DateCloudbrainNum, 0) - dayCloudbrainInfo := make([]DateCloudbrainInfo, 0) - var count int if queryType != "" { if queryType == "all" { beginTime = brainRecordBeginTime @@ -158,12 +151,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) return } - dayCloudbrainInfo, count, err = getMonthCloudbrainInfo(beginTime, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainInfo.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainInfo_get_error")) - return - } } else if queryType == "today" { beginTime = now.AddDate(0, 0, 0) beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) @@ -175,6 +162,153 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) return } + } else if queryType == "yesterday" { + beginTime = now.AddDate(0, 0, -1) + beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) + endTimeTemp = beginTime.AddDate(0, 0, 1) + endTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } else if queryType == "last_7day" { + beginTime = now.AddDate(0, 0, -6) //begin from monday + beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) + endTime = now + endTimeTemp = beginTime.AddDate(0, 0, 1) + endTimeTemp = time.Date(endTimeTemp.Year(), endTimeTemp.Month(), endTimeTemp.Day(), 0, 0, 0, 0, now.Location()) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } else if queryType == "last_30day" { + beginTime = now.AddDate(0, 0, -29) //begin from monday + beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) + endTime = now + endTimeTemp = beginTime.AddDate(0, 0, 1) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } else if queryType == "current_month" { + endTime = now + beginTime = time.Date(endTime.Year(), endTime.Month(), 1, 0, 0, 0, 0, now.Location()) + endTimeTemp = beginTime.AddDate(0, 0, 1) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } else if queryType == "current_year" { + endTime = now + beginTime = time.Date(endTime.Year(), 1, 1, 0, 0, 0, 0, now.Location()) + endTimeTemp = beginTime.AddDate(0, 1, 0) + dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getMonthCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) + return + } + } else if queryType == "last_month" { + + lastMonthTime := now.AddDate(0, -1, 0) + beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 1, 0, 0, 0, 0, now.Location()) + endTime = time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()) + endTimeTemp = beginTime.AddDate(0, 0, 1) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } + + } else { + if beginTimeStr == "" || endTimeStr == "" { + //如果查询类型和开始时间结束时间都未设置,按queryType=all处理 + beginTime = brainRecordBeginTime + endTime = now + endTimeTemp = beginTime.AddDate(0, 1, 0) + endTimeTemp := time.Date(endTimeTemp.Year(), endTimeTemp.Month(), 1, 0, 0, 0, 0, now.Location()) + dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getMonthCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) + return + } + } else { + beginTime, err = time.ParseInLocation("2006-01-02", beginTimeStr, time.Local) + if err != nil { + log.Error("Can not ParseInLocation.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("ParseInLocation_get_error")) + return + } + endTime, err = time.ParseInLocation("2006-01-02", endTimeStr, time.Local) + if err != nil { + log.Error("Can not ParseInLocation.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("ParseInLocation_get_error")) + return + } + if endTime.After(time.Now()) { + endTime = time.Now() + } + endTimeTemp = beginTime.AddDate(0, 0, 1) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) + return + } + } + + } + ctx.JSON(http.StatusOK, map[string]interface{}{ + "timeCloudbrainNum": dateCloudbrainNum, + }) + +} +func GetAllCloudbrainsTrendDetail(ctx *context.Context) { + recordCloudbrain, err := models.GetRecordBeginTime() + if err != nil { + log.Error("Can not get recordCloudbrain", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) + return + } + brainRecordBeginTime := recordCloudbrain[0].Cloudbrain.CreatedUnix.AsTime() + + queryType := ctx.QueryTrim("type") + now := time.Now() + + beginTimeStr := ctx.QueryTrim("beginTime") + endTimeStr := ctx.QueryTrim("endTime") + var beginTime time.Time + var endTime time.Time + var endTimeTemp time.Time + dayCloudbrainInfo := make([]DateCloudbrainInfo, 0) + var count int + if queryType != "" { + if queryType == "all" { + beginTime = brainRecordBeginTime + endTime = now + endTimeTemp = beginTime.AddDate(0, 1, 0) + dayCloudbrainInfo, count, err = getMonthCloudbrainInfo(beginTime, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainInfo.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainInfo_get_error")) + return + } + } else if queryType == "today" { + beginTime = now.AddDate(0, 0, 0) + beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) + endTimeTemp = now + endTime = now dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -187,12 +321,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) endTimeTemp = beginTime.AddDate(0, 0, 1) endTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -206,12 +334,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { endTime = now endTimeTemp = beginTime.AddDate(0, 0, 1) endTimeTemp = time.Date(endTimeTemp.Year(), endTimeTemp.Month(), endTimeTemp.Day(), 0, 0, 0, 0, now.Location()) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -223,12 +345,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) endTime = now endTimeTemp = beginTime.AddDate(0, 0, 1) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -239,12 +355,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { endTime = now beginTime = time.Date(endTime.Year(), endTime.Month(), 1, 0, 0, 0, 0, now.Location()) endTimeTemp = beginTime.AddDate(0, 0, 1) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -256,12 +366,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { endTime = now beginTime = time.Date(endTime.Year(), 1, 1, 0, 0, 0, 0, now.Location()) endTimeTemp = beginTime.AddDate(0, 1, 0) - dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getMonthCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getMonthCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -275,12 +379,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 1, 0, 0, 0, 0, now.Location()) endTime = time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()) endTimeTemp = beginTime.AddDate(0, 0, 1) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -296,13 +394,7 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = brainRecordBeginTime endTime = now endTimeTemp = beginTime.AddDate(0, 1, 0) - endTimeTemp := time.Date(endTimeTemp.Year(), endTimeTemp.Month(), 1, 0, 0, 0, 0, now.Location()) - dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getMonthCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) - return - } + // endTimeTemp := time.Date(endTimeTemp.Year(), endTimeTemp.Month(), 1, 0, 0, 0, 0, now.Location()) dayCloudbrainInfo, count, err = getMonthCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -326,12 +418,6 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { endTime = time.Now() } endTimeTemp = beginTime.AddDate(0, 0, 1) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } dayCloudbrainInfo, count, err = getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) @@ -352,13 +438,10 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { } pageDateCloudbrainInfo := getPageDateCloudbrainInfo(dayCloudbrainInfo, page, pagesize) - cloudbrainsPeriodData := TimeCloudbrainsNum{ - TimeCloudbrainNum: dateCloudbrainNum, - TotalCount: count, - TimeCloudbrainInfo: pageDateCloudbrainInfo, - } - - ctx.JSON(http.StatusOK, cloudbrainsPeriodData) + ctx.JSON(http.StatusOK, map[string]interface{}{ + "totalCount": count, + "timeCloudbrainInfo": pageDateCloudbrainInfo, + }) } func getPageDateCloudbrainInfo(dateCloudbrainInfo []DateCloudbrainInfo, page int, pagesize int) []DateCloudbrainInfo {