| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace App\Services\Anime;
- use App\Consts\ErrorConst;
- use App\Facade\Site;
- use App\Libs\Utils;
- use App\Services\AIGeneration\AIImageGenerationService;
- use GuzzleHttp\Client;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Redis;
- use OSS\Core\OssException;
- use OSS\OssClient;
- class AnimeService
- {
- protected $aiImageGenerationService;
- public function __construct(AIImageGenerationService $aiImageGenerationService) {
- $this->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;
- }
- }
|