lh hai 14 horas
pai
achega
8f29a3cee9
Modificáronse 1 ficheiros con 124 adicións e 10 borrados
  1. 124 10
      app/Services/DeepSeek/DeepSeekService.php

+ 124 - 10
app/Services/DeepSeek/DeepSeekService.php

@@ -209,27 +209,141 @@ class DeepSeekService
     public function insertAudioEffect($data) {
         $audio_id = getProp($data, 'audio_id');
         $chapter_audio = DB::table('mp_chapter_audios')->where('id', $audio_id)->first();
+        $bid = getProp($chapter_audio, 'bid');
+        $version_id = getProp($chapter_audio, 'version_id');
+        $cid = getProp($chapter_audio, 'cid');
         if (getProp($chapter_audio, 'generate_status') != '制作成功') Utils::throwError('20003:请先完成有声制作');
         $audio_effect_json = getProp($data, 'audio_effect_json');
         if (!is_string($audio_effect_json)) $audio_effect_json = json_encode($audio_effect_json, 256);
-        return DB::table('mp_chapter_audios')->where('id', $audio_id)->update([
-            'audio_effect_status'   => '添加中',
-            'audio_effect_json'     => $audio_effect_json,
-            'updated_at'            => date('Y-m-d H:i:s')
-        ]);
+
+        try {
+            DB::beginTransaction();
+            
+            $count = DB::table('mp_audio_tasks')->where('audio_id', $audio_id)->count('id');
+            if (!$count) {
+                $task_name = getProp($chapter_audio, 'book_name').' '.getProp($chapter_audio, 'chapter_name').'【'.getProp($chapter_audio, 'version_name').'】';
+            }else {
+                $task_name = getProp($chapter_audio, 'book_name').' '.getProp($chapter_audio, 'chapter_name').'【'.getProp($chapter_audio, 'version_name').'】('.($count+1).')';
+            }
+            $boolen1 = DB::table('mp_chapter_audios')->where('id', $audio_id)->update([
+                'audio_effect_status'   => '添加中',
+                'audio_effect_json'     => $audio_effect_json,
+                'updated_at'            => date('Y-m-d H:i:s')
+            ]);
+            if (!$boolen1) {
+                DB::rollBack();
+                Utils::throwError('20003:更新生成数据失败');
+            }
+            $id = DB::table('mp_audio_tasks')->insertGetId([
+                'audio_id'          => $audio_id,
+                'generate_status'   => '执行中',
+                'generate_json'     => json_encode([], 256),
+                'bid'               => $bid,
+                'book_name'         => getProp($chapter_audio, 'book_name'),
+                'version_id'        => $version_id,
+                'version_name'      => getProp($chapter_audio, 'version_name'),
+                'cid'               => $cid,
+                'chapter_name'      => getProp($chapter_audio, 'chapter_name'),
+                'task_name'         => $task_name,
+                'created_at'        => date('Y-m-d H:i:s'),
+                'updated_at'        => date('Y-m-d H:i:s')
+            ]);
+            
+            if (!$id) {
+                DB::rollBack();
+                Utils::throwError('20003:创建任务失败');
+            }
+
+        }catch (\Exception $e) {
+            DB::rollBack();
+            Utils::throwError('20003:'.$e->getMessage());
+        }
+
+        DB::commit();
+        
+        $client = new Client(['timeout' => 300, 'verify' => false]);
+        // 根据ID通过API通知合成音频
+        // $result = $client->get("http://47.240.171.155:5000/api/postTask?taskId={$id}");
+        $result = $client->get("http://122.9.129.83:5000/api/postTask?taskId={$id}");
+        $response = $result->getBody()->getContents();
+        $response_arr = json_decode($response, true);
+        if (!isset($response_arr['code']) || (int)$response_arr['code'] !== 0) {
+            $error_msg = isset($response_arr['msg']) ? $response_arr['msg'] : '未知错误';
+            Log::info('通知火山插入音效失败: '.$error_msg);
+            Utils::throwError('20003:通知火山插入音效失败');
+        }
+        
+        return true;
     }
 
     public function insertBgm($data) {
         $audio_id = getProp($data, 'audio_id');
         $chapter_audio = DB::table('mp_chapter_audios')->where('id', $audio_id)->first();
+        $bid = getProp($chapter_audio, 'bid');
+        $version_id = getProp($chapter_audio, 'version_id');
+        $cid = getProp($chapter_audio, 'cid');
         if (getProp($chapter_audio, 'generate_status') != '制作成功') Utils::throwError('20003:请先完成有声制作');
         $bgm_json = getProp($data, 'bgm_json');
         if (!is_string($bgm_json)) $bgm_json = json_encode($bgm_json, 256);
-        return DB::table('mp_chapter_audios')->where('id', $audio_id)->update([
-            'bgm_status'    => '添加中',
-            'bgm_json'      => $bgm_json,
-            'updated_at'    => date('Y-m-d H:i:s')
-        ]);
+
+        try {
+            DB::beginTransaction();
+            
+            $count = DB::table('mp_audio_tasks')->where('audio_id', $audio_id)->count('id');
+            if (!$count) {
+                $task_name = getProp($chapter_audio, 'book_name').' '.getProp($chapter_audio, 'chapter_name').'【'.getProp($chapter_audio, 'version_name').'】';
+            }else {
+                $task_name = getProp($chapter_audio, 'book_name').' '.getProp($chapter_audio, 'chapter_name').'【'.getProp($chapter_audio, 'version_name').'】('.($count+1).')';
+            }
+            $boolen1 = DB::table('mp_chapter_audios')->where('id', $audio_id)->update([
+                'bgm_status'    => '添加中',
+                'bgm_json'      => $bgm_json,
+                'updated_at'    => date('Y-m-d H:i:s')
+            ]);
+            if (!$boolen1) {
+                DB::rollBack();
+                Utils::throwError('20003:更新生成数据失败');
+            }
+            $id = DB::table('mp_audio_tasks')->insertGetId([
+                'audio_id'          => $audio_id,
+                'generate_status'   => '执行中',
+                'generate_json'     => json_encode([], 256),
+                'bid'               => $bid,
+                'book_name'         => getProp($chapter_audio, 'book_name'),
+                'version_id'        => $version_id,
+                'version_name'      => getProp($chapter_audio, 'version_name'),
+                'cid'               => $cid,
+                'chapter_name'      => getProp($chapter_audio, 'chapter_name'),
+                'task_name'         => $task_name,
+                'created_at'        => date('Y-m-d H:i:s'),
+                'updated_at'        => date('Y-m-d H:i:s')
+            ]);
+            
+            if (!$id) {
+                DB::rollBack();
+                Utils::throwError('20003:创建任务失败');
+            }
+
+        }catch (\Exception $e) {
+            DB::rollBack();
+            Utils::throwError('20003:'.$e->getMessage());
+        }
+
+        DB::commit();
+        
+        $client = new Client(['timeout' => 300, 'verify' => false]);
+        // 根据ID通过API通知合成音频
+        // $result = $client->get("http://47.240.171.155:5000/api/postTask?taskId={$id}");
+        $result = $client->get("http://122.9.129.83:5000/api/postTask?taskId={$id}");
+        $response = $result->getBody()->getContents();
+        $response_arr = json_decode($response, true);
+        if (!isset($response_arr['code']) || (int)$response_arr['code'] !== 0) {
+            $error_msg = isset($response_arr['msg']) ? $response_arr['msg'] : '未知错误';
+            Log::info('通知火山插入bgm失败: '.$error_msg);
+            Utils::throwError('20003:通知火山插入bgm失败');
+        }
+        
+        return true;
     }
 
     // 新增合成任务