Browse Source

新增插入音效或bgm

lh 1 day ago
parent
commit
49974f4f06

+ 14 - 0
app/Http/Controllers/DeepSeek/DeepSeekController.php

@@ -67,6 +67,20 @@ class DeepSeekController extends BaseController
         return $this->success(['success'=>$result ? 1 : 0]);
     }
 
+    // 保存段落音频
+    public function insertAudioEffect(Request $request) {
+        $data = $request->all();
+        $result = $this->deepseekService->insertAudioEffect($data);
+        return $this->success(['success'=>$result ? 1 : 0]);
+    }
+
+    // 保存段落音频
+    public function insertBgm(Request $request) {
+        $data = $request->all();
+        $result = $this->deepseekService->insertBgm($data);
+        return $this->success(['success'=>$result ? 1 : 0]);
+    }
+
     /**
      * 新增合成任务
      *

+ 3 - 4
app/Services/Book/BookService.php

@@ -218,8 +218,7 @@ class BookService
         }else {
             $header['role_info'] = [];
         }
-        $query = DB::table('mp_chapter_audios')->where('bid', $bid)->where('version_id', $version_id)
-        ->select('cid', 'chapter_name', 'sequence', 'size', 'generate_status', 'audio_url', 'remark');
+        $query = DB::table('mp_chapter_audios')->where('bid', $bid)->where('version_id', $version_id);
         if ($generate_status) {
             $query->where('generate_status', $generate_status);
         }
@@ -297,7 +296,7 @@ class BookService
     }
 
     public function audioEffects($data) {
-        return DB::table('mp_audio_effects')->where('is_enabled', 1)->select('audio_effect_name', 'audio_effect_url')->get()->map(function ($value) {
+        return DB::table('mp_audio_effects')->where('is_enabled', 1)->select('audio_effect_name', 'audio_effect_url', 'playtime_seconds')->get()->map(function ($value) {
             return (array)$value;
         })->toArray();
     }
@@ -397,7 +396,7 @@ class BookService
     }
 
     public function bgms($data) {
-        return DB::table('mp_bgms')->where('is_enabled', 1)->select('bgm_name', 'bgm_url')->get()->map(function ($value) {
+        return DB::table('mp_bgms')->where('is_enabled', 1)->select('bgm_name', 'bgm_url', 'playtime_seconds')->get()->map(function ($value) {
             return (array)$value;
         })->toArray();
     }

+ 22 - 0
app/Services/DeepSeek/DeepSeekService.php

@@ -206,6 +206,28 @@ class DeepSeekService
         return $boolen;
     }
 
+    public function insertAudioEffect($data) {
+        $audio_id = getProp($data, 'audio_id');
+        $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_paragraph_audios')->where('id', $audio_id)->update([
+            'audio_effect_status'   => '添加中',
+            'audio_effect_json'     => $audio_effect_json,
+            'updated_at'            => date('Y-m-d H:i:s')
+        ]);
+    }
+
+    public function insertBgm($data) {
+        $audio_id = getProp($data, 'audio_id');
+        $bgm_json = getProp($data, 'bgm_json');
+        if (!is_string($bgm_json)) $bgm_json = json_encode($bgm_json, 256);
+        return DB::table('mp_chapter_paragraph_audios')->where('id', $audio_id)->update([
+            'bgm_status'    => '添加中',
+            'bgm_json'      => $bgm_json,
+            'updated_at'    => date('Y-m-d H:i:s')
+        ]);
+    }
+
     // 新增合成任务
     public function addGenerateTask($data) {
         $bid = getProp($data, 'bid');

+ 10 - 7
app/Transformer/Book/BookTransformer.php

@@ -49,13 +49,16 @@ class BookTransformer
 
         foreach ($list as $item) {
             $result[] = [
-                'cid'               => getProp($item, 'cid'),
-                'chapter_name'      => getProp($item, 'chapter_name'),
-                'sequence'          => getProp($item, 'sequence'),
-                'size'              => getProp($item, 'size'),
-                'generate_status'   => getProp($item, 'generate_status'),
-                'audio_url'         => getProp($item, 'audio_url'),
-                'remark'            => getProp($item, 'remark'),
+                'audio_id'              => getProp($item, 'id'),
+                'cid'                   => getProp($item, 'cid'),
+                'chapter_name'          => getProp($item, 'chapter_name'),
+                'sequence'              => getProp($item, 'sequence'),
+                'size'                  => getProp($item, 'size'),
+                'generate_status'       => getProp($item, 'generate_status'),
+                'audio_url'             => getProp($item, 'complete_audio_url') ? getProp($item, 'complete_audio_url') : getProp($item, 'audio_url'),
+                'audio_effect_status'   => getProp($item, 'audio_effect_status'),
+                'bgm_status'            => getProp($item, 'bgm_status'),
+                'remark'                => getProp($item, 'remark'),
             ];
         }
 

+ 2 - 2
routes/api.php

@@ -37,13 +37,11 @@ Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin']], f
         // 音效
         Route::get('audioEffects', [BookController::class, 'audioEffects']);
         Route::get('audioEffectList', [BookController::class, 'audioEffectList']);
-        
         Route::post('editAudioEffect', [BookController::class, 'editAudioEffect']);
 
         // bgm
         Route::get('bgms', [BookController::class, 'bgms']);
         Route::get('bgmList', [BookController::class, 'bgmList']);
-        
         Route::post('editBgm', [BookController::class, 'editBgm']);
 
         
@@ -82,6 +80,8 @@ Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin']], f
         Route::get('resetParagraphAudio', [DeepSeekController::class, 'resetParagraphAudio']);
         Route::post('saveParagraphAudio', [DeepSeekController::class, 'saveParagraphAudio']);
         Route::get('emotionGroups', [DeepSeekController::class, 'emotionGroups']);
+        Route::post('insertAudioEffect', [DeepSeekController::class, 'insertAudioEffect']);
+        Route::post('insertBgm', [DeepSeekController::class, 'insertBgm']);
     });
     
 });