Files
ppgo_job/models/task.go

118 lines
2.5 KiB
Go
Raw Normal View History

2018-07-13 17:53:34 +08:00
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-11 21:26
2019-02-16 20:43:33 +08:00
** @Last Modified by: Bee
** @Last Modified time: 2019-02-15 21:32
2018-07-13 17:53:34 +08:00
*************************************************************/
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
ServerIds string
TaskName string
Description string
CronSpec string
Concurrent int
Command string
Timeout int
ExecuteTimes int
PrevTime int64
Status int
IsNotify int
NotifyType int
2019-02-16 20:43:33 +08:00
NotifyTplId int
NotifyUserIds string
CreateId int
UpdateId int
CreateTime int64
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("-status", "task_name", "-id").Limit(pageSize, offset).All(&tasks)
2017-06-23 12:24:42 +08:00
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) (int64, error) {
return orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Update(orm.Params{
"status": -1,
})
//_, err := orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Delete()
//return err
2017-06-23 12:24:42 +08:00
}