From 847e73ca2be7cb0b0df2eef425f4adedda20a874 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期日, 08 十月 2023 11:16:01 +0800 Subject: [PATCH] 多个新任务只能第一个可以开始 --- api/v1/task.go | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index 558b127..4cf4808 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,19 @@ 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 } } taskResponse.Prompt = conf.Conf.Prompt taskResponse.ChannelAmount = channelAmount + taskResponse.TaskCount = taskCount ctx.OkWithDetailed(taskResponse) } @@ -202,6 +211,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