/* * @Author: haodaquan * @Date: 2017-06-21 12:22:00 * @Last Modified by: haodaquan * @Last Modified time: 2017-06-21 12:22:10 */ package models import ( "fmt" "github.com/astaxie/beego/orm" "time" ) const ( TASK_SUCCESS = 0 // 任务执行成功 TASK_ERROR = -1 // 任务执行出错 TASK_TIMEOUT = -2 // 任务执行超时 ) type Task struct { Id int UserId int ServerId int GroupId int TaskName string TaskType int Description string CronSpec string Concurrent int Command string Status int Timeout int ExecuteTimes int PrevTime int64 CreateTime int64 } 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 == "" { return 0, fmt.Errorf("TaskName字段不能为空") } if task.CronSpec == "" { return 0, fmt.Errorf("CronSpec字段不能为空") } if task.Command == "" { return 0, fmt.Errorf("Command字段不能为空") } 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 }