DeepSeekTransformer.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Transformer\DeepSeek;
  3. use Illuminate\Support\Facades\DB;
  4. class DeepSeekTransformer
  5. {
  6. // 剧本列表
  7. public function newBuildScriptList($data): array
  8. {
  9. return [
  10. 'meta' => getMeta($data),
  11. // 'header' => $data['header'],
  12. 'list' => $this->newEachScriptList($data),
  13. ];
  14. }
  15. private function newEachScriptList($list): array
  16. {
  17. $result = [];
  18. if (empty($list)) return $result;
  19. foreach ($list as $item) {
  20. $script_id = getProp($item, 'id');
  21. $is_products = getProp($item, 'is_products', 0);
  22. // 如果未生成资产,检查是否有正在生成的资产任务
  23. if ((int)$is_products !== 1) {
  24. $latestTask = DB::table('mp_script_generate_tasks')
  25. ->where('uid', getProp($item, 'user_id'))
  26. ->where('script_id', $script_id)
  27. ->orderByDesc('id')
  28. ->first();
  29. if ($latestTask) {
  30. $is_products = 2; // 有生成任务但还没资产保存
  31. } else {
  32. $is_products = 0;
  33. }
  34. }
  35. // 获取分集信息
  36. $episode_content = DB::table('mp_script_episode_group')->where('script_id', $script_id)->orderBy('start_episode_number')->orderBy('id')->value('episode_content');
  37. $episode_content = mb_substr($episode_content, 0, 200);
  38. $result[] = [
  39. 'user_id' => getProp($item, 'user_id'),
  40. 'script_id' => $script_id,
  41. 'script_name' => getProp($item, 'script_name'),
  42. 'status' => getProp($item, 'status'),
  43. 'created_at' => transDate(getProp($item, 'created_at')),
  44. 'updated_at' => transDate(getProp($item, 'updated_at')),
  45. 'is_products' => $is_products,
  46. 'episode_content' => $episode_content,
  47. ];
  48. }
  49. return $result;
  50. }
  51. // 剧本资产生成任务列表
  52. public function newBuildScriptGenerateTaskList($data): array
  53. {
  54. return [
  55. 'meta' => getMeta($data),
  56. 'list' => $this->newEachScriptGenerateTaskList($data),
  57. ];
  58. }
  59. private function newEachScriptGenerateTaskList($list): array
  60. {
  61. $result = [];
  62. if (empty($list)) return $result;
  63. foreach ($list as $item) {
  64. $result[] = [
  65. 'task_id' => getProp($item, 'id'),
  66. 'script_id' => getProp($item, 'script_id'),
  67. 'script_name' => getProp($item, 'script_name'),
  68. 'sequence' => getProp($item, 'sequence'),
  69. 'status' => getProp($item, 'status'),
  70. 'error_message' => getProp($item, 'error_message'),
  71. 'started_at' => transDate(getProp($item, 'started_at')),
  72. 'completed_at' => transDate(getProp($item, 'completed_at')),
  73. ];
  74. }
  75. return $result;
  76. }
  77. }