|
|
@@ -1019,53 +1019,51 @@ class AnimeService
|
|
|
$roles = json_decode(getProp($episode, 'roles'), true);
|
|
|
|
|
|
try {
|
|
|
- $role_updated = false;
|
|
|
+ $role_found = false;
|
|
|
$target_role_name = getProp($target_roles, 'role');
|
|
|
|
|
|
+ // 查找并更新已存在的角色
|
|
|
foreach($roles as &$role) {
|
|
|
if (getProp($role, 'role') === $target_role_name) {
|
|
|
$role = $target_roles;
|
|
|
- $role_updated = true;
|
|
|
-
|
|
|
- // 更新角色列表
|
|
|
- $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:更新角色列表失败');
|
|
|
- }
|
|
|
-
|
|
|
- // 同步更新分镜表中对应主体的音色信息
|
|
|
- $voice_name = getProp($target_roles, 'voice_name');
|
|
|
- $voice_type = getProp($target_roles, 'voice_type');
|
|
|
- $voice_audio_url = getProp($target_roles, 'voice_audio_url');
|
|
|
-
|
|
|
- DB::table('mp_episode_segments')
|
|
|
- ->where('anime_id', $anime_id)
|
|
|
- ->where('episode_id', $episode_id)
|
|
|
- ->where('voice_actor', $target_role_name)
|
|
|
- ->update([
|
|
|
- 'voice_name' => $voice_name,
|
|
|
- 'voice_type' => $voice_type,
|
|
|
- 'voice_audio_url' => $voice_audio_url,
|
|
|
- 'updated_at' => date('Y-m-d H:i:s')
|
|
|
- ]);
|
|
|
+ $role_found = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (!$role_updated) {
|
|
|
- dLog('anime')->warning('未找到匹配的角色', [
|
|
|
- 'anime_id' => $anime_id,
|
|
|
- 'episode_id' => $episode_id,
|
|
|
- 'target_role' => $target_role_name
|
|
|
+ // 如果角色不存在,则新增
|
|
|
+ if (!$role_found) {
|
|
|
+ $roles[] = $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:更新角色列表失败');
|
|
|
}
|
|
|
+
|
|
|
+ // 同步更新分镜表中对应主体的音色信息
|
|
|
+ $voice_name = getProp($target_roles, 'voice_name');
|
|
|
+ $voice_type = getProp($target_roles, 'voice_type');
|
|
|
+ $voice_audio_url = getProp($target_roles, 'voice_audio_url');
|
|
|
+
|
|
|
+ DB::table('mp_episode_segments')
|
|
|
+ ->where('anime_id', $anime_id)
|
|
|
+ ->where('episode_id', $episode_id)
|
|
|
+ ->where('voice_actor', $target_role_name)
|
|
|
+ ->update([
|
|
|
+ 'voice_name' => $voice_name,
|
|
|
+ 'voice_type' => $voice_type,
|
|
|
+ 'voice_audio_url' => $voice_audio_url,
|
|
|
+ 'updated_at' => date('Y-m-d H:i:s')
|
|
|
+ ]);
|
|
|
} catch (\Exception $e) {
|
|
|
dLog('anime')->error('更新剧集角色失败', [
|
|
|
'anime_id' => $anime_id,
|
|
|
@@ -1098,25 +1096,35 @@ class AnimeService
|
|
|
$scenes = json_decode(getProp($episode, 'scenes'), true);
|
|
|
|
|
|
try {
|
|
|
+ $scene_found = false;
|
|
|
+ $target_scene_name = getProp($target_scenes, 'scene');
|
|
|
+
|
|
|
+ // 查找并更新已存在的场景
|
|
|
foreach($scenes as &$scene) {
|
|
|
- if (getProp($scene, 'scene') === getProp($target_scenes, 'scene')) {
|
|
|
+ if (getProp($scene, 'scene') === $target_scene_name) {
|
|
|
$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:更新场景列表失败');
|
|
|
- }
|
|
|
+ $scene_found = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 如果场景不存在,则新增
|
|
|
+ if (!$scene_found) {
|
|
|
+ $scenes[] = $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:更新场景列表失败');
|
|
|
+ }
|
|
|
} catch (\Exception $e) {
|
|
|
dLog('anime')->error('更新剧集场景失败', [
|
|
|
'anime_id' => $anime_id,
|