MusicController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: durong
  5. * Date: 2019/7/8
  6. * Time: 下午10:37
  7. */
  8. namespace App\Http\Controllers;
  9. use App\Models\PostMusicCategoryRel;
  10. use App\Repositories\MusicRepository;
  11. use App\Transformers\MusicCategoryTransformer;
  12. use App\Transformers\MusicTranformer;
  13. use App\Transformers\UserMusicTranformer;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Validator;
  16. use Illuminate\Validation\Rule;
  17. use League\Fractal\Manager;
  18. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  19. use League\Fractal\Resource\Collection;
  20. class MusicController extends Controller
  21. {
  22. public function __construct(MusicRepository $musicRepository) {
  23. $this->musicRepository = $musicRepository;
  24. }
  25. //音乐分类列表
  26. public function categoryList(Request $request)
  27. {
  28. $categoryList = $this->musicRepository->category_list($request->all());
  29. if (count($categoryList)>0) {
  30. foreach ($categoryList as $k => $v) {
  31. $v->music_count = PostMusicCategoryRel::where('music_category_id', $v['id'])->count();
  32. }
  33. }
  34. $fractal = new Manager();
  35. $resource = new Collection($categoryList, new MusicCategoryTransformer());
  36. $resource->setPaginator(new IlluminatePaginatorAdapter($categoryList));
  37. $data = $fractal->createData($resource)->toArray();
  38. $data['extra'] = [
  39. 'filters' => [
  40. 'id'
  41. ],
  42. 'columns' => [
  43. 'id',
  44. 'name',
  45. 'music_count',
  46. 'is_open'
  47. ]
  48. ];
  49. return $data;
  50. }
  51. //新增音乐分类
  52. public function categoryCreate(Request $request)
  53. {
  54. $validator = Validator::make($request->all(), [
  55. 'name' => 'required|string|max:8',
  56. ]);
  57. if ($validator->fails()) {
  58. return $this->response->error($validator->errors()->first(), 500);
  59. }
  60. return $this->musicRepository->categoryCreate($request->all());
  61. }
  62. //编辑音乐分类
  63. public function categoryEdit(Request $request)
  64. {
  65. $validator = Validator::make($request->all(), [
  66. 'id' => 'required|exists:post_music_category',
  67. 'name' => 'required|string|max:8',
  68. ]);
  69. if ($validator->fails()) {
  70. return $this->response->error($validator->errors()->first(), 500);
  71. }
  72. return $this->musicRepository->categoryEdit($request->all());
  73. }
  74. //修改分类状态
  75. public function editStatus(Request $request)
  76. {
  77. $validator = Validator::make($request->all(), [
  78. 'id' => 'required|exists:post_music_category',
  79. 'is_open' => ['required', Rule::in(0,1)],
  80. ]);
  81. if ($validator->fails()) {
  82. return $this->response->error($validator->errors()->first(), 500);
  83. }
  84. return $this->musicRepository->editStatus($request->all());
  85. }
  86. //删除音乐分类
  87. public function categoryDelete(Request $request)
  88. {
  89. $validator = Validator::make($request->all(), [
  90. 'id' => 'required|exists:post_music_category'
  91. ]);
  92. if ($validator->fails()) {
  93. return $this->response->error($validator->errors()->first(), 500);
  94. }
  95. return $this->musicRepository->categoryDelete($request->only('id'));
  96. }
  97. //音乐列表
  98. public function musicList(Request $request)
  99. {
  100. $musicList = $this->musicRepository->musicList($request->all());
  101. $fractal = new Manager();
  102. $resource = new Collection($musicList, new MusicTranformer());
  103. $resource->setPaginator(new IlluminatePaginatorAdapter($musicList));
  104. $data = $fractal->createData($resource)->toArray();
  105. $data['extra'] = [
  106. 'filters' => [
  107. 'id',
  108. 'name',
  109. 'category_id',
  110. ],
  111. 'columns' => [
  112. 'id',
  113. 'name',
  114. 'category_name',
  115. 'music_duration',
  116. 'created_at'
  117. ]
  118. ];
  119. return $data;
  120. }
  121. //新增音乐
  122. public function musicCreate(Request $request)
  123. {
  124. $validator = Validator::make($request->all(), [
  125. 'name' => 'required|string|max:50',
  126. 'url' => 'required|string',
  127. 'category_id' => 'required|integer',
  128. 'music_duration' => 'required|integer',
  129. ]);
  130. if ($validator->fails()) {
  131. return $this->response->error($validator->errors()->first(), 500);
  132. }
  133. return $this->musicRepository->musicCreate($request->all());
  134. }
  135. //修改音乐
  136. public function musicEdit(Request $request)
  137. {
  138. $validator = Validator::make($request->all(), [
  139. 'id' => 'required|exists:post_music_category_rel',
  140. 'name' => 'required|string|max:50',
  141. 'category_id' => 'required|integer',
  142. 'music_duration' => 'required|integer',
  143. 'url' => 'required|string'
  144. ]);
  145. if ($validator->fails()) {
  146. return $this->response->error($validator->errors()->first(), 500);
  147. }
  148. return $this->musicRepository->musicEdit($request->all());
  149. }
  150. //删除音乐
  151. public function musicDelete(Request $request)
  152. {
  153. $validator = Validator::make($request->all(), [
  154. 'id' => 'required|exists:post_music_category_rel'
  155. ]);
  156. if ($validator->fails()) {
  157. return $this->response->error($validator->errors()->first(), 500);
  158. }
  159. return $this->musicRepository->musicDelete($request->only('id'));
  160. }
  161. //用户上传音乐列表
  162. public function userMusic(Request $request)
  163. {
  164. $musicList = $this->musicRepository->userMusic($request->all());
  165. $fractal = new Manager();
  166. $resource = new Collection($musicList, new UserMusicTranformer());
  167. $resource->setPaginator(new IlluminatePaginatorAdapter($musicList));
  168. $data = $fractal->createData($resource)->toArray();
  169. $data['extra'] = [
  170. 'columns' => [
  171. 'id',
  172. 'created_at',
  173. 'username',
  174. 'name',
  175. 'url'
  176. ]
  177. ];
  178. return $data;
  179. }
  180. }