From e536336ab674bc5e15ea8dd632608eeed5bec705 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期日, 08 十月 2023 11:16:56 +0800 Subject: [PATCH] 多个新任务只能第一个可以开始 --- api/v1/task.go | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index 558b127..0da5a0c 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -68,10 +68,14 @@ return } + taskCount := service.NewTaskService().NewTaskCount() params.Page = 1 - if params.PageSize <= 0 { - params.PageSize = channelAmount + if params.TaskMode == constvar.TaskModeUnStarted { + params.PageSize = int(taskCount) + } else { + params.PageSize = channelAmount + } } taskMode := constvar.TaskModeCurrent @@ -107,14 +111,18 @@ return taskResponse.Tasks[i].Channel < taskResponse.Tasks[i].Channel }) + nowTs := time.Now().Unix() + flagMap := make(map[int32]struct{}, 0) for _, task := range taskResponse.Tasks { - if !service.TaskFlagGet(task.Channel) { + if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(task.Channel) && task.Procedure.StartTime <= nowTs { task.CanStarted = true + flagMap[task.Channel] = struct{}{} } } taskResponse.Prompt = conf.Conf.Prompt taskResponse.ChannelAmount = channelAmount + taskResponse.TaskCount = taskCount ctx.OkWithDetailed(taskResponse) } @@ -202,6 +210,14 @@ ctx.Fail(code) return } + if procedure.Status == model.ProcedureStatusFinished { + ctx.Ok() + return + } + if procedure.Status != model.ProcedureStatusProcessing { + ctx.Fail(ecode.ParamsErr) + return + } err := service.NewTaskService().UpdateProcedureStatus(nil, id, model.ProcedureStatusFinished, procedure.Channel) if err != nil { logx.Errorf("UpdateProcedureStatus err: %v", err.Error()) -- Gitblit v1.8.0