| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
- namespace App\Module\AppGame\Handler\Friend;
- use App\Module\AppGame\Handler\BaseHandler;
- use App\Module\Friend\Enums\ERROR_CODE;
- use App\Module\Friend\Services\FriendService;
- use Google\Protobuf\Internal\Message;
- use Uraus\Kku\Common\ResponsePage;
- use Uraus\Kku\Request\RequestFriendList;
- use Uraus\Kku\Response\FriendData;
- use Uraus\Kku\Response\ResponseFriendList;
- /**
- * 处理获取好友列表请求
- */
- class ListHandler extends BaseHandler
- {
- /**
- * 是否需要登录
- * @var bool
- */
- protected bool $need_login = true;
- /**
- * 处理获取好友列表请求
- *
- * @param RequestFriendList $data 获取好友列表请求数据
- * @return ResponseFriendList 获取好友列表响应
- */
- public function handle(Message $data): Message
- {
- // 创建响应对象
- $response = new ResponseFriendList();
- // 获取请求参数
- $page = $data->getPage();
- $pageNum = $page ? $page->getPage() : 1;
- $pageSize = $page ? $page->getPerPage() : 20;
- // 调用服务获取好友列表
- $result = FriendService::getFriendList($this->user_id, $pageNum, $pageSize);
- // 检查是否成功
- if ($result['code'] !== ERROR_CODE::SUCCESS) {
- // 设置错误信息
- // TODO: 实现错误处理
- return $response;
- }
- // 设置分页信息
- $responsePage = new ResponsePage();
- $responsePage->setTotal($result['data']['total']);
- $responsePage->setPerPage($result['data']['per_page']);
- $responsePage->setCurrentPage($result['data']['current_page']);
- $responsePage->setLastPage($result['data']['last_page']);
- $responsePage->setHasMore($result['data']['current_page'] < $result['data']['last_page']);
- $response->setPage($responsePage);
- // 设置好友列表
- $friendList = [];
- foreach ($result['data']['items'] as $item) {
- $friendData = new FriendData();
- $friendData->setId($item['user_id']);
- $friendData->setSourceUserId($item['user_id']);
- $friendData->setCreateTimes(time());
- $friendData->setMesage($item['remark'] ?? '');
- $friendList[] = $friendData;
- }
- $response->setList($friendList);
- return $response;
- }
- }
|