Преглед изворни кода

音乐分类列表、获取分类下所有音乐、用户上传音乐

duqinya пре 5 година
родитељ
комит
5f48e41384

+ 52 - 1
app/Http/Controllers/V1/MusicListController.php

@@ -7,18 +7,22 @@
  */
 namespace App\Http\Controllers\V1;
 use App\Repositories\MusicRepository;
+use App\Transformers\MusicCategoryTransformer;
 use App\Transformers\MusicTranformer;
 use Illuminate\Http\Request;
 use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use League\Fractal\Resource\Collection;
 use League\Fractal\Manager;
+use Illuminate\Support\Facades\Validator;
+
 class MusicListController extends Controller
 {
     public function __construct(MusicRepository $musicRepository) {
         $this->musicRepository = $musicRepository;
     }
     //热门音乐列表
-    public function index(Request $request) {
+    public function index(Request $request)
+    {
         $musicList = $this->musicRepository->lists($request->all());
         $fractal = new Manager();
         $resource = new Collection($musicList, new MusicTranformer());
@@ -26,4 +30,51 @@ class MusicListController extends Controller
         $data = $fractal->createData($resource)->toArray();
         return jsonSuccess($data);
     }
+
+    //获取音乐分类
+    public function categoryList(Request $request)
+    {
+        $categoryList = $this->musicRepository->category_list($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($categoryList, new MusicCategoryTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($categoryList));
+        $data = $fractal->createData($resource)->toArray();
+        return jsonSuccess($data);
+    }
+
+    //获取某分类下所有音乐
+    public function postMusicList(Request $request)
+    {
+        $data = $request->all();
+        $validator = Validator::make($data, [
+            'category_id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return $this->jsonError($validator->errors()->first());
+        }
+        $postMusicList = $this->musicRepository->postMusicList($data);
+        $fractal = new Manager();
+        $resource = new Collection($postMusicList, new MusicTranformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($postMusicList));
+        $data = $fractal->createData($resource)->toArray();
+        return jsonSuccess($data);
+    }
+
+    //用户上传音乐
+    public function addMusic(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'name' => 'required|string',
+            'username' => 'string',
+            'uid' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+
+        return $this->musicRepository->create($request->all());
+
+    }
+
+
 }

+ 17 - 0
app/Models/PostMusicUser.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-07-09
+ * Time: 15:47
+ */
+
+namespace App\Models;
+
+
+use Illuminate\Database\Eloquent\Model;
+
+class PostMusicUser extends Model {
+    protected $table = 'post_music_user';
+    protected $guarded = [];
+}

+ 42 - 1
app/Repositories/MusicRepository.php

@@ -7,14 +7,18 @@
  */
 namespace App\Repositories;
 
+use App\Models\PostMusicCategory;
 use App\Models\PostMusicCategoryRel;
+use App\Models\PostMusicUser;
 use Illuminate\Support\Facades\Cache;
 
 class MusicRepository
 {
-    public function __construct(PostMusicCategoryRel $postMusicCategoryRel)
+    public function __construct(PostMusicCategoryRel $postMusicCategoryRel,PostMusicCategory $postMusicCategory,PostMusicUser $postMusicUser)
     {
         $this->postMusicCategoryRel = $postMusicCategoryRel;
+        $this->postMusicCategory = $postMusicCategory;
+        $this->postMusicUser = $postMusicUser;
     }
 
     //热门音乐列表
@@ -42,5 +46,42 @@ class MusicRepository
         return $postMusicCategoryRel;
     }
 
+    public function category_list($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        return $this->postMusicCategory->where('is_open',1)->orderBy('id', 'asc')->paginate($perPage);
+    }
+
+    public function postMusicList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        $postMusicList = $this->postMusicCategoryRel
+            ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
+            ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
+            ->select('post_music.*')
+            ->where(['post_music_category.id' => $request['category_id'], 'post_music_category.is_open' => 1])
+            ->orderBy('id', 'desc')
+            ->paginate($perPage);
+
+        return $postMusicList;
+
+    }
+
+    public function create($request)
+    {
+        $data = [
+            'name' => $request['name'],
+            'username' => $request['username'],
+            'url' => $request['url'] ?? '',
+            'uid' => $request['uid']
+        ];
+
+        $music_create = $this->postMusicUser->create($data);
+        if (!$music_create) {
+            return jsonError('上传失败请重试');
+        }
+    }
+
 
 }

+ 21 - 0
app/Transformers/MusicCategoryTransformer.php

@@ -0,0 +1,21 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: durong
+ * Date: 2019/7/8
+ * Time: 下午9:53
+ */
+namespace App\Transformers;
+use App\Models\PostMusicCategory;
+use League\Fractal\TransformerAbstract;
+
+class MusicCategoryTransformer extends TransformerAbstract {
+
+    public function transform(PostMusicCategory $categoryList)
+    {
+        return [
+            'id' => $categoryList['id'],
+            'name' => $categoryList['name'],
+        ];
+    }
+}

+ 8 - 0
routes/api.php

@@ -28,6 +28,14 @@ $api->version('v1', [
         $api->get('post/detail', 'PostController@detail');
         //获取热门分类下音乐列表
         $api->get('musicList', 'MusicListController@index');
+        //音乐分类列表
+        $api->get('category/list', 'MusicListController@categoryList');
+        //获取某分类下所有音乐
+        $api->get('music', 'MusicListController@postMusicList');
+
+        //用户上传音乐
+        $api->post('music/upload', 'MusicListController@addMusic');
+
     });
     $api->get('post/suggest2', 'PostController@suggestPost');
     //登录+验签