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

<?php
declare(strict_types=1);
namespace App\Amqp\Consumer;
use App\Model\Order;
use App\Model\SpeakerDevic;
use App\Service\DeviceServiceInterFace;
use Hyperf\Amqp\Result;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage;
use Hyperf\DbConnection\Db;
use PhpAmqpLib\Message\AMQPMessage;
use Hyperf\Di\Annotation\Inject;
/**
* @Consumer(exchange="devicOrder", routingKey="devicOrder", queue="devicOrder", nums=1)
*/
class DevicOrderConsumer extends ConsumerMessage
{
/**
* @Inject
* @var DeviceServiceInterFace
*/
protected $deviceService;
public function consumeMessage($data, AMQPMessage $message): string
{
try {
$orderMainId = $message->getBody();
$order = Order::query()
->select(['id', 'store_id', 'money'])
->where(['order_main_id' => $orderMainId, 'type' => 4, 'dm_state' => 2])
->first();
$deviceName = SpeakerDevic::query()->where(['store_id' => $order['store_id']])->value('device_name');
$msg = "{\"msg\":\"到账".$order['money']."\"}";
$res = $this->deviceService->pubMsgToStoreByDevName($deviceName, $msg);
if ($res == true) {
return Result::ACK;
} else {
return Result::REQUEUE;
}
} catch (\Exception $e) {
return Result::REQUEUE;
}
}
public function isEnable(): bool
{
//if(env('APP_ENV')!='prod') return false;
return parent::isEnable();
}
}