diff --git a/business/jxutils/tasksch/task_man.go b/business/jxutils/tasksch/task_man.go index 556e85ea2..8b1fcfe29 100644 --- a/business/jxutils/tasksch/task_man.go +++ b/business/jxutils/tasksch/task_man.go @@ -7,10 +7,13 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" ) +const ( + defLastHours = 24 + maxStoreHours = 48 // 最多存放小时数 +) + var ( - defTaskMan TaskMan - defLastHours = 24 - maxStoreTime = 48 * time.Hour // 最多存两天时间 + defTaskMan TaskMan ) type TaskMan struct { @@ -39,7 +42,7 @@ func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours in } func (m *TaskMan) ManageTask(task ITask) ITask { - m.taskMap.StoreWithTimeout(task.GetID(), task, maxStoreTime) + m.taskMap.StoreWithTimeout(task.GetID(), task, maxStoreHours*time.Hour) return task } @@ -57,3 +60,15 @@ func IsTaskRunning(taskID string) bool { } return false } + +func UnmanageTasks(taskIDs []string) { + if len(taskIDs) == 0 { + allTasks := GetTasks("", TaskStatusBegin, TaskStatusEnd, maxStoreHours, "") + for _, v := range allTasks { + taskIDs = append(taskIDs, v.GetID()) + } + } + for _, v := range taskIDs { + defTaskMan.taskMap.Delete(v) + } +} diff --git a/controllers/cms_task.go b/controllers/cms_task.go index ebe4d2a72..1023178f0 100644 --- a/controllers/cms_task.go +++ b/controllers/cms_task.go @@ -3,6 +3,8 @@ package controllers import ( "fmt" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "github.com/astaxie/beego" ) @@ -54,3 +56,20 @@ func (c *TaskController) CancelTask() { return retVal, "", err }) } + +// @Title 取消管理任务 +// @Description 取消管理任务 +// @Param token header string true "认证token" +// @Param taskIDs query string false "任务ID列表" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UnmanageTasks [put] +func (c *TaskController) UnmanageTasks() { + c.callUnmanageTasks(func(params *tTaskUnmanageTasksParams) (retVal interface{}, errCode string, err error) { + var taskIDs []string + if err = jxutils.Strings2Objs(params.TaskIDs, &taskIDs); err == nil { + tasksch.UnmanageTasks(taskIDs) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 8637fac27..5195de907 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1609,6 +1609,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"], + beego.ControllerComments{ + Method: "UnmanageTasks", + Router: `/UnmanageTasks`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "CheckSkuDiffBetweenJxAndVendor",