xielin пре 5 година
родитељ
комит
ccf3b707bd

+ 32 - 0
app/Http/Controllers/V1/CircleController.php

@@ -19,6 +19,7 @@ use App\Transformers\Circle\CommentTransformer;
 use App\Transformers\Circle\DetailTransformer;
 use App\Transformers\Circle\MessageListTransformer;
 use App\Transformers\Circle\QuestionTransformer;
+use App\Transformers\Circle\ReplyTransformer;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Redis;
@@ -326,4 +327,35 @@ class CircleController extends Controller
         return jsonSuccess($data, '成功', ['comment_count' => $commentCount]);
     }
 
+    /**
+     * 回复列表
+     */
+    public function replyList(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'comment_id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+        $list = $this->circleMessageRepository->replyList($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($list, new ReplyTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        $data = $fractal->createData($resource)->toArray();
+
+        return jsonSuccess($data);
+    }
+
+    public function messageAction(Request $request){
+        $validator = Validator::make($request->all(), [
+            'msg_id' => 'required|integer',
+            'action' => ['required',Rule::in([1,-1])],
+        ]);
+        if ($validator->fails()) {
+            return jsonError($validator->errors()->first());
+        }
+        return $this->circleMessageRepository->messageAction($request);
+    }
+
 }

+ 55 - 0
app/Repositories/Circle/CircleMessageRepository.php

@@ -14,6 +14,7 @@ use App\Models\InterestCircleArticle;
 use App\Models\InterestCircleMessage;
 use App\Models\InterestCircleMessageComment;
 use App\Models\InterestCircleMessageImg;
+use App\Models\InterestCircleMessageRecord;
 use App\Models\InterestCircleUser;
 use App\Models\Post;
 use App\Service\DetectionService;
@@ -286,4 +287,58 @@ class CircleMessageRepository
         }
         return $commentCount;
     }
+
+    /**
+     * 回复列表
+     */
+    public function replyList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        return $this->interestCircleMessageComment
+            ->where('parent_id', $request['comment_id'])
+            ->orderBy('id', 'desc')
+            ->paginate($perPage);
+    }
+
+    /**
+     * 提问顶踩
+     * @param $request
+     * @return array
+     */
+    public function messageAction($request)
+    {
+        $userInfo = $this->getUserInfo();
+        $userInfo['sns_status']=1;
+        $userInfo['uid']=268;
+        $userInfo['username']='测试用户';
+        $userInfo['avatar']='';
+        if (empty($userInfo)) {
+            return jsonError('获取用户信息失败');
+        }
+        $actionRow = InterestCircleMessageRecord::where([['msg_id', $request['msg_id']], ['uid', $userInfo['uid']]])->first();
+        if ($actionRow) {
+            return jsonSuccess();
+        }
+        DB::beginTransaction();
+        try {
+            $data['msg_id'] = $request['msg_id'];
+            $data['uid'] = $userInfo['uid'];
+            $data['action'] = $request['action'];
+
+            InterestCircleMessageRecord::insert($data);
+            if($request['action']==1){
+                InterestCircleMessage::where('id',$request['msg_id'])->increment('good');
+            }elseif($request['action']==-1){
+                InterestCircleMessage::where('id',$request['msg_id'])->increment('bad');
+            }
+
+            DB::commit();
+            return jsonSuccess();
+        } catch (QueryException $exception) {
+            DB::rollBack();
+            Log::debug('顶踩提问失败:' . $exception->getMessage());
+            return jsonError('操作失败,请重试');
+        }
+    }
 }

+ 40 - 0
app/Transformers/Circle/ReplyTransformer.php

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

+ 4 - 0
routes/api.php

@@ -85,6 +85,8 @@ $api->version('v1', [
     $api->get('circle/messages', 'CircleController@messageList');
     //圈子提问评论列表
     $api->get('circle/comments', 'CircleController@commentList');
+    //圈子提问回复列表
+    $api->get('circle/replys', 'CircleController@replyList');
     //登录+验签
     $api->group(['middleware' => ['chxq_jwt_auth','chxq_sign']], function ($api) {
         //发布内容
@@ -137,6 +139,8 @@ $api->version('v1', [
         $api->post('circle/message', 'CircleController@messageCreate');
         //创建提问评论
         $api->post('circle/comment', 'CircleController@comment');
+        //提问顶踩
+        $api->post('circle/message/action', 'CircleController@messageAction');
     });