ソースを参照

个人中心内容

wzq 5 年 前
コミット
847259035d
共有4 個のファイルを変更した86 個の追加0 個の削除を含む
  1. 27 0
      app/Http/Controllers/V1/PostController.php
  2. 33 0
      app/Repositories/PostRepositories.php
  3. 24 0
      app/Transformers/Post/MyTransformer.php
  4. 2 0
      routes/api.php

+ 27 - 0
app/Http/Controllers/V1/PostController.php

@@ -13,6 +13,7 @@ use App\Traits\UserTrait;
 use App\Transformers\Post\CommentTransformer;
 use App\Transformers\Post\DetailTransformer;
 use App\Transformers\Post\ListTransformer;
+use App\Transformers\Post\MyTransformer;
 use App\Transformers\Post\ReplyTransformer;
 use App\Transformers\Post\SuggestTransformer;
 use App\Transformers\Post\VideoTransformer;
@@ -112,6 +113,32 @@ class PostController extends Controller
         return jsonSuccess($data);
     }
 
+    /**
+     * 个人中心内容
+     */
+    public function myPost(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'type' => ['required',Rule::in('create', 'collect', 'share')],
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+
+        $userInfo = $this->getUserInfo();
+        if(empty($userInfo)){
+            Log::info('获取用户信息失败');
+            return jsonError('获取用户信息失败');
+        }
+        $list = $this->postRepositories->myPost($request['type'], $userInfo['uid']);
+        $fractal = new Manager();
+        $resource = new Collection($list, new MyTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        $data = $fractal->createData($resource)->toArray();
+
+        return jsonSuccess($data);
+    }
+
     /**
      * 推荐内容列表
      */

+ 33 - 0
app/Repositories/PostRepositories.php

@@ -36,6 +36,8 @@ class PostRepositories
                                 PostData $postData,
                                 PostImgs $postImgs,
                                 PostComment $postComment,
+                                PostCollect $postCollect,
+                                PostShare $postShare,
                                 DetectionService $detectionService,
                                 RabbitMqUtil $rabbitMqUtil,
                                 Topic $topic)
@@ -44,6 +46,8 @@ class PostRepositories
         $this->postData = $postData;
         $this->postImgs = $postImgs;
         $this->postComment = $postComment;
+        $this->postCollect = $postCollect;
+        $this->postShare = $postShare;
         $this->detectionService = $detectionService;
         $this->rabbitMqUtil = $rabbitMqUtil;
         $this->topic = $topic;
@@ -322,6 +326,35 @@ class PostRepositories
             ->paginate($perPage);
     }
 
+    /**
+     * 个人中心内容列表
+     */
+    public function MyPost($type, $uid)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        $where = [];
+        if($type == 'create'){
+            $where[] = ['post.uid', $uid];
+            $post = $this->post;
+            $order = 'post.id';
+        }elseif($type == 'collect'){
+            $post = $this->post->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');
+            $where[] = ['post_share.uid', $uid];
+            $order = 'post_share.updated_at';
+        }
+        return $post
+            ->join('post_data', 'post_data.post_id', '=', 'post.id')
+            ->select('post.*')
+            ->where($where)
+            ->orderBy($order,'desc')
+            ->paginate($perPage);
+    }
+
     /**
      * 内容详情
      */

+ 24 - 0
app/Transformers/Post/MyTransformer.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/18
+ * Time: 10:44
+ */
+namespace  App\Transformers\Post;
+
+use App\Models\Post;
+use League\Fractal\TransformerAbstract;
+
+class MyTransformer extends TransformerAbstract
+{
+    public function transform(Post $post)
+    {
+        return [
+            'id' => $post['id'],
+            'img' => $post['img'],
+            'create_bean' => $post->data->create_bean,
+            'collect_bean' => $post->data->collect_bean,
+        ];
+    }
+}

+ 2 - 0
routes/api.php

@@ -22,6 +22,8 @@ $api->version('v1', [
     $api->group(['middleware' => ['chxq_jwt_auth']], function ($api) {
         //发布内容
         $api->post('post', 'PostController@create');
+        //个人中心内容
+        $api->get('post/my', 'PostController@myPost');
         //内容列表
         $api->get('post', 'PostController@index');
         //视频列表