Преглед изворни кода

中间件 菜单点击事件入库

ANG YU пре 5 година
родитељ
комит
4e67d2964e

+ 1 - 0
app/Http/Kernel.php

@@ -20,6 +20,7 @@ class Kernel extends HttpKernel
         \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
         \App\Http\Middleware\TrustProxies::class,
         \App\Http\Middleware\DecodingRequest::class,
+        \App\Http\Middleware\CheckActiveMenu::class,
     ];
 
     /**

+ 46 - 0
app/Http/Middleware/CheckActiveMenu.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Menu;
+use App\UserVisitMenuLog;
+use Closure;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Redis;
+
+class CheckActiveMenu
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $response = $next($request);
+        $uri = substr($request->getRequestUri(), 1);
+        // 请求方法为get
+        if ($request->method() == 'GET') {
+            $menu = Menu::query()->where('route', $uri)->first();
+            if ($menu) {
+                //redis正常保存在缓存中
+                $userVisitMenuLog = new UserVisitMenuLog([
+                    'user_id' => Auth::user()['id'],
+                    'menu_id' => $menu->id,
+                ]);
+                try {
+                    //菜单点击入缓存
+                    Redis::LPUSH('UserVisitMenuLogsL1', $userVisitMenuLog);
+                } catch (\Exception $e) {
+                    //连接不上缓存。直接入库
+                    $userVisitMenuLog->save();
+                }
+
+
+            }
+        }
+        return $response;
+    }
+}

+ 14 - 0
app/UserVisitMenuLog.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+class UserVisitMenuLog extends Model
+{
+    use ModelTimeFormat;
+    protected $fillable=[
+        'user_id','menu_id',
+    ];
+}

+ 33 - 0
database/migrations/2020_11_03_111159_create_user_visit_menu_logs.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateUserVisitMenuLogs extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('user_visit_menu_logs', function (Blueprint $table) {
+            $table->id();
+            $table->integer('user_id')->index();
+            $table->integer('menu_id')->index();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('user_visit_menu_logs');
+    }
+}