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
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();
|
|
}
|
|
}
|