| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace App\Module\User\Middleware;
- use App\Module\AppGame\SessionApp;
- use App\Module\User\Services\UserActivityService;
- use Closure;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- /**
- * 更新用户活动时间中间件
- *
- * 在用户进行任何需要登录的操作时,更新用户的最后活动时间
- */
- class UpdateActivityTimeMiddleware
- {
- /**
- * 处理传入的请求
- *
- * @param Request $request
- * @param Closure $next
- * @return mixed
- */
- public function handle(Request $request, Closure $next)
- {
- // 先处理请求
- $response = $next($request);
-
- try {
- // 获取当前登录用户ID
- $userId = SessionApp::getUserId();
-
- if ($userId > 0) {
- // 异步更新用户活动时间,避免影响响应速度
- $this->updateUserActivityTime($userId);
- }
- } catch (\Exception $e) {
- // 记录错误但不影响正常响应
- Log::error('更新用户活动时间失败', [
- 'error' => $e->getMessage(),
- 'request_uri' => $request->getRequestUri(),
- 'user_agent' => $request->userAgent(),
- ]);
- }
-
- return $response;
- }
- /**
- * 更新用户活动时间
- *
- * @param int $userId
- * @return void
- */
- protected function updateUserActivityTime(int $userId): void
- {
- try {
- // 使用服务类更新活动时间,利用其缓存机制避免频繁数据库写入
- UserActivityService::updateActivityTime($userId);
-
- Log::debug('用户活动时间更新请求已处理', [
- 'user_id' => $userId
- ]);
- } catch (\Exception $e) {
- Log::error('用户活动时间更新失败', [
- 'user_id' => $userId,
- 'error' => $e->getMessage()
- ]);
- }
- }
- }
|