|
|
@@ -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;
|
|
|
+ }
|
|
|
}
|