From 26eb9050b86b8f5c9c48205f33d6a608c1183663 Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Sat, 10 Sep 2022 12:03:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=BC=93=E5=AD=98=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/User/HostController.php | 5 +---- app/Http/Controllers/User/TaskController.php | 2 +- app/Models/Host.php | 11 ++++++++++ app/Models/User/Task.php | 21 ++++++++++++++++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/User/HostController.php b/app/Http/Controllers/User/HostController.php index 177ea49..0057ab1 100644 --- a/app/Http/Controllers/User/HostController.php +++ b/app/Http/Controllers/User/HostController.php @@ -6,7 +6,6 @@ use Illuminate\Http\Request; use App\Models\Module\Module; use App\Http\Controllers\Controller; -use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Cache; class HostController extends Controller @@ -14,9 +13,7 @@ class HostController extends Controller public function index(Module $module) { // - $hosts = Host::thisUser($module->id)->with('module', function ($query) { - $query->select(['id', 'name']); - })->get(); + $hosts = (new Host())->getUserHosts($module->id ?? null); return $this->success($hosts); } diff --git a/app/Http/Controllers/User/TaskController.php b/app/Http/Controllers/User/TaskController.php index 8817ed8..2e9c9e6 100644 --- a/app/Http/Controllers/User/TaskController.php +++ b/app/Http/Controllers/User/TaskController.php @@ -11,7 +11,7 @@ class TaskController extends Controller public function __invoke() { // - $tasks = Task::user()->with('host')->get(); + $tasks = (new Task())->getCurrentUserTasks(); return $this->success($tasks); } diff --git a/app/Models/Host.php b/app/Models/Host.php index 629405c..6ec7f0f 100644 --- a/app/Models/Host.php +++ b/app/Models/Host.php @@ -33,6 +33,17 @@ class Host extends Model ]; + // get user hosts + public function getUserHosts($module_id) { + + return Cache::remember('user_hosts_' . auth()->id(), 3600, function () use ($module_id) { + return $this->thisUser($module_id)->with('module', function ($query) { + $query->select(['id', 'name']); + })->get(); + }); + } + + // user public function user() { diff --git a/app/Models/User/Task.php b/app/Models/User/Task.php index 04be338..88fec46 100644 --- a/app/Models/User/Task.php +++ b/app/Models/User/Task.php @@ -6,6 +6,7 @@ use App\Exceptions\CommonException; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Support\Facades\Cache; use Ramsey\Uuid\Uuid; class Task extends Model @@ -35,6 +36,14 @@ public function scopeUser($query) } + public function getCurrentUserTasks() + { + return Cache::remember('user_tasks_' . auth()->id(), 3600, function () { + return $this->user()->with('host')->get(); + }); + } + + public function host() { return $this->belongsTo(Host::class); @@ -72,6 +81,8 @@ protected static function boot() $model->user_id = $model->host->user_id; + + Cache::forget('user_tasks_' . auth()->id()); } }); @@ -81,5 +92,15 @@ protected static function boot() $model->status = 'done'; } }); + + // updated and delete + static::updated(function () { + Cache::forget('user_tasks_' . auth()->id()); + }); + + + static::deleted(function () { + Cache::forget('user_tasks_' . auth()->id()); + }); } }