RankfundHandler.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Module\AppGame\Handler\House;
  3. use App\Module\AppGame\Handler\BaseHandler;
  4. use App\Module\AppGame\Proto\WealthRankDto;
  5. use App\Module\Farm\Services\HouseService;
  6. use Google\Protobuf\Internal\Message;
  7. use Illuminate\Support\Facades\Log;
  8. use UCore\Exception\LogicException;
  9. use Uraus\Kku\Request\RequestHouseRankfund;
  10. use Uraus\Kku\Response\ResponseHouseRankfund;
  11. /**
  12. * 处理财富排行榜请求
  13. */
  14. class RankfundHandler extends BaseHandler
  15. {
  16. /**
  17. * 是否需要登录
  18. * @var bool
  19. */
  20. protected bool $need_login = true;
  21. /**
  22. * 处理财富排行榜请求
  23. *
  24. * @param RequestHouseRankfund $data 财富排行榜请求数据
  25. * @return ResponseHouseRankfund 财富排行榜响应
  26. */
  27. public function handle(Message $data): Message
  28. {
  29. try {
  30. $userId = $this->user_id;
  31. // 获取分页参数
  32. $page = $data->getPage();
  33. $pageNum = $page ? $page->getPage() : 1;
  34. $pageSize = $page ? $page->getPerPage() : 10;
  35. // 调用服务层获取财富排行榜数据
  36. $rankData = HouseService::getWealthRankList($userId, $pageNum, $pageSize);
  37. // 转换为Protobuf格式并返回
  38. return WealthRankDto::toProtobuf($rankData);
  39. } catch (\Exception $e) {
  40. Log::error('获取财富排行榜失败', [
  41. 'user_id' => $this->user_id ?? 0,
  42. 'error' => $e->getMessage(),
  43. 'trace' => $e->getTraceAsString()
  44. ]);
  45. throw new LogicException('获取排行榜数据失败');
  46. }
  47. }
  48. }