wzq 5 gadi atpakaļ
vecāks
revīzija
3946d7e001

+ 28 - 0
app/Http/Controllers/Post/PostController.php

@@ -9,6 +9,8 @@
 namespace App\Http\Controllers\Post;
 
 use App\Repositories\Post\PostRepository;
+use App\Transformers\Post\CommentTransformer;
+use App\Transformers\Post\DetailTransformer;
 use App\Transformers\Post\PostTransformer;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Validator;
@@ -17,6 +19,7 @@ use Illuminate\Validation\Rule;
 use League\Fractal\Manager;
 use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use League\Fractal\Resource\Collection;
+use League\Fractal\Resource\Item;
 
 class PostController extends Controller
 {
@@ -65,6 +68,31 @@ class PostController extends Controller
         return $data;
     }
 
+    /**
+     * 内容详情
+     */
+    public function detail(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|exists:post'
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+
+        $commentList = $this->postRepository->commentList($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($commentList, new CommentTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($commentList));
+        $data = $fractal->createData($resource)->toArray();
+
+        $post = $this->postRepository->detail($request->all());
+        $base = new Item($post, new DetailTransformer());
+        $base = $fractal->createData($base)->toArray();
+        $data['extra'] = $base['data'];
+        return $data;
+    }
+
     /**
      * 发布内容
      */

+ 21 - 0
app/Repositories/Post/PostRepository.php

@@ -194,6 +194,27 @@ class PostRepository
             ->paginate($perPage);
     }
 
+    /**
+     * 内容详情
+     */
+    public function detail($request)
+    {
+        return $this->post->withTrashed()->find($request['id']);
+    }
+
+    /**
+     * 评论列表
+     */
+    public function commentList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        return $this->postComment
+            ->where('post_id', $request['id'])
+            ->orderBy('id','desc')
+            ->paginate($perPage);
+    }
+
     /**
      * 推荐内容
      */

+ 29 - 0
app/Transformers/Post/CommentTransformer.php

@@ -0,0 +1,29 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/10
+ * Time: 10:56
+ */
+
+namespace App\Transformers\Post;
+use App\Models\PostComment;
+use Illuminate\Support\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class CommentTransformer extends TransformerAbstract
+{
+    public function transform(PostComment $postComment)
+    {
+        return [
+            'id' => $postComment['id'],
+            'parent_id' => $postComment['parent_id'],
+            'uid' => $postComment['uid'],
+            'username' => $postComment['username'],
+            'avatar' => $postComment['avatar'],
+            'content' => $postComment['is_delete'] == 1 ? '该评论已被删除' : $postComment['content'],
+            'created_at' => Carbon::parse($postComment['created_at'])->toDateTimeString(),
+            'is_delete' => $postComment['is_delete'],
+        ];
+    }
+}

+ 44 - 0
app/Transformers/Post/DetailTransformer.php

@@ -0,0 +1,44 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/10
+ * Time: 9:17
+ */
+
+namespace App\Transformers\Post;
+use App\Models\Post;
+use Illuminate\Support\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class DetailTransformer extends  TransformerAbstract
+{
+    public function transform(Post $post)
+    {
+        $imgs = [];
+        foreach($post->imgs as $img){
+            $imgs[] = $img->img;
+        }
+        return [
+            'id' => $post['id'],
+            'created_at' => Carbon::parse($post['created_at'])->toDateTimeString(),
+            'uid' => $post['uid'],
+            'username' => $post['username'],
+            'avatar' => $post['avatar'],
+            'topic' => $post->topic(),
+            'title' => $post['title'],
+            'content' => $post['content'],
+            'img' => $post['img'],
+            'video' => $post['video'],
+            'imgs' => $imgs,
+            'location' => $post['location'],
+            'pv' => $post->data->pv_real.'/'.$post->data->pv,
+            'praise_count' => $post->data->praise_real_count.'/'.$post->data->praise_count,
+            'share_count' => $post->data->share_real_count.'/'.$post->data->share_count,
+            'comment_count' => $post->data->comment_count,
+            'collect_count' => $post->data->collect_real_count.'/'.$post->data->collect_count,
+            'create_bean' => $post->data->create_bean,
+            'is_suggest' => $post['is_suggest'],
+        ];
+    }
+}

+ 2 - 0
routes/api.php

@@ -21,6 +21,8 @@ $api->version('v1', [
         $api->post('post', 'PostController@create');
         //内容列表
         $api->get('post', 'PostController@index');
+        //内容详情
+        $api->get('post/detail', 'PostController@detail');
         //推荐内容
         $api->put('post/suggest', 'PostController@suggest');
         //删除内容