|
|
@@ -2894,27 +2894,7 @@ class AnimeService
|
|
|
// 检查任务模型类型
|
|
|
$model = getProp($task, 'model');
|
|
|
$isVolcModel = in_array($model, \App\Consts\BaseConst::VOLC_PIC_MODELS);
|
|
|
-
|
|
|
- // 火山API是同步返回结果的,直接检查任务状态
|
|
|
- if ($isVolcModel) {
|
|
|
- // 等待队列处理(火山API通过队列异步处理)
|
|
|
- sleep(5);
|
|
|
-
|
|
|
- // 刷新任务状态
|
|
|
- $task = MpGeneratePicTask::where('id', $task_id)->first();
|
|
|
-
|
|
|
- if ($task->status === 'success' && $task->result_url) {
|
|
|
- $result_urls = is_array($task->result_url) ? $task->result_url : json_decode($task->result_url, true);
|
|
|
- $img_url = is_array($result_urls) ? $result_urls[0] : $task->result_url;
|
|
|
- return $img_url;
|
|
|
- } elseif ($task->status === 'failed') {
|
|
|
- Utils::throwError('20003:图片生成失败,' . ($task->error_message ?? '未知错误'));
|
|
|
- }
|
|
|
-
|
|
|
- // 如果还在处理中,提示用户稍后查看
|
|
|
- Utils::throwError('20003:图片生成中,请稍后刷新查看结果');
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
// 即梦AI需要轮询获取结果(3分钟超时,每3秒查询一次)
|
|
|
$start_time = time();
|
|
|
$timeout = 180; // 3分钟
|
|
|
@@ -2922,27 +2902,44 @@ class AnimeService
|
|
|
|
|
|
while (time() - $start_time < $timeout) {
|
|
|
sleep(3);
|
|
|
-
|
|
|
- $task = MpGeneratePicTask::where('id', $task_id)->first();
|
|
|
- $statusInfo = $this->aiImageGenerationService->queryTaskStatus($task);
|
|
|
-
|
|
|
- if ($statusInfo['status'] === 'success') {
|
|
|
- $task->updateStatus('success', [
|
|
|
- 'result_url' => $statusInfo['result_url'],
|
|
|
- 'result_json' => $statusInfo['result_json'] ?? []
|
|
|
- ]);
|
|
|
+
|
|
|
+ // 火山API是同步返回结果的,直接检查任务状态
|
|
|
+ if ($isVolcModel) {
|
|
|
+ // 刷新任务状态
|
|
|
+ $task = MpGeneratePicTask::where('id', $task_id)->first();
|
|
|
|
|
|
- $img_url = $statusInfo['result_url'][0];
|
|
|
- break;
|
|
|
- } elseif ($statusInfo['status'] === 'failed') {
|
|
|
- $task->updateStatus('failed', [
|
|
|
- 'error_message' => $statusInfo['error_message'],
|
|
|
- 'result_json' => $statusInfo['result_json'] ?? []
|
|
|
- ]);
|
|
|
- dLog('anime')->error('图片生成失败,', [
|
|
|
- 'error' => $statusInfo['error_message'] ?? '未知错误'
|
|
|
- ]);
|
|
|
- Utils::throwError('20003:图片生成失败,' . ($statusInfo['error_message'] ?? '未知错误'));
|
|
|
+ if ($task->status === 'success' && $task->result_url) {
|
|
|
+ $result_urls = is_array($task->result_url) ? $task->result_url : json_decode($task->result_url, true);
|
|
|
+ $img_url = is_array($result_urls) ? $result_urls[0] : $task->result_url;
|
|
|
+ break;
|
|
|
+ } elseif ($task->status === 'failed') {
|
|
|
+ Utils::throwError('20003:图片生成失败,' . ($task->error_message ?? '未知错误'));
|
|
|
+ }
|
|
|
+
|
|
|
+ // // 如果还在处理中,提示用户稍后查看
|
|
|
+ // Utils::throwError('20003:图片生成中,请稍后刷新查看结果');
|
|
|
+ }else {
|
|
|
+ $task = MpGeneratePicTask::where('id', $task_id)->first();
|
|
|
+ $statusInfo = $this->aiImageGenerationService->queryTaskStatus($task);
|
|
|
+
|
|
|
+ if ($statusInfo['status'] === 'success') {
|
|
|
+ $task->updateStatus('success', [
|
|
|
+ 'result_url' => $statusInfo['result_url'],
|
|
|
+ 'result_json' => $statusInfo['result_json'] ?? []
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $img_url = $statusInfo['result_url'][0];
|
|
|
+ break;
|
|
|
+ } elseif ($statusInfo['status'] === 'failed') {
|
|
|
+ $task->updateStatus('failed', [
|
|
|
+ 'error_message' => $statusInfo['error_message'],
|
|
|
+ 'result_json' => $statusInfo['result_json'] ?? []
|
|
|
+ ]);
|
|
|
+ dLog('anime')->error('图片生成失败,', [
|
|
|
+ 'error' => $statusInfo['error_message'] ?? '未知错误'
|
|
|
+ ]);
|
|
|
+ Utils::throwError('20003:图片生成失败,' . ($statusInfo['error_message'] ?? '未知错误'));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|