json([ 'about_us'=>app_settings('app.article_about_us', ''), 'user_promotion_agreement'=> app_settings('app.article_user_promotion_agreement', ''), 'user_hide_agreement' => app_settings('app.article_user_hide_agreement', ''), 'article_profit' => app_settings('app.article_profit', ''), ]); } public function index(Request $request) { $cate = (string) $request->query('cate', app_settings('app.article_health')); $key = (string) $request->query('key'); $query = Article::where('is_show', 1); if ($cate) { $query->where('category_id', $cate); } if ($key) { $query->where('title', 'like', '%'.$key.'%'); } $query->orderBy('is_recommend', 'desc'); $query->orderBy('sort', 'desc'); $query->orderBy('created_at', 'desc'); $list = $query->simplePaginate(PaginatorHelper::resolvePerPage('per_page', 20, 50)); return ArticleSimpleResource::collection($list); } public function category() { $list = ArticleCategory::where('parent_id', app_settings('app.article_health'))->show()->sort()->get(); return ArticleCategoryResource::collection($list); } public function categoryTree() { $pid = app_settings('app.article_health'); $nodes = ArticleCategory::where('parent_id', $pid)->show()->sort()->select(['id', 'cover', 'name', 'parent_id', 'sort'])->get(); $list = Helper::buildNestedArray($nodes->all(), $pid, 'id', 'parent_id'); return $list; } /** * 文章详情 * * @param [type] $id * @return void */ public function show($id, Request $request) { $article = Article::with([ 'likesInfo' => function ($q) use ($request) { return $q->where('user_id', $request->user()?->id); } ])->where('is_show', 1)->findOrFail($id); return ArticleResource::make($article); } /** * 文章点赞 * * @param [type] $id * @param Request $request * @return void */ public function like($id, Request $request) { $article = Article::where('is_show', 1)->findOrFail($id); if (ArticleLikesLog::where('user_id', $request->user()->id)->where('article_id', $article->id)->exists()) { throw new BizException('您已点赞过这篇文章'); } try { DB::beginTransaction(); ArticleLikesLog::create([ 'article_id' => $article->id, 'user_id' => $request->user()->id, ]); $article->increment('likes'); DB::commit(); } catch (Throwable $th) { DB::rollBack(); report($th); throw new BizException('系统繁忙,请稍后再试'); } return response()->noContent(); } /** * 阅读加积分接口 * * @param [type] $id * @return void */ public function read($id, Request $request) { return response()->json([ 'points' => 0, ]); } }