TimbreTransformer.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. 'timbre_url' => getProp($item, 'timbre_url'),
  43. 'language' => getProp($item, 'language'),
  44. 'dialect' => getProp($item, 'dialect'),
  45. 'emotion' => getProp($item, 'emotion'),
  46. 'first_category_id' => getProp($item, 'first_category_id'),
  47. 'first_category_name' => getProp($item, 'first_category_name'),
  48. 'second_category_id' => getProp($item, 'second_category_id'),
  49. 'second_category_name' => getProp($item, 'second_category_name'),
  50. 'third_category_id' => getProp($item, 'third_category_id'),
  51. 'third_category_name' => getProp($item, 'third_category_name'),
  52. 'label' => getProp($item, 'label'),
  53. 'created_at' => transDate(getProp($item, 'created_at')),
  54. ];
  55. }
  56. return $result;
  57. }
  58. // 章节列表
  59. public function newBuildChapterList($data): array
  60. {
  61. return [
  62. 'meta' => getMeta($data['list']),
  63. 'header' => $data['header'],
  64. 'list' => $this->newEachChapterList($data['list']),
  65. ];
  66. }
  67. private function newEachChapterList($list): array
  68. {
  69. $result = [];
  70. if (empty($list)) return $result;
  71. foreach ($list as $item) {
  72. $result[] = [
  73. 'cid' => getProp($item, 'cid'),
  74. 'chapter_name' => getProp($item, 'chapter_name'),
  75. 'sequence' => getProp($item, 'sequence'),
  76. 'size' => getProp($item, 'size'),
  77. 'generate_status' => getProp($item, 'generate_status'),
  78. 'audio_url' => getProp($item, 'audio_url'),
  79. 'remark' => getProp($item, 'remark'),
  80. ];
  81. }
  82. return $result;
  83. }
  84. // 分类列表
  85. public function newBuildTimbreGroupList($data): array
  86. {
  87. return [
  88. 'meta' => getMeta($data),
  89. 'list' => $this->newEachTimbreGroupList($data),
  90. ];
  91. }
  92. private function newEachTimbreGroupList($list): array
  93. {
  94. $result = [];
  95. if (empty($list)) return $result;
  96. foreach ($list as $item) {
  97. $result[] = [
  98. 'group_id' => getProp($item, 'id'),
  99. 'group_name' => getProp($item, 'group_name'),
  100. 'label' => getProp($item, 'label'),
  101. 'male_lead_voice_name' => getProp($item, 'male_lead_voice_name'),
  102. 'male_lead_voice_type' => getProp($item, 'male_lead_voice_type'),
  103. 'female_lead_voice_name' => getProp($item, 'female_lead_voice_name'),
  104. 'female_lead_voice_type' => getProp($item, 'female_lead_voice_type'),
  105. 'narration_voice_name' => getProp($item, 'narration_voice_name'),
  106. 'narration_voice_type' => getProp($item, 'narration_voice_type'),
  107. 'other_roles' => getProp($item, 'other_roles') ? json_decode(getProp($item, 'other_roles'), true) : [],
  108. 'created_at' => transDate(getProp($item, 'created_at')),
  109. ];
  110. }
  111. return $result;
  112. }
  113. }