hasPage()) { $pageInfo = $data->getPage(); $page = $pageInfo->getPage() ?: 1; $pageSize = $pageInfo->getPerPage() ?: 20; // 限制每页最大数量 if ($pageSize > 100) { $pageSize = 100; } } // 获取用户日志列表 $logs = UserLogService::getUserLogs($this->user_id, $page, $pageSize); // 创建分页响应 $responsePage = new ResponsePage(); $responsePage->setCurrentPage($logs->currentPage()); $responsePage->setPerPage($logs->perPage()); $responsePage->setTotal($logs->total()); $responsePage->setHasMore($logs->hasMorePages()); $responsePage->setLastPage($logs->lastPage()); // 设置分页信息 $response->setPage($responsePage); // 转换日志数据为protobuf格式 $userLogs = []; foreach ($logs->items() as $logItem) { $userLog = new UserLog(); $userLog->setMsg($logItem->message); $userLog->setTime($logItem->time); // 使用模型中定义的time访问器 $userLogs[] = $userLog; } // 设置日志列表 $response->setLogs($userLogs); // 记录成功日志 Log::info('用户日志查询成功', [ 'user_id' => $this->user_id, 'page' => $page, 'page_size' => $pageSize, 'total' => $logs->total(), 'logs_count' => count($userLogs) ]); return $response; } catch (\Exception $e) { Log::error('用户日志查询失败', [ 'user_id' => $this->user_id, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); // 返回空的响应 $response = new ResponseUserLogdata(); // 创建空的分页信息 $responsePage = new ResponsePage(); $responsePage->setPage(1); $responsePage->setPageSize(20); $responsePage->setTotal(0); $responsePage->setTotalPage(0); $responsePage->setHasMore(false); $response->setPage($responsePage); $response->setLogs([]); return $response; } } }