| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace App\Module\AppGame\Proto;
- use App\Module\Farm\Dtos\WealthRankDto as FarmWealthRankDto;
- use App\Module\Farm\Dtos\WealthRankItemDto;
- use Uraus\Kku\Common\ResponsePage;
- use Uraus\Kku\Response\FarmRankItem;
- use Uraus\Kku\Response\ResponseHouseRankfund;
- /**
- * 财富排行榜DTO转换为Protobuf数据对象
- */
- class WealthRankDto
- {
- /**
- * 将财富排行榜DTO转换为Protobuf响应对象
- *
- * @param FarmWealthRankDto $dto
- * @return ResponseHouseRankfund
- */
- public static function toProtobuf(FarmWealthRankDto $dto): ResponseHouseRankfund
- {
- $response = new ResponseHouseRankfund();
- // 设置分页信息
- if (!empty($dto->page)) {
- $page = new ResponsePage();
- $page->setCurrentPage($dto->page['page'] ?? 1);
- $page->setPerPage($dto->page['per_page'] ?? 20);
- $page->setTotal($dto->page['total'] ?? 0);
-
- // 计算其他分页信息
- $total = $dto->page['total'] ?? 0;
- $perPage = $dto->page['per_page'] ?? 20;
- $currentPage = $dto->page['page'] ?? 1;
- $lastPage = $perPage > 0 ? ceil($total / $perPage) : 1;
- $hasMore = $currentPage < $lastPage;
-
- $page->setLastPage($lastPage);
- $page->setHasMore($hasMore);
-
- $response->setPage($page);
- }
- // 设置用户排名
- $response->setUserRank($dto->userRank);
- // 设置赛季
- $response->setReason($dto->reason);
- // 转换排行榜列表
- $rankItems = [];
- foreach ($dto->list as $item) {
- $rankItems[] = self::convertRankItem($item);
- }
- $response->setList($rankItems);
- return $response;
- }
- /**
- * 转换排行榜项目
- *
- * @param WealthRankItemDto $item
- * @return FarmRankItem
- */
- private static function convertRankItem(WealthRankItemDto $item): FarmRankItem
- {
- $rankItem = new FarmRankItem();
- $rankItem->setRank($item->rank);
- $rankItem->setLevel($item->houseLevel); // 设置房屋等级
- $rankItem->setUserId($item->userId);
- $rankItem->setNickname($item->nickname);
- $rankItem->setReason($item->reason);
- $rankItem->setFund2($item->wealth); // 设置财富值
- return $rankItem;
- }
- }
|