2017-06-23 12:24:42 +08:00
/ *
* @ 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 (
2019-08-13 23:19:38 +08:00
"encoding/json"
"github.com/astaxie/beego/cache"
"github.com/astaxie/beego/logs"
2017-06-23 12:24:42 +08:00
"github.com/astaxie/beego/orm"
2019-08-13 23:19:38 +08:00
"time"
2017-06-23 12:24:42 +08:00
)
type TaskLog struct {
Id int
TaskId int
2019-04-16 23:40:07 +08:00
ServerId int
ServerName string
2017-06-23 12:24:42 +08:00
Output string
Error string
Status int
ProcessTime int
CreateTime int64
}
2019-08-13 23:19:38 +08:00
var RunNumCache , _ = cache . NewCache ( "memory" , ` { "interval":60} ` )
2017-06-23 12:24:42 +08:00
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 {
2018-12-21 16:26:24 +08:00
_ , err := orm . NewOrm ( ) . Delete ( & TaskLog { Id : id } )
2017-06-23 12:24:42 +08:00
return err
}
func TaskLogDelByTaskId ( taskId int ) ( int64 , error ) {
return orm . NewOrm ( ) . QueryTable ( TableName ( "task_log" ) ) . Filter ( "task_id" , taskId ) . Delete ( )
}
2019-07-06 17:05:19 +08:00
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 {
2019-08-13 23:19:38 +08:00
var m = map [ string ] string {
"0" : "okNum" ,
"-1" : "errNum" ,
"-2" : "expiredRun" }
2019-07-06 17:05:19 +08:00
res := make ( orm . Params )
2019-08-13 23:19:38 +08:00
key := m [ status ]
if RunNumCache . IsExist ( key ) {
json . Unmarshal ( RunNumCache . Get ( key ) . ( [ ] byte ) , & res )
logs . Info ( "cache" )
return res
}
2019-07-06 17:05:19 +08:00
_ , 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
}
2019-08-13 23:19:38 +08:00
data , err := json . Marshal ( res )
if err != nil {
return nil
}
RunNumCache . Put ( key , data , 2 * time . Hour )
2019-07-06 17:05:19 +08:00
return res
2019-08-13 23:19:38 +08:00
2019-07-06 17:05:19 +08:00
}