Prechádzať zdrojové kódy

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

LD 5 rokov pred
rodič
commit
d76e34906a
1 zmenil súbory, kde vykonal 9 pridanie a 2 odobranie
  1. 9 2
      app/Services/CheckActiveMenuService.php

+ 9 - 2
app/Services/CheckActiveMenuService.php

@@ -11,6 +11,7 @@ use Illuminate\Database\Eloquent\Model;
 use Illuminate\Http\Request;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Redis;
 
 class CheckActiveMenuService
@@ -37,13 +38,19 @@ class CheckActiveMenuService
     public static function set(Request $request): void
     {
         // 请求方法为get
+        $userId = Auth::user()['id']??null;
+        if(!$userId)return;
         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) {
                 //redis正常保存在缓存中
                 $date = date('Y-m-d H:i:s');
                 $userVisitMenuLog = new UserVisitMenuLog([
-                    'user_id' => Auth::user()['id'],
+                    'user_id' => $userId,
                     'menu_id' => $menu->id,
                     'created_at' => $date,
                     'updated_at' => $date,