interestCircle = $interestCircle; $this->interestCirclePicture = $interestCirclePicture; } /** * 创建圈子 */ public function create($request) { $data = [ 'name' => $request['name'], 'notice' => $request['notice'], 'image' => $request['image'] ?? '', 'join_limit' => $request['join_limit'], 'limit_condition' => $request['limit_condition'], 'join_question' => json_encode($request['join_question']) ?? '', 'limit_article_ids' => $request['limit_article_ids'] ?? '', 'contains_function' => json_encode($request['contains_function']) ?? '', ]; DB::beginTransaction(); try { $circle = $this->interestCircle->create($data); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('创建圈子exception:' . $exception->getMessage()); return Response::create([ 'message' => '创建失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 修改圈子 */ public function update($request) { $data = [ 'name' => $request['name'], 'notice' => $request['notice'], 'image' => $request['image'] ?? '', 'join_limit' => $request['join_limit'], 'limit_condition' => $request['limit_condition'], 'join_question' => json_encode($request['join_question']), 'limit_article_ids' => $request['limit_article_ids'] ?? '', 'contains_function' => json_encode($request['contains_function']), ]; DB::beginTransaction(); try { $circle = $this->interestCircle->where('id', $request['id'])->update($data); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('修改圈子exception:' . $exception->getMessage()); return Response::create([ 'message' => '修改失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 圈子列表 */ public function circleLists($request) { $perPage = isset($request['per_page']) ? $request['per_page'] : 20; $where = []; if (isset($request['is_open'])) { $where[] = ['is_open', $request['is_open']]; } return $this->interestCircle ->where($where) ->where(function ($query) use ($request) { if (isset($request['keyword'])) { $query->Where('name', 'like', "%{$request['keyword']}%"); } }) ->orderBy('is_recommend', 'desc') ->orderBy('created_at', 'desc') ->paginate($perPage); } /** * 圈子详情 */ public function detail($request, $isTrashed = false) { $model = $this->interestCircle; if ($isTrashed) { $model->withTrashed(); } return $model->find($request['id']); } /** * 推荐圈子 */ public function circleRecommend($request) { $circle = $this->interestCircle->where('id', $request['id'])->first(); if (!$circle) { return Response::create([ 'message' => '获取圈子信息失败', 'status_code' => 500 ]); } if ($circle->is_recommend == 1) { $circle->is_recommend = 0; } else { $circle->is_recommend = 1; } DB::beginTransaction(); try { $circle->save(); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('推荐圈子:' . $request['id'] . $exception->getMessage()); return Response::create([ 'message' => '操作失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 开启/关闭圈子 */ public function circleStatus($request) { $circle = $this->interestCircle->where('id', $request['id'])->first(); if (!$circle) { return Response::create([ 'message' => '获取圈子信息失败', 'status_code' => 500 ]); } if ($circle->is_open == 1) { $circle->is_open = 0; } else { $circle->is_open = 1; } DB::beginTransaction(); try { $circle->save(); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('操作圈子:' . $request['id'] . $exception->getMessage()); return Response::create([ 'message' => '操作失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 相册列表 */ public function pictureLists($request) { $perPage = isset($request['per_page']) ? $request['per_page'] : 20; $where = []; if (isset($request['circle_id'])) { $where[] = ['circle_id', $request['circle_id']]; } if (isset($request['uid'])) { $where[] = ['uid', $request['uid']]; } return $this->interestCirclePicture ->where($where) ->orderBy('created_at', 'desc') ->paginate($perPage); } /** * 删除相册图片 */ public function deletePicture($request) { $circle = $this->interestCirclePicture->where('id', $request['id'])->first(); if (!$circle) { return Response::create([ 'message' => '获取图片信息失败', 'status_code' => 500 ]); } DB::beginTransaction(); try { $circle->delete(); //删除图片后,判断该条是否为主信息,如果为主信息,则更新同批次下一条为主信息 if($circle->is_main==1){ $tempPic = $this->interestCirclePicture->where('patch_num', $circle->patch_num)->first(); if($tempPic){ $tempPic->is_main=1; $tempPic->save(); } } $this->interestCircle->where('id',$circle->circle_id)->decrement('picture_count'); DB::commit(); $key = 'circle_picture_' . $circle->patch_num; Redis::del($key); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('删除相册图片:' . $request['id'] . $exception->getMessage()); return Response::create([ 'message' => '操作失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } }