oArticlesService = $oService; } public function search(Request $oRequest, string $sKeyword) { $xData = $this->oArticlesService->search($sKeyword, 'view'); return view('pages.articles.default.index', $xData); } public function like(int $iArticleId, Request $oRequest) { // 1. 获取/生成指纹 $sFingerprint = $oRequest->cookie('visitor_token') ?? md5($oRequest->ip() . $oRequest->userAgent()); // 2. 调用 Service $aResult = $this->oArticlesService->like($iArticleId, $oRequest->ip(), $sFingerprint); if (!$aResult['status']) { return response()->json($aResult); } // 3. 成功后下发持久 Cookie return response()->json($aResult) ->withCookie(cookie()->forever('visitor_token', $sFingerprint)); } public function listByTag(Request $oRequest, string $sSlug) { $xData = $this->oArticlesService->getTagArticles($sSlug, 'view'); return view('pages.articles.default.index', $xData); } public function list(Request $oRequest, string $sSlug1, string $sSlug2 = null) { $sSlug = $sSlug2 ?? $sSlug1; $xData = $this->oArticlesService->getCategoryArticles($sSlug, 'view'); return view('pages.articles.default.index', $xData); } public function show(string $sArticleSlug, Request $oRequest) { $sFingerprint = $oRequest->cookie('visitor_token') ?? md5($oRequest->ip() . $oRequest->userAgent()); $xData = $this->oArticlesService->getArticle($sArticleSlug, $oRequest->ip(), $sFingerprint); // $xData["siteUrl"] = config("app.url"); $sViewPath = 'pages.articles.default.show'; // // if ($xData["oArticle"]->oCategory->sSlug == "freenode") { // $sViewPath = 'pages.articles.freenode.show'; // } return view($sViewPath, $xData); } }