query('module_code', '')); $action = trim((string) $request->query('action_code', '')); $operatorType = trim((string) $request->query('operator_type', '')); $operatorId = (int) $request->query('operator_id', 0); $startDate = trim((string) $request->query('start_date', '')); $endDate = trim((string) $request->query('end_date', '')); $q = AuditLog::query()->orderByDesc('id'); if ($module !== '') { $q->where('module_code', $module); } if ($action !== '') { $q->where('action_code', $action); } if ($operatorType !== '') { $q->where('operator_type', $operatorType); } if ($operatorId > 0) { $q->where('operator_id', $operatorId); } if ($startDate !== '') { $q->whereDate('created_at', '>=', $startDate); } if ($endDate !== '') { $q->whereDate('created_at', '<=', $endDate); } $paginator = $q->paginate($p['perPage'], ['*'], 'page', $p['page']); return AdminApiList::json($paginator, fn (AuditLog $r) => $this->row($r)); } /** @return array */ private function row(AuditLog $r): array { return [ 'id' => (int) $r->id, 'operator_type' => $r->operator_type, 'operator_id' => (int) $r->operator_id, 'module_code' => $r->module_code, 'action_code' => $r->action_code, 'target_type' => $r->target_type, 'target_id' => $r->target_id, 'before_json' => $r->before_json, 'after_json' => $r->after_json, 'ip' => $r->ip, 'user_agent' => $r->user_agent, 'created_at' => $r->created_at?->toIso8601String(), ]; } }