postRepositories = $postRepositories; } /** * 发布内容 */ public function create(Request $request) { $validator = Validator::make($request->all(), [ 'type' => ['required',Rule::in('image', 'video', 'html')], 'img' => 'required|url', 'video' => 'required_if:type,video|string|url', 'topic_ids' => 'required|string|max:64', 'title' => 'nullable|string|max:20', 'content' => 'required|string|max:1000', 'location' => 'nullable|string|max:20', 'imgs' => 'required_if:type,image|string', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->postRepositories->create($request->all()); } /** * 评论&回复 */ public function comment(Request $request) { $validator = Validator::make($request->all(), [ 'post_id' => 'required|integer', 'content' => 'required|string|max:150', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } return $this->postRepositories->comment($request->all()); } /** * 内容列表 */ public function index(Request $request) { $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $list = $this->postRepositories->lists($request->all()); $fractal = new Manager(); $resource = new Collection($list, new ListTransformer($userInfo['uid'])); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 视频列表 */ public function video(Request $request) { $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $list = $this->postRepositories->video($request->all()); $fractal = new Manager(); $resource = new Collection($list, new VideoTransformer($userInfo['uid'])); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } /** * 推荐内容列表 */ public function suggestPost(Request $request) { $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $param = $request->all(); $list = $this->postRepositories->suggestPost($param); $fractal = new Manager(); $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)){ $newData = []; foreach($data['data'] as $key => $val){ if($key == 1){ $newData[] = ['show_type' => 1]; } $newData[] = $val; } $data['data'] = $newData; } return jsonSuccess($data); } /** * 内容详情 */ public function detail(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $detail = $this->postRepositories->detail($request['id']); if(!$detail){ return jsonError('获取内容信息失败'); } $fractal = new Manager(); $res = new Item($detail, new DetailTransformer($userInfo['uid'])); $data = $fractal->createData($res)->toArray(); 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|exists:post_comment', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } $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(); return jsonSuccess($data); } /** * 话题详情 */ public function topicDetail(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|integer', ]); if ($validator->fails()) { return jsonError($validator->errors()->first()); } $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $detail = $this->postRepositories->topicDetail($request['id']); if(!$detail){ return jsonError('获取话题信息失败'); } $fractal = new Manager(); $res = new Item($detail, new TopicDetailTransformer($userInfo['uid'])); $data = $fractal->createData($res)->toArray(); return jsonSuccess($data); } /** * 话题内容列表 */ public function topicPost(Request $request) { $userInfo = $this->getUserInfo(); if(empty($userInfo)){ Log::info('获取用户信息失败'); return jsonError('获取用户信息失败'); } $list = $this->postRepositories->topicPost($request->all()); $fractal = new Manager(); $resource = new Collection($list, new TopicPostTransformer($userInfo['uid'])); $resource->setPaginator(new IlluminatePaginatorAdapter($list)); $data = $fractal->createData($resource)->toArray(); return jsonSuccess($data); } }