|
@@ -619,7 +619,7 @@ class AnimeService
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
// 获取分镜信息
|
|
// 获取分镜信息
|
|
|
- $segments = DB::table('mp_episode_segments')->where('anime_id', $anime_id)->where('episode_id', getProp($episode, 'episode_id'))->orderBy('segment_number')
|
|
|
|
|
|
|
+ $segments = DB::table('mp_episode_segments')->where('anime_id', $anime_id)->where('episode_id', getProp($episode, 'episode_id'))->orderBy('act_number')
|
|
|
->select('*')->get()->map(function ($value) {
|
|
->select('*')->get()->map(function ($value) {
|
|
|
return (array)$value;
|
|
return (array)$value;
|
|
|
})->toArray();
|
|
})->toArray();
|
|
@@ -701,6 +701,9 @@ class AnimeService
|
|
|
$episode['sequence'] = $sequence;
|
|
$episode['sequence'] = $sequence;
|
|
|
$episode['is_generated'] = 0;
|
|
$episode['is_generated'] = 0;
|
|
|
|
|
|
|
|
|
|
+ // 获取ace_mode
|
|
|
|
|
+ $ace_mode = DB::table('mp_animes')->where('id', $anime_id)->value('ace_mode');
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
|
DB::table('mp_anime_episodes')->where('anime_id', $anime_id)->where('episode_number', $episode_number)->update(['is_default' => 0, 'updated_at'=>$now]);
|
|
DB::table('mp_anime_episodes')->where('anime_id', $anime_id)->where('episode_number', $episode_number)->update(['is_default' => 0, 'updated_at'=>$now]);
|
|
@@ -713,11 +716,11 @@ class AnimeService
|
|
|
|
|
|
|
|
// 获取分镜数据并准备插入
|
|
// 获取分镜数据并准备插入
|
|
|
$segments_for_insert = DB::table('mp_episode_segments')
|
|
$segments_for_insert = DB::table('mp_episode_segments')
|
|
|
- ->select('anime_id', 'episode_number', 'act_number', 'act_title', 'act_duration', 'segment_number', 'segment_content', 'description', 'composition', 'camera_movement', 'voice_actor', 'dialogue', 'frame_type', 'scene', 'characters', 'tail_frame', 'voice_name', 'voice_type', 'voice_audio_url', 'emotion', 'emotion_type', 'gender', 'speed_ratio', 'loudness_ratio', 'emotion_scale', 'pitch')
|
|
|
|
|
- ->where('episode_id', $episode_id)->orderBy('segment_number')->get()->map(function($item) use ($new_episode_id) {
|
|
|
|
|
|
|
+ ->select('anime_id', 'episode_number', 'act_number', 'act_title', 'act_duration', 'act_content', 'segment_number', 'segment_content', 'description', 'composition', 'camera_movement', 'voice_actor', 'dialogue', 'frame_type', 'scene', 'characters', 'tail_frame', 'voice_name', 'voice_type', 'voice_audio_url', 'emotion', 'emotion_type', 'gender', 'speed_ratio', 'loudness_ratio', 'emotion_scale', 'pitch')
|
|
|
|
|
+ ->where('episode_id', $episode_id)->orderBy('segment_number')->get()->map(function($item) use ($new_episode_id,$ace_mode) {
|
|
|
$item = (array)$item;
|
|
$item = (array)$item;
|
|
|
$item['episode_id'] = $new_episode_id;
|
|
$item['episode_id'] = $new_episode_id;
|
|
|
- $item['segment_id'] = date('YmdHis').mt_rand(1000,9999).str_pad($item['segment_number'], 3, "0", STR_PAD_LEFT);
|
|
|
|
|
|
|
+ if ((int)$ace_mode !== 1) $item['segment_id'] = date('YmdHis').mt_rand(1000,9999).str_pad($item['segment_number'], 3, "0", STR_PAD_LEFT);
|
|
|
$item['created_at'] = $item['updated_at'] = date('Y-m-d H:i:s');
|
|
$item['created_at'] = $item['updated_at'] = date('Y-m-d H:i:s');
|
|
|
return $item;
|
|
return $item;
|
|
|
})->toArray();
|
|
})->toArray();
|
|
@@ -776,8 +779,18 @@ class AnimeService
|
|
|
'is_generated' => (int)$episode['is_generated']
|
|
'is_generated' => (int)$episode['is_generated']
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
- // 复用已有的分镜数据,按 act 分组(避免重复查询数据库)
|
|
|
|
|
- $segmentsStructure = $this->buildEpisodeSegmentsStructure($segments_for_insert);
|
|
|
|
|
|
|
+ if ((int)$ace_mode === 1) {
|
|
|
|
|
+ // 获取分镜信息
|
|
|
|
|
+ $segments = DB::table('mp_episode_segments')->where('anime_id', $anime_id)->where('episode_id', $new_episode_id)->orderBy('act_number')
|
|
|
|
|
+ ->select('*')->get()->map(function ($value) {
|
|
|
|
|
+ return (array)$value;
|
|
|
|
|
+ })->toArray();
|
|
|
|
|
+
|
|
|
|
|
+ $segmentsStructure = $this->buildEpisodeActsStructureForAce($segments);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ // 复用已有的分镜数据,按 act 分组(避免重复查询数据库)
|
|
|
|
|
+ $segmentsStructure = $this->buildEpisodeSegmentsStructure($segments_for_insert);
|
|
|
|
|
+ }
|
|
|
$result['acts'] = $segmentsStructure['acts'];
|
|
$result['acts'] = $segmentsStructure['acts'];
|
|
|
$result['total_duration'] = $segmentsStructure['total_duration'];
|
|
$result['total_duration'] = $segmentsStructure['total_duration'];
|
|
|
|
|
|