WealthRankDto.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Module\AppGame\Proto;
  3. use App\Module\Farm\Dtos\WealthRankDto as FarmWealthRankDto;
  4. use App\Module\Farm\Dtos\WealthRankItemDto;
  5. use Uraus\Kku\Common\ResponsePage;
  6. use Uraus\Kku\Response\FarmRankItem;
  7. use Uraus\Kku\Response\ResponseHouseRankfund;
  8. /**
  9. * 财富排行榜DTO转换为Protobuf数据对象
  10. */
  11. class WealthRankDto
  12. {
  13. /**
  14. * 将财富排行榜DTO转换为Protobuf响应对象
  15. *
  16. * @param FarmWealthRankDto $dto
  17. * @return ResponseHouseRankfund
  18. */
  19. public static function toProtobuf(FarmWealthRankDto $dto): ResponseHouseRankfund
  20. {
  21. $response = new ResponseHouseRankfund();
  22. // 设置分页信息
  23. if (!empty($dto->page)) {
  24. $page = new ResponsePage();
  25. $page->setCurrentPage($dto->page['page'] ?? 1);
  26. $page->setPerPage($dto->page['per_page'] ?? 20);
  27. $page->setTotal($dto->page['total'] ?? 0);
  28. // 计算其他分页信息
  29. $total = $dto->page['total'] ?? 0;
  30. $perPage = $dto->page['per_page'] ?? 20;
  31. $currentPage = $dto->page['page'] ?? 1;
  32. $lastPage = $perPage > 0 ? ceil($total / $perPage) : 1;
  33. $hasMore = $currentPage < $lastPage;
  34. $page->setLastPage($lastPage);
  35. $page->setHasMore($hasMore);
  36. $response->setPage($page);
  37. }
  38. // 设置用户排名
  39. $response->setUserRank($dto->userRank);
  40. // 设置赛季
  41. $response->setReason($dto->reason);
  42. // 转换排行榜列表
  43. $rankItems = [];
  44. foreach ($dto->list as $item) {
  45. $rankItems[] = self::convertRankItem($item);
  46. }
  47. $response->setList($rankItems);
  48. return $response;
  49. }
  50. /**
  51. * 转换排行榜项目
  52. *
  53. * @param WealthRankItemDto $item
  54. * @return FarmRankItem
  55. */
  56. private static function convertRankItem(WealthRankItemDto $item): FarmRankItem
  57. {
  58. $rankItem = new FarmRankItem();
  59. $rankItem->setRank($item->rank);
  60. $rankItem->setLevel($item->houseLevel); // 设置房屋等级
  61. $rankItem->setUserId($item->userId);
  62. $rankItem->setNickname($item->nickname);
  63. $rankItem->setReason($item->reason);
  64. $rankItem->setFund2($item->wealth); // 设置财富值
  65. return $rankItem;
  66. }
  67. }