OpenHandler.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Module\AppGame\Handler\Matchexchange;
  3. use App\Module\AppGame\Handler\BaseHandler;
  4. use App\Module\Mex\Services\MexPriceConfigService;
  5. use Google\Protobuf\Internal\Message;
  6. use Uraus\Kku\Request\RequestMatchexchangeOpen;
  7. use Uraus\Kku\Response\ResponseMatchexchangeOpen;
  8. use Uraus\Kku\Common\RESPONSE_CODE;
  9. use Illuminate\Support\Facades\Log;
  10. /**
  11. * 处理获取开放交易物品列表请求
  12. *
  13. */
  14. class OpenHandler extends BaseHandler
  15. {
  16. /**
  17. * 是否需要登录
  18. *
  19. * @var bool
  20. */
  21. protected bool $need_login = true;
  22. /**
  23. * 处理获取开放交易物品列表请求
  24. *
  25. * @param RequestMatchexchangeOpen $data 获取开放交易物品列表请求数据
  26. * @return ResponseMatchexchangeOpen 获取开放交易物品列表响应
  27. */
  28. public function handle(Message $data): Message
  29. {
  30. // 创建响应对象
  31. $response = new ResponseMatchexchangeOpen();
  32. try {
  33. // 获取所有启用的价格配置
  34. $enabledConfigs = MexPriceConfigService::getEnabledConfigs();
  35. // 提取物品ID列表
  36. $itemIds = [];
  37. foreach ($enabledConfigs as $config) {
  38. $itemIds[] = $config['item_id'];
  39. }
  40. // 设置响应数据
  41. $response->setItemId($itemIds);
  42. // 设置成功响应
  43. $this->response->setCode(RESPONSE_CODE::OK);
  44. $this->response->setMsg('获取开放交易物品列表成功');
  45. // 更新用户活动时间
  46. $this->updateUserActivityTime();
  47. Log::info('获取开放交易物品列表成功', [
  48. 'user_id' => $this->user_id,
  49. 'item_count' => count($itemIds),
  50. 'item_ids' => $itemIds
  51. ]);
  52. } catch (\Exception $e) {
  53. // 记录错误日志
  54. Log::error('获取开放交易物品列表失败', [
  55. 'user_id' => $this->user_id,
  56. 'error' => $e->getMessage(),
  57. 'trace' => $e->getTraceAsString()
  58. ]);
  59. // 设置错误响应
  60. $this->response->setCode(RESPONSE_CODE::SERVER_ERROR);
  61. $this->response->setMsg('获取开放交易物品列表失败');
  62. }
  63. return $response;
  64. }
  65. }