🐛 任务立即执行但没有次数

This commit is contained in:
sugarBecomer
2025-11-07 23:44:05 +08:00
parent 948d118a4f
commit 90bbc11712
+8 -4
View File
@@ -245,17 +245,21 @@ func (v CpTaskServiceV1) ExecuteNow(ctx context.Context, req *v1.ExecuteNowReq)
user := utils.GetUserInfoFromCtx(ctx)
// 查询任务并检查状态
task := db.Global.CpTask.Query().
cpTask := db.Global.CpTask.Query().
Where(cptask.ID(req.Id), cptask.UserID(user.ID)).
Select(cptask.FieldTaskStatus).
FirstX(ctx)
if task == nil {
if cpTask == nil {
utils.OkOrPanic(errors2.NewBusinessError(404, "任务不存在"))
}
// 检查任务是否存在次数
if cpTask.Frequency-cpTask.SuccessCount <= 0 {
utils.OkOrPanic(errors2.NewBusinessError(400, "任务没有执行次数"))
}
// 检查任务是否正在执行中
if task.TaskStatus == cptask.TaskStatusDoing {
if cpTask.TaskStatus != cptask.TaskStatusNotStart && cpTask.TaskStatus != cptask.TaskStatusDone && cpTask.TaskStatus != cptask.TaskStatusFail {
utils.OkOrPanic(errors2.NewBusinessError(400, "任务正在执行中,请稍后再试"))
}
@@ -280,7 +284,7 @@ func (v CpTaskServiceV1) ExecuteNow(ctx context.Context, req *v1.ExecuteNowReq)
asynq.Queue(cst.TaskQueueCpdaily),
)
// 更新未开始的任务状态为队列中
db.Global.CpTask.Update().Where(cptask.ID(task.ID), cptask.TaskStatusEQ(cptask.TaskStatusNotStart)).SetTaskStatus(cptask.TaskStatusQueue).Exec(ctx)
db.Global.CpTask.Update().Where(cptask.ID(cpTask.ID), cptask.TaskStatusEQ(cptask.TaskStatusNotStart)).SetTaskStatus(cptask.TaskStatusQueue).Exec(ctx)
})
if e != nil {
g.Log().Errorf(ctx, "立即执行任务入列失败: %+v", e)