ListHandler.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Module\AppGame\Handler\Friend;
  3. use App\Module\AppGame\Handler\BaseHandler;
  4. use App\Module\Friend\Enums\ERROR_CODE;
  5. use App\Module\Friend\Services\FriendService;
  6. use Google\Protobuf\Internal\Message;
  7. use Uraus\Kku\Common\ResponsePage;
  8. use Uraus\Kku\Request\RequestFriendList;
  9. use Uraus\Kku\Response\FriendData;
  10. use Uraus\Kku\Response\ResponseFriendList;
  11. /**
  12. * 处理获取好友列表请求
  13. */
  14. class ListHandler extends BaseHandler
  15. {
  16. /**
  17. * 是否需要登录
  18. * @var bool
  19. */
  20. protected bool $need_login = true;
  21. /**
  22. * 处理获取好友列表请求
  23. *
  24. * @param RequestFriendList $data 获取好友列表请求数据
  25. * @return ResponseFriendList 获取好友列表响应
  26. */
  27. public function handle(Message $data): Message
  28. {
  29. // 创建响应对象
  30. $response = new ResponseFriendList();
  31. // 获取请求参数
  32. $page = $data->getPage();
  33. $pageNum = $page ? $page->getPage() : 1;
  34. $pageSize = $page ? $page->getPerPage() : 20;
  35. // 调用服务获取好友列表
  36. $result = FriendService::getFriendList($this->user_id, $pageNum, $pageSize);
  37. // 检查是否成功
  38. if ($result['code'] !== ERROR_CODE::SUCCESS) {
  39. // 设置错误信息
  40. // TODO: 实现错误处理
  41. return $response;
  42. }
  43. // 设置分页信息
  44. $responsePage = new ResponsePage();
  45. $responsePage->setTotal($result['data']['total']);
  46. $responsePage->setPerPage($result['data']['per_page']);
  47. $responsePage->setCurrentPage($result['data']['current_page']);
  48. $responsePage->setLastPage($result['data']['last_page']);
  49. $responsePage->setHasMore($result['data']['current_page'] < $result['data']['last_page']);
  50. $response->setPage($responsePage);
  51. // 设置好友列表
  52. $friendList = [];
  53. foreach ($result['data']['items'] as $item) {
  54. $friendData = new FriendData();
  55. $friendData->setId($item['user_id']);
  56. $friendData->setSourceUserId($item['user_id']);
  57. $friendData->setCreateTimes(time());
  58. $friendData->setMesage($item['remark'] ?? '');
  59. $friendList[] = $friendData;
  60. }
  61. $response->setList($friendList);
  62. return $response;
  63. }
  64. }