Kaynağa Gözat

去除没有二级菜单的重复活跃菜单

ANG YU 5 yıl önce
ebeveyn
işleme
0dc1a7479c
1 değiştirilmiş dosya ile 19 ekleme ve 3 silme
  1. 19 3
      app/Services/CheckActiveMenuService.php

+ 19 - 3
app/Services/CheckActiveMenuService.php

@@ -66,18 +66,22 @@ class CheckActiveMenuService
     public static function activeMenus()
     {
         $user_id = self::getUserId();
+        $result = collect();
         try {
             Redis::LLEN('UserVisitMenuLogsL1');
             if (Redis::LLEN('UserVisitMenuLogsL1') + Redis::LLEN('UserVisitMenuLogsL2') > 0) {
                 //缓存中有数据
-                return self::getFromRedis($user_id);
+                $result= self::getFromRedis($user_id);
             }else{
-                return self::getFromDB($user_id);
+                $result= self::getFromDB($user_id);
             }
         } catch (\Exception $e) {
             // TODO 缓存异常的处理策略
-            return self::getFromDB($user_id);
+            $result=self::getFromDB($user_id);
         }
+
+        $result = self::filterRepetitionMenu($result);
+        return $result;
     }
 
     /**
@@ -261,4 +265,16 @@ class CheckActiveMenuService
                 //将查询结果按照上面拍好的顺序重新排列
             });
     }
+
+
+    protected static function filterRepetitionMenu($result)
+    {
+        $response = $result->duplicates('id');
+        if (!empty($response)) {
+            $result = $result->filter(function ($item) use ($response) {
+                return !($response->contains($item->id) && empty($item->secondLevelMenu));
+            });
+        }
+        return $result;
+    }
 }