MusicController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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. 'sort'
  48. ]
  49. ];
  50. return $data;
  51. }
  52. //新增音乐分类
  53. public function categoryCreate(Request $request)
  54. {
  55. $validator = Validator::make($request->all(), [
  56. 'name' => 'required|string|max:8',
  57. ]);
  58. if ($validator->fails()) {
  59. return $this->response->error($validator->errors()->first(), 500);
  60. }
  61. return $this->musicRepository->categoryCreate($request->all());
  62. }
  63. //编辑音乐分类
  64. public function categoryEdit(Request $request)
  65. {
  66. $validator = Validator::make($request->all(), [
  67. 'id' => 'required|exists:post_music_category',
  68. 'name' => 'required|string|max:8',
  69. ]);
  70. if ($validator->fails()) {
  71. return $this->response->error($validator->errors()->first(), 500);
  72. }
  73. return $this->musicRepository->categoryEdit($request->all());
  74. }
  75. //修改分类状态
  76. public function editStatus(Request $request)
  77. {
  78. $validator = Validator::make($request->all(), [
  79. 'id' => 'required|exists:post_music_category',
  80. 'is_open' => ['required', Rule::in(0,1)],
  81. ]);
  82. if ($validator->fails()) {
  83. return $this->response->error($validator->errors()->first(), 500);
  84. }
  85. return $this->musicRepository->editStatus($request->all());
  86. }
  87. //删除音乐分类
  88. public function categoryDelete(Request $request)
  89. {
  90. $validator = Validator::make($request->all(), [
  91. 'id' => 'required|exists:post_music_category'
  92. ]);
  93. if ($validator->fails()) {
  94. return $this->response->error($validator->errors()->first(), 500);
  95. }
  96. return $this->musicRepository->categoryDelete($request->only('id'));
  97. }
  98. //音乐列表
  99. public function musicList(Request $request)
  100. {
  101. $musicList = $this->musicRepository->musicList($request->all());
  102. $fractal = new Manager();
  103. $resource = new Collection($musicList, new MusicTranformer());
  104. $resource->setPaginator(new IlluminatePaginatorAdapter($musicList));
  105. $data = $fractal->createData($resource)->toArray();
  106. $data['extra'] = [
  107. 'filters' => [
  108. 'id',
  109. 'name',
  110. 'category_id',
  111. ],
  112. 'columns' => [
  113. 'id',
  114. 'name',
  115. 'category_name',
  116. 'music_duration',
  117. 'sort',
  118. 'created_at'
  119. ]
  120. ];
  121. return $data;
  122. }
  123. //新增音乐
  124. public function musicCreate(Request $request)
  125. {
  126. $validator = Validator::make($request->all(), [
  127. 'name' => 'required|string|max:50',
  128. 'url' => 'required|string',
  129. 'category_id' => 'required|integer',
  130. 'music_duration' => 'required|integer',
  131. ]);
  132. if ($validator->fails()) {
  133. return $this->response->error($validator->errors()->first(), 500);
  134. }
  135. return $this->musicRepository->musicCreate($request->all());
  136. }
  137. //修改音乐
  138. public function musicEdit(Request $request)
  139. {
  140. $validator = Validator::make($request->all(), [
  141. 'id' => 'required|exists:post_music_category_rel',
  142. 'name' => 'required|string|max:50',
  143. 'category_id' => 'required|integer',
  144. 'music_duration' => 'required|integer',
  145. 'url' => 'required|string'
  146. ]);
  147. if ($validator->fails()) {
  148. return $this->response->error($validator->errors()->first(), 500);
  149. }
  150. return $this->musicRepository->musicEdit($request->all());
  151. }
  152. //删除音乐
  153. public function musicDelete(Request $request)
  154. {
  155. $validator = Validator::make($request->all(), [
  156. 'id' => 'required|exists:post_music_category_rel'
  157. ]);
  158. if ($validator->fails()) {
  159. return $this->response->error($validator->errors()->first(), 500);
  160. }
  161. return $this->musicRepository->musicDelete($request->only('id'));
  162. }
  163. //用户上传音乐列表
  164. public function userMusic(Request $request)
  165. {
  166. $musicList = $this->musicRepository->userMusic($request->all());
  167. $fractal = new Manager();
  168. $resource = new Collection($musicList, new UserMusicTranformer());
  169. $resource->setPaginator(new IlluminatePaginatorAdapter($musicList));
  170. $data = $fractal->createData($resource)->toArray();
  171. $data['extra'] = [
  172. 'columns' => [
  173. 'id',
  174. 'created_at',
  175. 'username',
  176. 'name',
  177. 'url'
  178. ]
  179. ];
  180. return $data;
  181. }
  182. }