circleRepository = $circleRepository; $this->circleArticleRepository = $circleArticleRepository; $this->circleMemberRepository = $circleMemberRepository; $this->circleMessageRepository = $circleMessageRepository; } /** * 圈子检测 * @param Request $request * @return array */ public function valid(Request $request) { $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; } else { $uid = 0; } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $request = $request->all(); $circleInfo = $this->circleRepository->detail($request); if ($circleInfo && $circleInfo->is_open == 0) { return $this->jsonError('当前圈子已关闭'); } if ($uid) { $row = $this->circleMemberRepository ->where('circle_id', $request['id']) ->where('uid', $uid) ->where('is_black', 1)->exists(); if ($row) { return $this->jsonError('您无法进入该聊天室'); } } return $this->jsonSuccess(); } /** * 圈子首页 * @param Request $request */ public function index(Request $request) { $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; } else { $uid = 0; } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $detail = $this->circleRepository->detail($request->all()); if ($detail) { $fractal = new Manager(); $res = new Item($detail, new DetailTransformer($uid)); $data = $fractal->createData($res)->toArray(); } return $this->jsonSuccess($data); } /** * 查询圈子问题 * @param Request $request * @return array */ public function getQuestion(Request $request) { $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; } else { $uid = 0; } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $detail = $this->circleRepository->detail($request->all()); if ($detail) { $fractal = new Manager(); $res = new Item($detail, new QuestionTransformer($uid)); $data = $fractal->createData($res)->toArray(); } return $this->jsonSuccess($data); } /** * 加入圈子 * @param Request $request * @return array */ public function joinCircle(Request $request) { $userInfo = $this->getUserInfo(); if (empty($userInfo)) { return $this->jsonError('获取用户信息失败'); } // else{ // $userInfo['uid'] = 268; // } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } return $this->circleRepository->joinCircle($request->all(), $userInfo); } /** * 退出圈子 * @param Request $request * @return array */ public function exitCircle(Request $request) { $userInfo = $this->getUserInfo(); if (empty($userInfo)) { return $this->jsonError('获取用户信息失败'); } // else{ // $userInfo['uid'] = 268; // } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } return $this->circleRepository->exitCircle($request->all(), $userInfo); } /** * 精华列表 * @param Request $request * @return array */ public function articleList(Request $request) { $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; $inviteCode = $userInfo['invite_code']; } else { $uid = 0; $inviteCode = ''; } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $list = $this->circleArticleRepository->lists($request->all()); $fractal = new Manager(); $resource = new Collection($list, new ArticleListTransformer($uid, $inviteCode)); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 圈子成员列表 * @param Request $request * @return array */ public function memberList(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $list = $this->circleMemberRepository->lists($request->all()); $fractal = new Manager(); $resource = new Collection($list, new CircleMemberTransformer()); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 提问列表 * @param Request $request * @return array */ public function messageList(Request $request) { $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; } else { $uid = 0; } $validator = Validator::make($request->all(), [ 'id' => 'required|exists:interest_circles' ]); if ($validator->fails()) { return $this->jsonError($validator->errors()->first()); } $list = $this->circleMessageRepository->lists($request->all()); $fractal = new Manager(); $resource = new Collection($list, new MessageListTransformer($uid)); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 发布提问 */ public function messageCreate(Request $request) { $validator = Validator::make($request->all(), [ 'circle_id' => 'required|integer', 'content' => 'required|string|max:150', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->create($request->all()); } /** * 评论&回复 */ public function comment(Request $request) { $validator = Validator::make($request->all(), [ 'circle_id' => 'required|integer', 'msg_id' => 'required|integer', 'content' => 'required|string|max:150', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->createComment($request->all()); } /** * 评论列表 */ public function commentList(Request $request) { $validator = Validator::make($request->all(), [ 'msg_id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } $exists = $this->circleMessageRepository->detail($request['msg_id']); if (!$exists) { return jsonError('内容飞走了'); } $userInfo = $this->getUserInfo(); if ($userInfo) { $uid = $userInfo['uid']; }else{ $uid = 0; } $list = $this->circleMessageRepository->commentList($request->all()); $fractal = new Manager(); $resource = new Collection($list, new CommentTransformer($request['msg_id'], $uid)); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); $commentCount = $this->circleMessageRepository->getCommentCount($request['msg_id']); 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); } /** * 圈子顶踩 * @param Request $request * @return array */ 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); } /** * 删除提问 */ public function deleteMessage(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->deleteMessage($request->all()); } /** * 删除评论 */ public function deleteComment(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->commentDelete($request->all()); } /** * 上传相册 */ public function createPictures(Request $request) { $validator = Validator::make($request->all(), [ 'circle_id' => 'required|integer', 'imgs' => 'required|string', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->createPictures($request->all()); } /** * 相册列表 * @param Request $request * @return array */ public function pictureList(Request $request){ $validator = Validator::make($request->all(), [ 'circle_id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } $list = $this->circleMessageRepository->pictureLists($request->all()); $fractal = new Manager(); $resource = new Collection($list, new PictureListTransformer()); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 删除相册 * @param Request $request * @return array */ public function deletePicture(Request $request){ $validator = Validator::make($request->all(), [ 'id' => 'required|string', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->circleMessageRepository->deletePicture($request->all()); } }