Files
jx-callback/business/jxutils/tasksch/task_man.go
2018-10-25 08:47:37 +08:00

48 lines
1.0 KiB
Go

package tasksch
import (
"sort"
"time"
)
var (
defTaskMan TaskMan
defLastHours = 24
)
type TaskMan struct {
taskList map[string]ITask
}
func init() {
defTaskMan.taskList = make(map[string]ITask)
}
func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList TaskList) {
if lastHours == 0 {
lastHours = defLastHours
}
lastTime := time.Now().Add(time.Duration(-lastHours) * time.Hour).Unix()
for k, v := range m.taskList {
status := v.GetStatus()
if !((taskID != "" && taskID != k) || status < fromStatus || status > toStatus || v.GetCreatedAt().Unix() < lastTime) {
taskList = append(taskList, v)
}
}
sort.Sort(TaskList(taskList))
return taskList
}
func (m *TaskMan) ManageTask(task ITask) ITask {
m.taskList[task.GetID()] = task
return task
}
func GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList TaskList) {
return defTaskMan.GetTasks(taskID, fromStatus, toStatus, lastHours)
}
func ManageTask(task ITask) ITask {
return defTaskMan.ManageTask(task)
}