RankfundHandler.php 1.6 KB

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