TimbreTransformer.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Transformer\Timbre;
  3. class TimbreTransformer
  4. {
  5. // 分类列表
  6. public function newBuildCategoryList($data): array
  7. {
  8. return [
  9. 'meta' => getMeta($data),
  10. 'list' => $this->newEachCategoryList($data),
  11. ];
  12. }
  13. private function newEachCategoryList($list): array
  14. {
  15. $result = [];
  16. if (empty($list)) return $result;
  17. foreach ($list as $item) {
  18. $result[] = [
  19. 'category_id' => getProp($item, 'id'),
  20. 'category_name' => getProp($item, 'category_name'),
  21. 'created_at' => transDate(getProp($item, 'created_at')),
  22. ];
  23. }
  24. return $result;
  25. }
  26. // 书籍列表
  27. public function newBuildTimbreList($data): array
  28. {
  29. return [
  30. 'meta' => getMeta($data),
  31. 'list' => $this->newEachTimbreList($data),
  32. ];
  33. }
  34. private function newEachTimbreList($list): array
  35. {
  36. $result = [];
  37. if (empty($list)) return $result;
  38. foreach ($list as $item) {
  39. $result[] = [
  40. 'voice_id' => getProp($item, 'id'),
  41. 'voice_name' => str_replace('(多情感)', '', getProp($item, 'timbre_name')),
  42. 'voice_type' => getProp($item, 'timbre_type'),
  43. 'timbre_url' => getProp($item, 'timbre_url'),
  44. 'language' => getProp($item, 'language'),
  45. 'dialect' => getProp($item, 'dialect'),
  46. 'emotion' => getProp($item, 'emotion'),
  47. 'first_category_id' => getProp($item, 'first_category_id'),
  48. 'first_category_name' => getProp($item, 'first_category_name'),
  49. 'second_category_id' => getProp($item, 'second_category_id'),
  50. 'second_category_name' => getProp($item, 'second_category_name'),
  51. 'third_category_id' => getProp($item, 'third_category_id'),
  52. 'third_category_name' => getProp($item, 'third_category_name'),
  53. 'label' => getProp($item, 'label'),
  54. 'created_at' => transDate(getProp($item, 'created_at')),
  55. ];
  56. }
  57. return $result;
  58. }
  59. // 章节列表
  60. public function newBuildChapterList($data): array
  61. {
  62. return [
  63. 'meta' => getMeta($data['list']),
  64. 'header' => $data['header'],
  65. 'list' => $this->newEachChapterList($data['list']),
  66. ];
  67. }
  68. private function newEachChapterList($list): array
  69. {
  70. $result = [];
  71. if (empty($list)) return $result;
  72. foreach ($list as $item) {
  73. $result[] = [
  74. 'cid' => getProp($item, 'cid'),
  75. 'chapter_name' => getProp($item, 'chapter_name'),
  76. 'sequence' => getProp($item, 'sequence'),
  77. 'size' => getProp($item, 'size'),
  78. 'generate_status' => getProp($item, 'generate_status'),
  79. 'audio_url' => getProp($item, 'audio_url'),
  80. 'remark' => getProp($item, 'remark'),
  81. ];
  82. }
  83. return $result;
  84. }
  85. // 分类列表
  86. public function newBuildTimbreGroupList($data): array
  87. {
  88. return [
  89. 'meta' => getMeta($data),
  90. 'list' => $this->newEachTimbreGroupList($data),
  91. ];
  92. }
  93. private function newEachTimbreGroupList($list): array
  94. {
  95. $result = [];
  96. if (empty($list)) return $result;
  97. foreach ($list as $item) {
  98. $result[] = [
  99. 'group_id' => getProp($item, 'id'),
  100. 'group_name' => getProp($item, 'group_name'),
  101. 'label' => getProp($item, 'label'),
  102. 'male_lead_voice_name' => getProp($item, 'male_lead_voice_name'),
  103. 'male_lead_voice_type' => getProp($item, 'male_lead_voice_type'),
  104. 'female_lead_voice_name' => getProp($item, 'female_lead_voice_name'),
  105. 'female_lead_voice_type' => getProp($item, 'female_lead_voice_type'),
  106. 'narration_voice_name' => getProp($item, 'narration_voice_name'),
  107. 'narration_voice_type' => getProp($item, 'narration_voice_type'),
  108. 'other_roles' => getProp($item, 'other_roles') ? json_decode(getProp($item, 'other_roles'), true) : [],
  109. 'created_at' => transDate(getProp($item, 'created_at')),
  110. ];
  111. }
  112. return $result;
  113. }
  114. }