Browse Source

Merge branch 'develop' of http://git.caihongxingqiu.net/rainbow/community-service into develop

xielin 5 years ago
parent
commit
b9004810fe

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

+ 59 - 3
app/Http/Controllers/V1/PostController.php

@@ -10,8 +10,11 @@ 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;
@@ -39,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)){
@@ -57,4 +60,57 @@ class PostController extends Controller
         }
         return jsonSuccess($data);
     }
+
+    /**
+     * 评论列表
+     */
+    public function commentList(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'post_id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+        $list = $this->postRepositories->commentList($request->all());
+        $fractal = new Manager();
+        $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);
+    }
 }

+ 16 - 0
app/Models/PostDislike.php

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

+ 41 - 1
app/Repositories/PostRepositories.php

@@ -12,6 +12,7 @@ namespace App\Repositories;
 use App\Models\Behavior;
 use App\Models\Post;
 use App\Models\PostCollect;
+use App\Models\PostComment;
 use App\Models\PostData;
 use App\Models\PostLike;
 use Illuminate\Support\Facades\Log;
@@ -19,9 +20,10 @@ use Illuminate\Support\Facades\Redis;
 
 class PostRepositories
 {
-    public function __construct(Post $post)
+    public function __construct(Post $post,PostComment $postComment)
     {
         $this->post = $post;
+        $this->postComment = $postComment;
     }
 
     /**
@@ -86,6 +88,44 @@ class PostRepositories
             ->paginate($perPage);
     }
 
+
+    /**
+     * 评论列表
+     */
+    public function commentList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        return $this->postComment
+            ->where('post_id', $request['post_id'])
+            ->where('parent_id', 0)
+            ->orderBy('id','desc')
+            ->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

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

@@ -0,0 +1,41 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 16:40
+ */
+namespace  App\Transformers\Post;
+
+use App\Models\PostComment;
+use Carbon\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class CommentTransformer extends TransformerAbstract
+{
+    
+    public function transform(PostComment $postComment)
+    {
+        $replies = PostComment::where('parent_id', $postComment['id'])->orderBy('id', 'desc')->limit(2)->get();
+        $reply = [];
+        foreach($replies as $val){
+            $reply[] = [
+                'uid' => $val->uid,
+                'nickname' => $val->nickname,
+                'avatar' => $val->avatar,
+                'reply_username' => $val->reply_username,
+                'content' => $val->content,
+            ];
+        }
+        return [
+            'id' => $postComment['id'],
+            'uid' => $postComment['uid'],
+            'username' => $postComment['username'],
+            'avatar' => $postComment['avatar'],
+            'content' => $postComment['is_delete']?'该评论已被删除':$postComment['content'],
+            'created_at' => Carbon::parse($postComment['created_at'])->diffForHumans(),
+            'reply_count' => $postComment->reply->count(),
+            'reply' => $reply,
+        ];
+    }
+}

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

+ 3 - 0
app/Transformers/Post/SuggestTransformer.php

@@ -11,6 +11,7 @@ namespace  App\Transformers\Post;
 use App\Models\Post;
 use App\Models\PostCollect;
 use App\Models\PostComment;
+use App\Models\PostDislike;
 use App\Models\PostLike;
 use Carbon\Carbon;
 use League\Fractal\TransformerAbstract;
@@ -36,6 +37,7 @@ class SuggestTransformer extends TransformerAbstract
             foreach($replies as $val){
                 $reply[] = [
                     'nickname' => $val->nickname,
+                    'reply_username' => $val->reply_username,
                     'content' => $val->content,
                 ];
             }
@@ -67,6 +69,7 @@ class SuggestTransformer extends TransformerAbstract
             'comment_count' => $post->data->comment_count,
             'will_collect_bean' => $post->data->will_collect_bean,
             'is_like' => PostLike::where('post_id', $post['id'])->where('uid', $this->uid)->exists()?1:0,
+            'is_dislike' => PostDislike::where('post_id', $post['id'])->where('uid', $this->uid)->exists()?1:0,
             'is_collect' => PostCollect::where('post_id', $post['id'])->where('uid', $this->uid)->exists()?1:0,
             'comment' => $comment,
             'is_follow' => 1,

+ 1 - 1
resources/lang/zh-CN/validation.php

@@ -100,7 +100,7 @@ return [
     */
 
     'attributes' => [
-        'id' => 'id',
+        'post_id' => '内容id',
     ],
     'mobile'    => '手机号码格式不正确。',
 ];

+ 2 - 1
routes/api.php

@@ -20,8 +20,9 @@ $api->version('v1', [
     $api->get('getBehaviorByIdentify', 'BehaviorController@getBehaviorByIdentify');
     //登录+验签
     $api->group(['middleware' => ['chxq_jwt_auth']], function ($api) {
-        //$api->get('test', 'TestController@index');
         $api->get('post/suggest', 'PostController@suggestPost');
+        $api->get('post/comment', 'PostController@commentList');
+        $api->get('post/reply', 'PostController@replyList');
         $api->get('topicCategory', 'CategoryController@index');
     });