185 lines
4.2 KiB
Go
185 lines
4.2 KiB
Go
/**********************************************
|
|
** @Des: This file ...
|
|
** @Author: haodaquan
|
|
** @Date: 2017-09-08 10:21:13
|
|
** @Last Modified by: haodaquan
|
|
** @Last Modified time: 2017-09-09 18:04:41
|
|
***********************************************/
|
|
package controllers
|
|
|
|
import (
|
|
"github.com/astaxie/beego"
|
|
"github.com/george518/PPGo_Job/jobs"
|
|
"github.com/george518/PPGo_Job/libs"
|
|
"github.com/george518/PPGo_Job/models"
|
|
"runtime"
|
|
"sort"
|
|
"strconv"
|
|
|
|
//"strconv"
|
|
"time"
|
|
)
|
|
|
|
type HomeController struct {
|
|
BaseController
|
|
}
|
|
|
|
func (self *HomeController) Index() {
|
|
self.Data["pageTitle"] = "系统首页"
|
|
//self.display()
|
|
self.TplName = "public/main.html"
|
|
}
|
|
|
|
func (self *HomeController) Help() {
|
|
self.Data["pageTitle"] = "Cron表达式说明"
|
|
//self.display()
|
|
self.TplName = "public/help.html"
|
|
}
|
|
|
|
func (self *HomeController) Start() {
|
|
|
|
//总任务数量
|
|
_, count := models.TaskGetList(1, 10)
|
|
self.Data["totalJob"] = count
|
|
|
|
//日志总量
|
|
_, totalLog := models.TaskLogGetList(1, 10)
|
|
self.Data["totalLog"] = totalLog
|
|
|
|
//待审核任务数量
|
|
_, totalAuditTask := models.TaskGetList(1, 10, "status", 2)
|
|
self.Data["totalAuditTask"] = totalAuditTask
|
|
|
|
//失败
|
|
errorNum, err := models.GetLogNum(-1)
|
|
if err != nil {
|
|
errorNum = 0
|
|
}
|
|
self.Data["errorNum"] = errorNum
|
|
|
|
//成功
|
|
successNum, err := models.GetLogNum(0)
|
|
if err != nil {
|
|
successNum = 0
|
|
}
|
|
self.Data["successNum"] = successNum
|
|
|
|
//用户数
|
|
_, userNum := models.AdminGetList(1, 10, "status", 1)
|
|
self.Data["userNum"] = userNum
|
|
|
|
//累计运行总次数
|
|
n, err := models.TaskTotalRunNum()
|
|
if err != nil {
|
|
n = 0
|
|
}
|
|
self.Data["TaskTotalRunNum"] = n
|
|
|
|
groups_map := serverGroupLists(self.serverGroups, self.userId)
|
|
//计算总任务数量
|
|
|
|
// 即将执行的任务
|
|
entries := jobs.GetEntries(30)
|
|
jobList := make([]map[string]interface{}, len(entries))
|
|
startJob := 0 //即将执行的任务
|
|
for k, v := range entries {
|
|
row := make(map[string]interface{})
|
|
job := v.Job.(*jobs.Job)
|
|
task, _ := models.TaskGetById(job.GetId())
|
|
row["task_id"] = job.GetId()
|
|
row["task_name"] = job.GetName()
|
|
row["task_group"] = groups_map[task.GroupId]
|
|
row["next_time"] = beego.Date(v.Next, "Y-m-d H:i:s")
|
|
jobList[k] = row
|
|
startJob++
|
|
}
|
|
|
|
self.Data["recentLogs"] = jobList
|
|
|
|
// 最近执行失败的日志
|
|
logs, _ := models.TaskLogGetList(1, 30, "status__lt", 0)
|
|
errLogs := make([]map[string]interface{}, len(logs))
|
|
|
|
for k, v := range logs {
|
|
task, err := models.TaskGetById(v.TaskId)
|
|
taskName := ""
|
|
if err == nil {
|
|
taskName = task.TaskName
|
|
}
|
|
|
|
row := make(map[string]interface{})
|
|
row["task_name"] = taskName
|
|
row["id"] = v.Id
|
|
row["start_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
|
|
row["process_time"] = float64(v.ProcessTime) / 1000
|
|
row["ouput_size"] = libs.SizeFormat(float64(len(v.Output)))
|
|
row["error"] = beego.Substr(v.Error, 0, 100)
|
|
row["status"] = v.Status
|
|
errLogs[k] = row
|
|
|
|
}
|
|
self.Data["errLogs"] = errLogs
|
|
self.Data["startJob"] = startJob
|
|
self.Data["jobs"] = jobList
|
|
|
|
//折线图
|
|
okRun := models.SumByDays(30, "0")
|
|
errRun := models.SumByDays(30, "-1")
|
|
expiredRun := models.SumByDays(30, "-2")
|
|
|
|
days := []string{}
|
|
okNum := []int64{}
|
|
errNum := []int64{}
|
|
expiredNum := []int64{}
|
|
|
|
type kv struct {
|
|
Key string
|
|
Value int64
|
|
}
|
|
|
|
//排序
|
|
var ss []kv
|
|
for k, v := range okRun {
|
|
i, _ := strconv.ParseInt(v.(string), 10, 64)
|
|
ss = append(ss, kv{k, i})
|
|
}
|
|
|
|
sort.Slice(ss, func(i, j int) bool {
|
|
|
|
return ss[i].Key < ss[j].Key
|
|
})
|
|
|
|
for _, v := range ss {
|
|
|
|
days = append(days, v.Key)
|
|
okNum = append(okNum, v.Value)
|
|
|
|
if _, ok := errRun[v.Key]; ok {
|
|
i, _ := strconv.ParseInt(errRun[v.Key].(string), 10, 64)
|
|
errNum = append(errNum, i)
|
|
} else {
|
|
errNum = append(errNum, 0)
|
|
}
|
|
|
|
if _, ok := expiredRun[v.Key]; ok {
|
|
i, _ := strconv.ParseInt(expiredRun[v.Key].(string), 10, 64)
|
|
expiredNum = append(expiredNum, i)
|
|
} else {
|
|
expiredNum = append(expiredNum, 0)
|
|
}
|
|
}
|
|
|
|
self.Data["days"] = days
|
|
self.Data["okNum"] = okNum
|
|
self.Data["errNum"] = errNum
|
|
self.Data["expiredNum"] = expiredNum
|
|
self.Data["cpuNum"] = runtime.NumCPU()
|
|
|
|
//系统运行信息
|
|
info := libs.SystemInfo(models.StartTime)
|
|
self.Data["sysInfo"] = info
|
|
|
|
self.Data["pageTitle"] = "系统概况"
|
|
self.display()
|
|
}
|