wzq лет назад: 5
Родитель
Сommit
f01a315810

+ 0 - 44
app/Http/Controllers/V1/Controller.php

@@ -9,48 +9,4 @@ use App\Http\Controllers\Controller as BaseController;
 class Controller extends BaseController
 {
     use Helpers;
-
-    public function jsonSuccess($data = [], $msg = "成功")
-    {
-        $response = array(
-            'code' => 0,
-            'msg' => $msg,
-            'data' => []
-        );
-        if ($data) {
-            if (is_array($data)) {
-                //带有分页格式转换
-                if (isset($data['meta'])) {
-                    // 更改元数据格式,全部包含在data下
-                    $temp = array(
-                        'data' => array(
-                            'data' => $data['data'],
-                            'pagination' => $data['meta']['pagination']
-                        )
-                    );
-                    $response = array_merge($response, $temp);
-                } elseif(isset($data['data'])) {
-                    $response = array_merge($response, $data);
-                }else{
-                    $temp = array(
-                        'data' => $data
-                    );
-                    $response = array_merge($response, $temp);
-                }
-            } else {
-                $response['data'] = $data;
-            }
-        }
-        return $response;
-    }
-
-    public function jsonError($msg)
-    {
-        $response = array(
-            'code' => 1,
-            'msg' => $msg,
-            'data' => ""
-        );
-        return $response;
-    }
 }

+ 41 - 6
app/Http/Controllers/V1/PostController.php

@@ -11,8 +11,10 @@ namespace App\Http\Controllers\V1;
 use App\Repositories\PostRepositories;
 use App\Traits\UserTrait;
 use App\Transformers\Post\CommentTransformer;
+use App\Transformers\Post\ReplyTransformer;
 use App\Transformers\Post\SuggestTransformer;
 use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Validation\Rule;
@@ -40,10 +42,10 @@ class PostController extends Controller
             return jsonError('获取用户信息失败');
         }
         $param = $request->all();
-        $purchaseList = $this->postRepositories->suggestPost($param);
+        $list = $this->postRepositories->suggestPost($param);
         $fractal = new Manager();
-        $resource = new Collection($purchaseList, new SuggestTransformer($userInfo['uid']));
-        $resource->setPaginator(new IlluminatePaginatorAdapter($purchaseList));
+        $resource = new Collection($list, new SuggestTransformer($userInfo['uid']));
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
         $data = $fractal->createData($resource)->toArray();
 
         if(!(isset($param['current_page']) && $param['current_page'] > 1)){
@@ -70,12 +72,45 @@ class PostController extends Controller
         if ($validator->fails()) {
             return jsonError($validator->errors()->first());
         }
-        $purchaseList = $this->postRepositories->commentList($request->all());
+        $list = $this->postRepositories->commentList($request->all());
         $fractal = new Manager();
-        $resource = new Collection($purchaseList, new CommentTransformer());
-        $resource->setPaginator(new IlluminatePaginatorAdapter($purchaseList));
+        $resource = new Collection($list, new CommentTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
         $data = $fractal->createData($resource)->toArray();
 
         return jsonSuccess($data);
     }
+
+    /**
+     * 回复列表
+     */
+    public function replyList(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+        $detail = $this->postRepositories->commentDetail($request->all());
+        if(!$detail){
+            return jsonError('获取评论信息失败');
+        }
+        $list = $this->postRepositories->replyList($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($list, new ReplyTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        $data = $fractal->createData($resource)->toArray();
+
+        $data['data']['extra'] = [
+            'id' => $detail['id'],
+            'uid' => $detail['uid'],
+            'username' => $detail['username'],
+            'reply_count' => $detail->reply->count(),
+            'avatar' => $detail['avatar'],
+            'content' => $detail['is_delete']?'该评论已被删除':$detail['content'],
+            'created_at' => Carbon::parse($detail['created_at'])->diffForHumans(),
+        ];
+        return jsonSuccess($data);
+    }
 }

+ 23 - 0
app/Repositories/PostRepositories.php

@@ -103,6 +103,29 @@ class PostRepositories
             ->paginate($perPage);
     }
 
+    /**
+     * 回复列表
+     */
+    public function replyList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        return $this->postComment
+            ->where('parent_id', $request['id'])
+            ->orderBy('id','desc')
+            ->paginate($perPage);
+    }
+
+    /**
+     * 评论详情
+     */
+    public function commentDetail($request)
+    {
+        return $this->postComment
+            ->where('id', $request['id'])
+            ->first();
+    }
+
     /**
      * 更新帖子统计数量
      * @param $request

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

@@ -0,0 +1,29 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 17:08
+ */
+namespace  App\Transformers\Post;
+
+use App\Models\PostComment;
+use Carbon\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class ReplyTransformer extends TransformerAbstract
+{
+
+    public function transform(PostComment $postComment)
+    {
+        return [
+            'id' => $postComment['id'],
+            'uid' => $postComment['uid'],
+            'username' => $postComment['username'],
+            'reply_username' => $postComment['reply_username'],
+            'avatar' => $postComment['avatar'],
+            'content' => $postComment['is_delete']?'该回复已被删除':$postComment['content'],
+            'created_at' => Carbon::parse($postComment['created_at'])->diffForHumans(),
+        ];
+    }
+}

+ 1 - 0
routes/api.php

@@ -22,6 +22,7 @@ $api->version('v1', [
     $api->group(['middleware' => ['chxq_jwt_auth']], function ($api) {
         $api->get('post/suggest', 'PostController@suggestPost');
         $api->get('post/comment', 'PostController@commentList');
+        $api->get('post/reply', 'PostController@replyList');
         $api->get('topicCategory', 'CategoryController@index');
     });