lh 1 месяц назад
Родитель
Сommit
f772eb2d4b
1 измененных файлов с 14 добавлено и 12 удалено
  1. 14 12
      app/Console/Commands/ProcessBatchAnimeEpisodeGenerationCommand.php

+ 14 - 12
app/Console/Commands/ProcessBatchAnimeEpisodeGenerationCommand.php

@@ -157,18 +157,9 @@ class ProcessBatchAnimeEpisodeGenerationCommand extends Command
         if ($task->episode_number > 1) {
             $prevEpisodeNumber = $task->episode_number - 1;
 
-            // 检查前一集是否在批量任务中
-            $prevTaskInBatch = DB::table('mp_batch_episode_generation_details')
-                ->where('anime_id', $task->anime_id)
-                ->where('episode_number', $prevEpisodeNumber)
-                ->first();
-
-            if ($prevTaskInBatch && $prevTaskInBatch->status !== 'completed') {
-                dLog('command')->info('[' . date('Y-m-d H:i:s') . '] 前一集(第' . $prevEpisodeNumber . '集)尚未完成,跳过当前任务 (anime_id: ' . $task->anime_id . ')');
-                return false;
-            }
-
-            // 检查前一集是否已在系统中生成(查询 mp_anime_episodes)
+            // 优先判断前一集是否已在系统中生成(查询 mp_anime_episodes)。
+            // 用户手动创建的前一集也视为已存在,直接跳过批量任务状态判断,
+            // 避免批量任务前一集失败后卡住整个批量任务。
             $prevEpisodeExists = DB::table('mp_anime_episodes')
                 ->where('anime_id', $task->anime_id)
                 ->where('episode_number', $prevEpisodeNumber)
@@ -176,6 +167,17 @@ class ProcessBatchAnimeEpisodeGenerationCommand extends Command
                 ->exists();
 
             if (!$prevEpisodeExists) {
+                // 系统中不存在前一集时,才进行批量任务状态判断
+                $prevTaskInBatch = DB::table('mp_batch_episode_generation_details')
+                    ->where('anime_id', $task->anime_id)
+                    ->where('episode_number', $prevEpisodeNumber)
+                    ->first();
+
+                if ($prevTaskInBatch && $prevTaskInBatch->status !== 'completed') {
+                    dLog('command')->info('[' . date('Y-m-d H:i:s') . '] 前一集(第' . $prevEpisodeNumber . '集)尚未完成,跳过当前任务 (anime_id: ' . $task->anime_id . ')');
+                    return false;
+                }
+
                 dLog('command')->error('[' . date('Y-m-d H:i:s') . '] 前一集(第' . $prevEpisodeNumber . '集)不存在,无法继续生成 (anime_id: ' . $task->anime_id . ')');
 
                 // 标记为失败