|
|
@@ -71,6 +71,8 @@ class TaskStatusController extends Controller
|
|
|
}
|
|
|
$doneTask = [];
|
|
|
$publishTask = [];
|
|
|
+ $restartTask = [];
|
|
|
+ $runningTask = [];
|
|
|
switch ($request->get('status')) {
|
|
|
case 'publish':
|
|
|
$publishTask[] = $id;
|
|
|
@@ -90,8 +92,10 @@ class TaskStatusController extends Controller
|
|
|
case 'running':
|
|
|
$task->started_at = now();
|
|
|
$task->executor_id = $user['user_uid'];
|
|
|
+ $runningTask[] = $task->id;
|
|
|
break;
|
|
|
case 'done':
|
|
|
+ $doneTask[] = $task->id;
|
|
|
$task->finished_at = now();
|
|
|
$preTask = [$task->id];
|
|
|
//开启父任务
|
|
|
@@ -115,23 +119,51 @@ class TaskStatusController extends Controller
|
|
|
}
|
|
|
//开启后置任务
|
|
|
$nextTasks = TaskRelation::whereIn('task_id', $preTask)
|
|
|
+ ->where('status', 'pending')
|
|
|
->select('next_task_id')->get();
|
|
|
foreach ($nextTasks as $key => $value) {
|
|
|
$publishTask[] = $value->next_task_id;
|
|
|
}
|
|
|
//开启后置任务的子任务
|
|
|
$nextTasksChildren = Task::whereIn('parent_id', $publishTask)
|
|
|
+ ->where('status', 'pending')
|
|
|
->select('id')->get();
|
|
|
foreach ($nextTasksChildren as $child) {
|
|
|
$publishTask[] = $child->id;
|
|
|
}
|
|
|
Task::whereIn('id', $publishTask)
|
|
|
- ->where('status', 'pending')
|
|
|
->update([
|
|
|
'status' => 'published',
|
|
|
'editor_id' => $user['user_uid'],
|
|
|
'updated_at' => now()
|
|
|
]);
|
|
|
+
|
|
|
+ $nextTasks = TaskRelation::whereIn('task_id', $preTask)
|
|
|
+ ->where('status', 'requested_restart')
|
|
|
+ ->select('next_task_id')->get();
|
|
|
+ foreach ($nextTasks as $key => $value) {
|
|
|
+ $runningTask[] = $value->next_task_id;
|
|
|
+ }
|
|
|
+ Task::whereIn('id', $runningTask)
|
|
|
+ ->update([
|
|
|
+ 'status' => 'running',
|
|
|
+ 'editor_id' => $user['user_uid'],
|
|
|
+ 'updated_at' => now()
|
|
|
+ ]);
|
|
|
+ break;
|
|
|
+ case 'requested_restart':
|
|
|
+ //从新开启前置任务
|
|
|
+ $preTasks = TaskRelation::where('next_task_id', $task->id)
|
|
|
+ ->select('task_id')->get();
|
|
|
+ foreach ($preTasks as $key => $value) {
|
|
|
+ $restartTask[] = $value->task_id;
|
|
|
+ }
|
|
|
+ Task::whereIn('id', $restartTask)
|
|
|
+ ->update([
|
|
|
+ 'status' => 'restarted',
|
|
|
+ 'editor_id' => $user['user_uid'],
|
|
|
+ 'updated_at' => now()
|
|
|
+ ]);
|
|
|
break;
|
|
|
}
|
|
|
$task->status = $request->get('status');
|
|
|
@@ -148,12 +180,29 @@ class TaskStatusController extends Controller
|
|
|
from: $user['user_uid'],
|
|
|
message: "任务状态变为 已经发布",
|
|
|
);
|
|
|
- Log::debug('watch message', ['done' => $doneSend, 'published' => $pubSend]);
|
|
|
+
|
|
|
+ $restartSend = WatchApi::change(
|
|
|
+ resId: $restartTask,
|
|
|
+ from: $user['user_uid'],
|
|
|
+ message: "任务状态变为 已经重启",
|
|
|
+ );
|
|
|
+ $runningSend = WatchApi::change(
|
|
|
+ resId: $runningTask,
|
|
|
+ from: $user['user_uid'],
|
|
|
+ message: "任务状态变为 运行中",
|
|
|
+ );
|
|
|
+
|
|
|
+ Log::debug('watch message', [
|
|
|
+ 'done' => $doneSend,
|
|
|
+ 'published' => $pubSend,
|
|
|
+ 'restarted' => $restartSend,
|
|
|
+ 'running' => $runningSend,
|
|
|
+ ]);
|
|
|
|
|
|
$task->editor_id = $user['user_uid'];
|
|
|
$task->save();
|
|
|
|
|
|
- $result = Task::whereIn('id', array_merge($doneTask, $publishTask))
|
|
|
+ $result = Task::whereIn('id', array_merge($doneTask, $publishTask, $restartTask, $runningTask))
|
|
|
->get();
|
|
|
return $this->ok(
|
|
|
[
|