|
|
@@ -2861,6 +2861,7 @@ class DeepSeekService
|
|
|
// exit();
|
|
|
$now = date('Y-m-d H:i:s');
|
|
|
|
|
|
+ $del_flag = false;
|
|
|
try {
|
|
|
DB::beginTransaction();
|
|
|
|
|
|
@@ -2912,6 +2913,7 @@ class DeepSeekService
|
|
|
if ($boolen2 === false) {
|
|
|
Utils::throwError('20003:分集内容保存失败');
|
|
|
}
|
|
|
+ $del_flag = true;
|
|
|
} else {
|
|
|
DB::table('mp_anime_episodes')
|
|
|
->where('anime_id', $anime_id)
|
|
|
@@ -2961,6 +2963,8 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
if ($segments) {
|
|
|
+ // 如果是更新剧集则需删除所有剧集分镜
|
|
|
+ if ($del_flag) DB::table('mp_episode_segments')->where('anime_id', $anime_id)->where('episode_id', $episode_id)->delete();
|
|
|
$boolen3 = DB::table('mp_episode_segments')->insert($segments);
|
|
|
if (!$boolen3) {
|
|
|
Utils::throwError('20003:分镜内容保存失败');
|
|
|
@@ -3017,13 +3021,11 @@ class DeepSeekService
|
|
|
// 批量生成全局角色图片
|
|
|
$this->batchSetGlobalRoleImg([
|
|
|
'anime_id' => $anime_id,
|
|
|
- 'episode_number' => $episode_number
|
|
|
]);
|
|
|
|
|
|
// 批量生成全局场景图片
|
|
|
$this->batchSetGlobalSceneImg([
|
|
|
'anime_id' => $anime_id,
|
|
|
- 'episode_number' => $episode_number
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
@@ -3208,20 +3210,22 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
// 生成全局角色图片
|
|
|
- private function batchSetGlobalRoleImg($data) {
|
|
|
+ private function batchSetGlobalRoleImg($data, $is_force=false) {
|
|
|
$anime_id = getProp($data, 'anime_id');
|
|
|
- $episode_number = getProp($data, 'episode_number');
|
|
|
if (!$anime_id) Utils::throwError('1002:请选择对话');
|
|
|
$anime = DB::table('mp_animes')->where('id', $anime_id)->where('is_deleted', 0)->first();
|
|
|
$roles = json_decode(getProp($anime, 'roles'), true);
|
|
|
$art_style = getProp($anime, 'art_style');
|
|
|
|
|
|
+ $update_flag = false;
|
|
|
foreach ($roles as &$role) {
|
|
|
$role_name = getProp($role, 'role');
|
|
|
$description = getProp($role, 'description');
|
|
|
if ($art_style) $description = "美术风格:\n$art_style\n主体描述:$description";
|
|
|
// 参考图地址
|
|
|
$ref_img_url = getProp($role, 'url');
|
|
|
+ if (!$is_force && $ref_img_url) continue;
|
|
|
+ $update_flag = true;
|
|
|
|
|
|
// 此处调用AIImageGenerationService的生成图片任务接口: createImageGenerationTask(注意使用默认参数,prompt使用角色描述),并返回任务id
|
|
|
try {
|
|
|
@@ -3243,9 +3247,10 @@ class DeepSeekService
|
|
|
Utils::throwError("20003:" . $e->getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (!$update_flag) return true;
|
|
|
|
|
|
// 保存角色信息
|
|
|
- // $boolen = DB::table('mp_animes')->where('anime_id', $anime_id)->where('episode_number', $episode_number)->where('is_default', 1)->update([
|
|
|
$boolen = DB::table('mp_animes')->where('id', $anime_id)->update([
|
|
|
'roles' => json_encode($roles, 256),
|
|
|
'generate_status' => '执行中',
|
|
|
@@ -3260,20 +3265,22 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
// 生成全局场景图片
|
|
|
- private function batchSetGlobalSceneImg($data) {
|
|
|
+ private function batchSetGlobalSceneImg($data, $is_force=false) {
|
|
|
$anime_id = getProp($data, 'anime_id');
|
|
|
if (!$anime_id) Utils::throwError('1002:请选择对话');
|
|
|
- $episode_number = getProp($data, 'episode_number');
|
|
|
$anime = DB::table('mp_animes')->where('id', $anime_id)->where('is_deleted', 0)->first();
|
|
|
$scenes = json_decode(getProp($anime, 'scenes'), true);
|
|
|
$art_style = getProp($anime, 'art_style');
|
|
|
|
|
|
+ $update_flag = false;
|
|
|
foreach ($scenes as &$scene) {
|
|
|
$scene_name = getProp($scene, 'scene');
|
|
|
$description = getProp($scene, 'description');
|
|
|
if ($art_style) $description = "美术风格:\n$art_style\n\n场景描述:$description";
|
|
|
// 参考图地址
|
|
|
$ref_img_url = getProp($scene, 'url');
|
|
|
+ if (!$is_force && $ref_img_url) continue;
|
|
|
+ $update_flag = true;
|
|
|
|
|
|
// 此处调用AIImageGenerationService的生成图片任务接口: createImageGenerationTask(注意使用默认参数,prompt使用角色描述),并返回任务id
|
|
|
try {
|
|
|
@@ -3295,9 +3302,10 @@ class DeepSeekService
|
|
|
Utils::throwError("20003:" . $e->getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (!$update_flag) return true;
|
|
|
|
|
|
// 保存角色信息
|
|
|
- // $boolen = DB::table('mp_anime_episodes')->where('anime_id', $anime_id)->where('episode_number', $episode_number)->where('is_default', 1)->update([
|
|
|
$boolen = DB::table('mp_animes')->where('id', $anime_id)->update([
|
|
|
'scenes' => json_encode($scenes, 256),
|
|
|
'generate_status' => '执行中',
|