Browse Source

修复menu记录GET轨迹时没用户登录的BUG

LD 5 năm trước cách đây
mục cha
commit
2e9e89def6

+ 9 - 2
app/Services/CheckActiveMenuService.php

@@ -11,6 +11,7 @@ use Illuminate\Database\Eloquent\Model;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Redis;
 
 
 class CheckActiveMenuService
 class CheckActiveMenuService
@@ -37,13 +38,19 @@ class CheckActiveMenuService
     public static function set(Request $request): void
     public static function set(Request $request): void
     {
     {
         // 请求方法为get
         // 请求方法为get
+        $userId = Auth::user()['id']??null;
+        if(!$userId)return;
         if ($request->method() == 'GET') {
         if ($request->method() == 'GET') {
-            $menu = Menu::query()->where('route', substr($request->getRequestUri(), 1))->first();
+            $menu = Cache::remember('menu:route:'.$request->getRequestUri()
+                ,config('cache.expirations.rarelyChange')
+                ,function()use($request){
+                    return Menu::query()->where('route', substr($request->getRequestUri(), 1))->first();
+                });
             if ($menu) {
             if ($menu) {
                 //redis正常保存在缓存中
                 //redis正常保存在缓存中
                 $date = date('Y-m-d H:i:s');
                 $date = date('Y-m-d H:i:s');
                 $userVisitMenuLog = new UserVisitMenuLog([
                 $userVisitMenuLog = new UserVisitMenuLog([
-                    'user_id' => Auth::user()['id'],
+                    'user_id' => $userId,
                     'menu_id' => $menu->id,
                     'menu_id' => $menu->id,
                     'created_at' => $date,
                     'created_at' => $date,
                     'updated_at' => $date,
                     'updated_at' => $date,