Files
ppgo_job/models/task.go

110 lines
2.3 KiB
Go
Raw Normal View History

2018-07-13 17:53:34 +08:00
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-11 21:26
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-11 21:26
*************************************************************/
2017-06-23 12:24:42 +08:00
package models
import (
"fmt"
"time"
2018-07-13 17:53:34 +08:00
"github.com/astaxie/beego/orm"
2017-06-23 12:24:42 +08:00
)
const (
TASK_SUCCESS = 0 // 任务执行成功
TASK_ERROR = -1 // 任务执行出错
TASK_TIMEOUT = -2 // 任务执行超时
)
type Task struct {
Id int
GroupId int
2018-07-13 17:53:34 +08:00
ServerId int
2017-06-23 12:24:42 +08:00
TaskName string
Description string
CronSpec string
Concurrent int
Command string
Timeout int
ExecuteTimes int
PrevTime int64
2018-07-13 17:53:34 +08:00
Status int
CreateId int
UpdateId int
2017-06-23 12:24:42 +08:00
CreateTime int64
2018-07-13 17:53:34 +08:00
UpdateTime int64
2017-06-23 12:24:42 +08:00
}
func (t *Task) TableName() string {
return TableName("task")
}
func (t *Task) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func TaskAdd(task *Task) (int64, error) {
if task.TaskName == "" {
2018-07-13 17:53:34 +08:00
return 0, fmt.Errorf("任务名称不能为空")
2017-06-23 12:24:42 +08:00
}
2017-06-23 12:24:42 +08:00
if task.CronSpec == "" {
2018-07-13 17:53:34 +08:00
return 0, fmt.Errorf("时间表达式不能为空")
2017-06-23 12:24:42 +08:00
}
if task.Command == "" {
2018-07-13 17:53:34 +08:00
return 0, fmt.Errorf("命令内容不能为空")
2017-06-23 12:24:42 +08:00
}
if task.CreateTime == 0 {
task.CreateTime = time.Now().Unix()
}
return orm.NewOrm().Insert(task)
}
func TaskGetList(page, pageSize int, filters ...interface{}) ([]*Task, int64) {
offset := (page - 1) * pageSize
tasks := make([]*Task, 0)
query := orm.NewOrm().QueryTable(TableName("task"))
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(&tasks)
return tasks, total
}
func TaskResetGroupId(groupId int) (int64, error) {
return orm.NewOrm().QueryTable(TableName("task")).Filter("group_id", groupId).Update(orm.Params{
"group_id": 0,
})
}
func TaskGetById(id int) (*Task, error) {
task := &Task{
Id: id,
}
err := orm.NewOrm().Read(task)
if err != nil {
return nil, err
}
return task, nil
}
func TaskDel(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Delete()
return err
}