| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace App\Module\AppGame\Handler\User;
- use App\Module\AppGame\Handler\BaseHandler;
- use App\Module\Game\Services\UserLogService;
- use Google\Protobuf\Internal\Message;
- use Illuminate\Support\Facades\Log;
- use Uraus\Kku\Common\ResponsePage;
- use Uraus\Kku\Request\RequestUserLogData;
- use Uraus\Kku\Response\ResponseUserLogdata;
- use Uraus\Kku\Response\UserLog;
- /**
- * 处理用户日志数据请求
- */
- class LogDataHandler extends BaseHandler
- {
- /**
- * 是否需要登录
- * @var bool
- */
- protected bool $need_login = true;
- /**
- * 处理用户日志数据请求
- *
- * @param RequestUserLogData $data 用户日志数据请求数据
- * @return ResponseUserLogdata 用户日志数据响应
- */
- public function handle(Message $data): Message
- {
- try {
- // 创建响应对象
- $response = new ResponseUserLogdata();
- // 获取分页参数
- $page = 1;
- $pageSize = 20;
- if ($data->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;
- }
- }
- }
|