user()?->isSuperAdmin(), 403, '仅超级管理员可查看操作日志'); $query = AuditLog::query() ->with('user:id,username,name,role') ->orderByDesc('id'); if ($request->filled('keyword')) { $keyword = trim((string) $request->input('keyword')); $query->where(function ($q) use ($keyword) { $q->where('username', 'like', "%{$keyword}%") ->orWhere('path', 'like', "%{$keyword}%") ->orWhere('action', 'like', "%{$keyword}%"); }); } if ($request->filled('method') && $request->input('method') !== 'all') { $query->where('method', strtoupper((string) $request->input('method'))); } if ($request->filled('status_code')) { $query->where('status_code', (int) $request->input('status_code')); } if ($request->filled('start_date')) { $query->whereDate('created_at', '>=', (string) $request->input('start_date')); } if ($request->filled('end_date')) { $query->whereDate('created_at', '<=', (string) $request->input('end_date')); } $pageSize = max(1, min(100, (int) $request->input('page_size', 20))); return response()->json($query->paginate($pageSize)); } }