'array', 'ref_img_url' => 'array', 'mask_img_url' => 'array', 'extra_params' => 'array', 'result_json' => 'array', 'started_at' => 'datetime', 'completed_at' => 'datetime', ]; const STATUS_PENDING = 'pending'; const STATUS_PROCESSING = 'processing'; const STATUS_SUCCESS = 'success'; const STATUS_FAILED = 'failed'; /** * 更新任务状态 * * @param string $status * @param array $data * @return bool */ public function updateStatus(string $status, array $data = []) { $updateData = ['status' => $status]; if (!$this->created_at) { $updateData['created_at'] = now(); } $updateData['updated_at'] = now(); if (isset($data['extra_params'])) $updateData['extra_params'] = $data['extra_params']; if ($status === self::STATUS_PROCESSING) { if (isset($data['task_id'])) $updateData['task_id'] = $data['task_id']; if (!$this->started_at) $updateData['started_at'] = now(); } if (in_array($status, [self::STATUS_SUCCESS, self::STATUS_FAILED])) { $updateData['completed_at'] = now(); if (isset($data['result_url'])) { $updateData['result_url'] = $data['result_url']; } if (isset($data['error_message'])) { $updateData['error_message'] = $data['error_message']; } } return $this->update($updateData); } }