lh před 5 měsíci
rodič
revize
bdc5c2f44b
1 změnil soubory, kde provedl 38 přidání a 41 odebrání
  1. 38 41
      app/Services/Anime/AnimeService.php

+ 38 - 41
app/Services/Anime/AnimeService.php

@@ -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'] ?? '未知错误'));
+                    }
                 }
             }