From ec6b9e61a369c547b2085f2da2b4b7a35fa397d3 Mon Sep 17 00:00:00 2001 From: ramram1515 Date: Thu, 2 Jul 2026 13:02:29 +0800 Subject: [PATCH] feat: implement Live Truck Radar caching --- .../Api/V1/Me/MyLiveTrucksController.php | 9 ++++++--- app/Services/LiveTracking/TruckTracker.php | 14 ++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Api/V1/Me/MyLiveTrucksController.php b/app/Http/Controllers/Api/V1/Me/MyLiveTrucksController.php index 2b04335..2d292cb 100644 --- a/app/Http/Controllers/Api/V1/Me/MyLiveTrucksController.php +++ b/app/Http/Controllers/Api/V1/Me/MyLiveTrucksController.php @@ -20,9 +20,12 @@ class MyLiveTrucksController extends ApiController */ public function trucks(Request $request): JsonResponse { - $household = Household::with('assignedDropOffPoint') - ->where('head_user_id', $request->user()->id) - ->first(); + $userId = $request->user()->id; + $household = \Illuminate\Support\Facades\Cache::remember("user:{$userId}:household", now()->addMinutes(10), function () use ($userId) { + return Household::with('assignedDropOffPoint') + ->where('head_user_id', $userId) + ->first(); + }); if (! $household || ! $household->assigned_drop_off_point_id) { return $this->ok([ diff --git a/app/Services/LiveTracking/TruckTracker.php b/app/Services/LiveTracking/TruckTracker.php index b6a4280..9ec7204 100644 --- a/app/Services/LiveTracking/TruckTracker.php +++ b/app/Services/LiveTracking/TruckTracker.php @@ -94,12 +94,14 @@ class TruckTracker */ public function activeTruckPositions(): array { - $trucks = Truck::query() - ->where('status', Truck::STATUS_ACTIVE) - ->whereNotNull('last_known_coordinates') - ->where('last_location_updated_at', '>=', now()->subHour()) - ->with('assignedTeam') - ->get(); + $trucks = Cache::remember('active_truck_positions_list', now()->addSeconds(15), function () { + return Truck::query() + ->where('status', Truck::STATUS_ACTIVE) + ->whereNotNull('last_known_coordinates') + ->where('last_location_updated_at', '>=', now()->subHour()) + ->with('assignedTeam') + ->get(); + }); return $trucks->map(function (Truck $t) { $cached = Cache::get($this->cacheKey($t));