From 9121a27185cce76d01b0ececd113185632e14ecb Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Mon, 6 Feb 2023 14:19:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20Forum=20=E5=B8=96=E5=AD=90?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/ForumController.php | 26 ++++++-------------- routes/api.php | 5 ++-- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/Api/ForumController.php b/app/Http/Controllers/Api/ForumController.php index 7ce4442..7dfb450 100644 --- a/app/Http/Controllers/Api/ForumController.php +++ b/app/Http/Controllers/Api/ForumController.php @@ -4,11 +4,11 @@ use App\Http\Controllers\Controller; use Closure; -use function config; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; +use function config; class ForumController extends Controller { @@ -19,24 +19,12 @@ class ForumController extends Controller public function __construct() { $this->baseUrl = config('settings.forum.base_url'); - $this->http = Http::baseUrl($this->baseUrl.'/api')->throw(); + $this->http = Http::baseUrl($this->baseUrl . '/api')->throw(); } - public function announcements(): JsonResponse + public function cache($tag, Closure $callback) { - $resp = $this->cache(function () { - return $this->get('discussions?filter[tag]=announcements&page[offset]=0&sort=-createdAt'); - }); - - return $this->resp($resp); - } - - public function cache(Closure $callback) - { - // 获取调用方法名 - $method = debug_backtrace()[1]['function']; - - return Cache::remember('forum.func.'.$method, 60, function () use ($callback) { + return Cache::remember('forum.tag:' . $tag, 60, function () use ($callback) { return $callback(); }); } @@ -53,10 +41,10 @@ public function resp($data): JsonResponse return $this->success($data); } - public function pinned(): JsonResponse + public function tag($tag): JsonResponse { - $resp = $this->cache(function () { - return $this->get('discussions?filter[tag]=pinned&page[offset]=0&sort=-createdAt'); + $resp = $this->cache($tag, function () use ($tag) { + return $this->get('discussions?filter[tag]=' . $tag . '&page[offset]=0&sort=-createdAt'); }); return $this->resp($resp); diff --git a/routes/api.php b/routes/api.php index 2c1ddbc..e4f21cc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -27,8 +27,9 @@ Route::resource('tasks', TaskController::class)->only(['index', 'show']); -Route::get('forum/announcements', [ForumController::class, 'pinned']); -Route::get('forum/pinned', [ForumController::class, 'announcements']); +// Route::get('forum/announcements', [ForumController::class, 'pinned']); +// Route::get('forum/pinned', [ForumController::class, 'announcements']); +Route::get('forum/{tag}', [ForumController::class, 'tag']); Route::get('hosts/usages', [HostController::class, 'usages']); Route::apiResource('hosts', HostController::class);