TimbreTransformer.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. }