lh 3 дней назад
Родитель
Сommit
12f6826605
1 измененных файлов с 44 добавлено и 28 удалено
  1. 44 28
      app/Services/Anime/AnimeService.php

+ 44 - 28
app/Services/Anime/AnimeService.php

@@ -583,12 +583,12 @@ class AnimeService
     public function changeEpisodeRoles($data) {
         $anime_id = getProp($data, 'anime_id');
         $episode_id = getProp($data, 'episode_id');
-        $roles = getProp($data, 'roles');
+        $target_roles = getProp($data, 'roles');
 
         // 参数验证
         if (!$anime_id) Utils::throwError('20003:请提供动漫ID');
         if (!$episode_id) Utils::throwError('20003:请提供剧集ID');
-        if (!is_array($roles)) Utils::throwError('20003:角色列表必须是数组格式');
+        if (!$target_roles) Utils::throwError('20003:请提供角色信息');
 
         // 验证剧集是否存在
         $episode = DB::table('mp_anime_episodes')
@@ -597,22 +597,28 @@ class AnimeService
             ->first();
         
         if (!$episode) Utils::throwError('20003:该剧集不存在');
+        $roles = json_decode(getProp($episode, 'roles'), true);
 
         try {
-            // 更新角色列表
-            $result = DB::table('mp_anime_episodes')
-                ->where('anime_id', $anime_id)
-                ->where('id', $episode_id)
-                ->update([
-                    'roles' => json_encode($roles, 256),
-                    'updated_at' => date('Y-m-d H:i:s')
-                ]);
+            foreach($roles as &$role) {
+                if (getProp($role, 'role') === getProp($target_roles, 'role')) {
+                    $role = $target_roles;
+
+                    // 更新角色列表
+                    $result = DB::table('mp_anime_episodes')
+                        ->where('anime_id', $anime_id)
+                        ->where('id', $episode_id)
+                        ->update([
+                            'roles' => json_encode($roles, 256),
+                            'updated_at' => date('Y-m-d H:i:s')
+                        ]);
 
-            if ($result === false) {
-                Utils::throwError('20003:更新角色列表失败');
+                    if ($result === false) {
+                        Utils::throwError('20003:更新角色列表失败');
+                    }
+                    break;
+                }
             }
-
-            return ['success' => true, 'message' => '角色列表更新成功'];
         } catch (\Exception $e) {
             dLog('anime')->error('更新剧集角色失败', [
                 'anime_id' => $anime_id,
@@ -621,17 +627,19 @@ class AnimeService
             ]);
             Utils::throwError('20003:更新角色列表失败: ' . $e->getMessage());
         }
+
+        return true;
     }
 
     public function changeEpisodeScenes($data) {
         $anime_id = getProp($data, 'anime_id');
         $episode_id = getProp($data, 'episode_id');
-        $scenes = getProp($data, 'scenes');
+        $target_scenes = getProp($data, 'scenes');
 
         // 参数验证
         if (!$anime_id) Utils::throwError('20003:请提供动漫ID');
         if (!$episode_id) Utils::throwError('20003:请提供剧集ID');
-        if (!is_array($scenes)) Utils::throwError('20003:场景列表必须是数组格式');
+        if (!$target_scenes) Utils::throwError('20003:请提供场景信息');
 
         // 验证剧集是否存在
         $episode = DB::table('mp_anime_episodes')
@@ -640,22 +648,28 @@ class AnimeService
             ->first();
         
         if (!$episode) Utils::throwError('20003:该剧集不存在');
+        $scenes = json_decode(getProp($episode, 'scenes'), true);
 
         try {
-            // 更新场景列表
-            $result = DB::table('mp_anime_episodes')
-                ->where('anime_id', $anime_id)
-                ->where('id', $episode_id)
-                ->update([
-                    'scenes' => json_encode($scenes, 256),
-                    'updated_at' => date('Y-m-d H:i:s')
-                ]);
+            foreach($scenes as &$scene) {
+                if (getProp($scene, 'scene') === getProp($target_scenes, 'scene')) {
+                    $scene = $target_scenes;
+
+                    // 更新场景列表
+                    $result = DB::table('mp_anime_episodes')
+                        ->where('anime_id', $anime_id)
+                        ->where('id', $episode_id)
+                        ->update([
+                            'scenes' => json_encode($scenes, 256),
+                            'updated_at' => date('Y-m-d H:i:s')
+                        ]);
 
-            if ($result === false) {
-                Utils::throwError('20003:更新场景列表失败');
+                    if ($result === false) {
+                        Utils::throwError('20003:更新场景列表失败');
+                    }
+                    break;
+                }
             }
-
-            return ['success' => true, 'message' => '场景列表更新成功'];
         } catch (\Exception $e) {
             dLog('anime')->error('更新剧集场景失败', [
                 'anime_id' => $anime_id,
@@ -664,6 +678,8 @@ class AnimeService
             ]);
             Utils::throwError('20003:更新场景列表失败: ' . $e->getMessage());
         }
+
+        return true;
     }
 
     public function editSegment($data) {