aiImageGenerationService = $aiImageGenerationService; } public function uploadImg($data) { } public function batchSetRoleImg($data) { $anime_id = getProp($data, 'anime_id'); if (!$anime_id) Utils::throwError('1002:请选择对话'); $roles = getProp($data, 'roles'); foreach ($roles as &$role) { $role_name = getProp($role, 'role'); $description = getProp($role, 'description'); // 参考图地址 $ref_img_url = getProp($role, 'ref_img_url'); // 此处调用AIImageGenerationService的生成图片任务接口: createImageGenerationTask(注意使用默认参数,prompt使用角色描述),并返回任务id try { $params = [ 'prompt' => $description, 'ref_img_urls' => !empty($ref_img_url) ? $ref_img_url : [] ]; $task = $this->aiImageGenerationService->createImageGenerationTask($params); $task_id = $task->id; if (!$task_id) { Utils::throwError("20003: 角色({$role_name})生成图片失败"); } $role['task_id'] = $task_id; $role['task_status'] = 'processing'; } catch (\Exception $e) { Utils::throwError("20003:" . $e->getMessage()); } } // 保存角色信息 $boolen = DB::table('mp_animes')->where('id', $anime_id)->update([ 'roles' => json_encode($roles, 256), 'generate_status' => '执行中', 'updated_at' => date('Y-m-d H:i:s') ]); if (!$boolen) { Utils::throwError('20003:保存角色信息失败'); } return $boolen; } public function batchSetSceneImg($data) { $anime_id = getProp($data, 'anime_id'); if (!$anime_id) Utils::throwError('1002:请选择对话'); $scenes = getProp($data, 'scenes'); foreach ($scenes as &$scene) { $scene_name = getProp($scene, 'scene'); $description = getProp($scene, 'description'); // 参考图地址 $ref_img_url = getProp($scene, 'url'); // 此处调用AIImageGenerationService的生成图片任务接口: createImageGenerationTask(注意使用默认参数,prompt使用角色描述),并返回任务id try { $params = [ 'prompt' => $description, 'ref_img_urls' => !empty($ref_img_url) ? $ref_img_url : [] ]; $task = $this->aiImageGenerationService->createImageGenerationTask($params); $task_id = $task->id; if (!$task_id) { Utils::throwError("20003: 角色({$scene_name})生成图片失败"); } $scene['task_id'] = $task_id; $scene['task_status'] = 'processing'; } catch (\Exception $e) { Utils::throwError("20003:" . $e->getMessage()); } } // 保存角色信息 $boolen = DB::table('mp_animes')->where('id', $anime_id)->update([ 'scenes' => json_encode($scenes, 256), 'generate_status' => '执行中', 'updated_at' => date('Y-m-d H:i:s') ]); if (!$boolen) { Utils::throwError('20003:保存角色信息失败'); } return $boolen; } }