Browse Source

fix conlict

xielin 5 years ago
parent
commit
b7eef43432

+ 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());
+
+    }
+
+
 }

+ 22 - 9
app/Http/Controllers/V1/PostController.php

@@ -86,7 +86,7 @@ class PostController extends Controller
      */
     public function index(Request $request)
     {
-        Log::debug('内容搜索'.json_encode($request));
+        Log::debug('内容搜索' . json_encode($request));
         $userInfo = $this->getUserInfo();
         if (empty($userInfo)) {
             return jsonError('获取用户信息失败');
@@ -135,9 +135,9 @@ class PostController extends Controller
             return jsonError('获取用户信息失败');
         }
         $param = $request->all();
-        if(isset($param['uid'])){
+        if (isset($param['uid'])) {
             $uid = $param['uid'];
-        }else{
+        } else {
             $uid = $userInfo['uid'];
         }
 
@@ -187,15 +187,15 @@ class PostController extends Controller
                     if (isset($floor[$key + 1])) {
                         if ($floor[$key + 1]['show_type'] == 'banner') {
                             $bannerData = [];
-                            foreach($floor[$key + 1]['data'] as $item){
-                                if($item['type'] == 1){
+                            foreach ($floor[$key + 1]['data'] as $item) {
+                                if ($item['type'] == 1) {
                                     $postType = Post::where('id', $item['link_content_id'])->value('type');
-                                    if(!$postType){
-                                        Log::info('banner类型为内容,未找到内容,被丢弃'.json_encode($item));
+                                    if (!$postType) {
+                                        Log::info('banner类型为内容,未找到内容,被丢弃' . json_encode($item));
                                         continue;
                                     }
                                     $bannerData[] = array_merge($item, ['post_type' => $postType]);
-                                }else{
+                                } else {
                                     $bannerData[] = $item;
                                 }
                             }
@@ -408,6 +408,20 @@ class PostController extends Controller
         return $this->postRepositories->memberPostStatistics($request['uid']);
     }
 
+    /**
+     * 删除内容
+     */
+    public function delete(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+        return $this->postRepositories->delete($request->all());
+    }
+
     /**
      * 查询帖子内容详情(内部接口使用)
      */
@@ -426,7 +440,6 @@ class PostController extends Controller
         $fractal = new Manager();
         $res = new Item($detail, new PostTransformer());
         $data = $fractal->createData($res)->toArray();
-
         return jsonSuccess($data);
     }
 

+ 15 - 0
app/Models/PostLog.php

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

+ 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('上传失败请重试');
+        }
+    }
+
 
 }

+ 51 - 4
app/Repositories/PostRepositories.php

@@ -17,6 +17,7 @@ use App\Models\PostData;
 use App\Models\PostDislike;
 use App\Models\PostImgs;
 use App\Models\PostLike;
+use App\Models\PostLog;
 use App\Models\PostShare;
 use App\Models\Topic;
 use App\Service\AliYunVodService;
@@ -43,6 +44,7 @@ class PostRepositories
                                 PostComment $postComment,
                                 PostCollect $postCollect,
                                 PostShare $postShare,
+                                PostLog $postLog,
                                 DetectionService $detectionService,
                                 AliYunVodService $aliYunVodService,
                                 Topic $topic)
@@ -53,6 +55,7 @@ class PostRepositories
         $this->postComment = $postComment;
         $this->postCollect = $postCollect;
         $this->postShare = $postShare;
+        $this->postLog = $postLog;
         $this->detectionService = $detectionService;
         $this->topic = $topic;
         $this->aliYunVodService = $aliYunVodService;
@@ -372,11 +375,11 @@ class PostRepositories
             $post = $this->post;
             $order = 'post.id';
         }elseif($type == 'collect'){
-            $post = $this->post->join('post_collect', 'post_collect.post_id', '=', 'post.id');
+            $post = $this->post->withTrashed()->join('post_collect', 'post_collect.post_id', '=', 'post.id');
             $where[] = ['post_collect.uid', $uid];
             $order = 'post_collect.id';
         }else{
-            $post = $this->post->join('post_share', 'post_share.post_id', '=', 'post.id');
+            $post = $this->post->withTrashed()->join('post_share', 'post_share.post_id', '=', 'post.id');
             $where[] = ['post_share.uid', $uid];
             $order = 'post_share.updated_at';
         }
@@ -472,13 +475,13 @@ class PostRepositories
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
 
         $where = [];
-        if(isset($request['category_id'])){
+        if(isset($request['category_id']) && $request['category_id']){
            $topic = $this->topic->join('category_topic', 'category_topic.topic_id', '=', 'topic.id')->select('topic.*');
            $where[] = ['category_topic.category_id', $request['category_id']];
         }else{
             $topic = $this->topic;
         }
-        if(isset($request['is_suggest'])){
+        if(isset($request['is_suggest']) && $request['is_suggest']){
             $where[] = ['topic.is_hot', $request['is_suggest']];
         }
 
@@ -619,4 +622,48 @@ class PostRepositories
         return jsonSuccess($data);
     }
 
+    /**
+     * 删除内容
+     */
+    public function delete($request)
+    {
+        //验证用户信息
+        $userInfo = $this->getUserInfo();
+        if (empty($userInfo)) {
+            return jsonError('获取用户信息失败');
+        }
+
+        $post = $this->post->find($request['id']);
+        if(!$post){
+            return jsonError('获取内容信息失败');
+        }
+        if($post->uid != $userInfo['uid']){
+            return jsonError('只能删除自己发布的内容');
+        }
+        $logData = [
+            'uid' => $userInfo['uid'],
+            'operator_type' => 'user',
+            'post_id' => $request['id'],
+            'username' => $userInfo['username'],
+            'log_type' => 'delete',
+            'content' => json_encode(['delete' => $request['id']]),
+        ];
+
+        DB::beginTransaction();
+        try{
+            $post->delete();
+
+            $this->postLog->create($logData);
+
+            DB::commit();
+            Log::debug('删除内容失败:'.$request['id']);
+            return jsonSuccess('删除内容成功');
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::debug('删除内容失败:'.$request['id'].$exception->getMessage());
+            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'],
+        ];
+    }
+}

+ 10 - 0
routes/api.php

@@ -30,12 +30,22 @@ $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');
     //登录+验签
     $api->group(['middleware' => ['chxq_jwt_auth','chxq_sign']], function ($api) {
         //发布内容
         $api->post('post', 'PostController@create');
+        //删除内容
+        $api->delete('post', 'PostController@delete');
         //个人中心内容
         $api->get('post/my', 'PostController@myPost');
         //内容列表