You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.5 KiB

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Amqp\Consumer;
  4. use App\Model\Order;
  5. use App\Model\SpeakerDevic;
  6. use App\Service\DeviceServiceInterFace;
  7. use Hyperf\Amqp\Result;
  8. use Hyperf\Amqp\Annotation\Consumer;
  9. use Hyperf\Amqp\Message\ConsumerMessage;
  10. use Hyperf\DbConnection\Db;
  11. use PhpAmqpLib\Message\AMQPMessage;
  12. use Hyperf\Di\Annotation\Inject;
  13. /**
  14. * @Consumer(exchange="devicOrder", routingKey="devicOrder", queue="devicOrder", nums=1)
  15. */
  16. class DevicOrderConsumer extends ConsumerMessage
  17. {
  18. /**
  19. * @Inject
  20. * @var DeviceServiceInterFace
  21. */
  22. protected $deviceService;
  23. public function consumeMessage($data, AMQPMessage $message): string
  24. {
  25. try {
  26. $orderMainId = $message->getBody();
  27. $order = Order::query()
  28. ->select(['id', 'store_id', 'money'])
  29. ->where(['order_main_id' => $orderMainId, 'type' => 4, 'dm_state' => 2])
  30. ->first();
  31. $deviceName = SpeakerDevic::query()->where(['store_id' => $order['store_id']])->value('device_name');
  32. $msg = "{\"msg\":\"到账".$order['money']."\"}";
  33. $res = $this->deviceService->pubMsgToStoreByDevName($deviceName, $msg);
  34. if ($res == true) {
  35. return Result::ACK;
  36. } else {
  37. return Result::REQUEUE;
  38. }
  39. } catch (\Exception $e) {
  40. return Result::REQUEUE;
  41. }
  42. }
  43. public function isEnable(): bool
  44. {
  45. //if(env('APP_ENV')!='prod') return false;
  46. return parent::isEnable();
  47. }
  48. }