119 lines
2.4 KiB
Go
119 lines
2.4 KiB
Go
/*
|
|
* @Author: haodaquan
|
|
* @Date: 2017-06-21 12:23:22
|
|
* @Last Modified by: haodaquan
|
|
* @Last Modified time: 2017-06-22 14:57:13
|
|
*/
|
|
|
|
package models
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/astaxie/beego/cache"
|
|
"github.com/astaxie/beego/logs"
|
|
"github.com/astaxie/beego/orm"
|
|
"time"
|
|
)
|
|
|
|
type TaskLog struct {
|
|
Id int
|
|
TaskId int
|
|
ServerId int
|
|
ServerName string
|
|
Output string
|
|
Error string
|
|
Status int
|
|
ProcessTime int
|
|
CreateTime int64
|
|
}
|
|
|
|
var RunNumCache, _ = cache.NewCache("memory", `{"interval":60}`)
|
|
|
|
func (t *TaskLog) TableName() string {
|
|
return TableName("task_log")
|
|
}
|
|
|
|
func TaskLogAdd(t *TaskLog) (int64, error) {
|
|
return orm.NewOrm().Insert(t)
|
|
}
|
|
|
|
func TaskLogGetList(page, pageSize int, filters ...interface{}) ([]*TaskLog, int64) {
|
|
offset := (page - 1) * pageSize
|
|
|
|
logs := make([]*TaskLog, 0)
|
|
|
|
query := orm.NewOrm().QueryTable(TableName("task_log"))
|
|
if len(filters) > 0 {
|
|
l := len(filters)
|
|
for k := 0; k < l; k += 2 {
|
|
query = query.Filter(filters[k].(string), filters[k+1])
|
|
}
|
|
}
|
|
|
|
total, _ := query.Count()
|
|
query.OrderBy("-id").Limit(pageSize, offset).All(&logs)
|
|
|
|
return logs, total
|
|
}
|
|
|
|
func TaskLogGetById(id int) (*TaskLog, error) {
|
|
obj := &TaskLog{
|
|
Id: id,
|
|
}
|
|
|
|
err := orm.NewOrm().Read(obj)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return obj, nil
|
|
}
|
|
|
|
func TaskLogDelById(id int) error {
|
|
_, err := orm.NewOrm().Delete(&TaskLog{Id: id})
|
|
return err
|
|
}
|
|
|
|
func TaskLogDelByTaskId(taskId int) (int64, error) {
|
|
return orm.NewOrm().QueryTable(TableName("task_log")).Filter("task_id", taskId).Delete()
|
|
}
|
|
|
|
func GetLogNum(status int) (int64, error) {
|
|
return orm.NewOrm().QueryTable(TableName("task_log")).Filter("status", status).Count()
|
|
}
|
|
|
|
type SumDays struct {
|
|
Day string
|
|
Sum int
|
|
}
|
|
|
|
func SumByDays(limit int, status string) orm.Params {
|
|
|
|
var m = map[string]string{
|
|
"0": "okNum",
|
|
"-1": "errNum",
|
|
"-2": "expiredRun"}
|
|
|
|
res := make(orm.Params)
|
|
key := m[status]
|
|
|
|
if RunNumCache.IsExist(key) {
|
|
json.Unmarshal(RunNumCache.Get(key).([]byte), &res)
|
|
logs.Info("cache")
|
|
return res
|
|
}
|
|
_, err := orm.NewOrm().Raw("SELECT FROM_UNIXTIME(create_time,'%Y-%m-%d') days,COUNT(id) count FROM pp_task_log WHERE status in(?) GROUP BY days ORDER BY days DESC limit ?;",
|
|
status, limit).RowsToMap(&res, "days", "count")
|
|
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
data, err := json.Marshal(res)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
RunNumCache.Put(key, data, 2*time.Hour)
|
|
return res
|
|
|
|
}
|