CheckActiveMenu.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Menu;
  4. use App\UserVisitMenuLog;
  5. use Closure;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\Redis;
  8. class CheckActiveMenu
  9. {
  10. /**
  11. * Handle an incoming request.
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @param \Closure $next
  15. * @return mixed
  16. */
  17. public function handle($request, Closure $next)
  18. {
  19. $response = $next($request);
  20. $uri = substr($request->getRequestUri(), 1);
  21. // 请求方法为get
  22. if ($request->method() == 'GET') {
  23. $menu = Menu::query()->where('route', $uri)->first();
  24. if ($menu) {
  25. //redis正常保存在缓存中
  26. $userVisitMenuLog = new UserVisitMenuLog([
  27. 'user_id' => Auth::user()['id'],
  28. 'menu_id' => $menu->id,
  29. ]);
  30. try {
  31. //菜单点击入缓存
  32. Redis::LPUSH('UserVisitMenuLogsL1', $userVisitMenuLog);
  33. } catch (\Exception $e) {
  34. //连接不上缓存。直接入库
  35. $userVisitMenuLog->save();
  36. }
  37. }
  38. }
  39. return $response;
  40. }
  41. }