Browse Source

新增IS_BIND字段相关调整

master
weigang 5 years ago
parent
commit
cae320969f
  1. 14
      app/Amqp/Consumer/DevicOrderConsumer.php
  2. 5
      app/Model/SpeakerDevic.php
  3. 32
      app/Service/DeviceServiceImp.php
  4. 2
      app/Service/DeviceServiceInterFace.php
  5. 2
      app/Service/IOTAliService.php

14
app/Amqp/Consumer/DevicOrderConsumer.php

@ -15,7 +15,7 @@ use PhpAmqpLib\Message\AMQPMessage;
use Hyperf\Di\Annotation\Inject;
/**
* @Consumer(exchange="devicOrder", routingKey="devicOrder", queue="devicOrder", nums=1)
* @Consumer(exchange="devicOrder", routingKey="devicOrder", queue="devicOrder", nums=4)
*/
class DevicOrderConsumer extends ConsumerMessage
{
@ -39,14 +39,18 @@ class DevicOrderConsumer extends ConsumerMessage
return Result::REQUEUE;
}
$deviceName = SpeakerDevic::query()->where(['store_id' => $order['store_id']])->value('device_name');
$deviceNames = SpeakerDevic::query()
->select(['device_name'])
->where(['store_id' => $order['store_id'], 'is_bind' => SpeakerDevic::IS_BIND_YES])
->get()
->toArray();
if (is_null($deviceName)||!$deviceName) {
if (empty($deviceNames)||!$deviceNames) {
return Result::REQUEUE;
}
$msg = "{\"msg\":\"到账".$order['money']."\"}";
$res = $this->deviceService->pubMsgToStoreByDevName($deviceName, $msg);
$res = $this->deviceService->pubMsgToStoreByDevName($deviceNames, $msg);
if ($res == true) {
return Result::ACK;
@ -61,7 +65,7 @@ class DevicOrderConsumer extends ConsumerMessage
public function isEnable(): bool
{
//if(env('APP_ENV')!='prod') return false;
// if(env('APP_ENV')!='prod') return false;
return parent::isEnable();
}
}

5
app/Model/SpeakerDevic.php

@ -6,6 +6,11 @@ use App\Model\Model;
class SpeakerDevic extends Model
{
const IS_BIND_YES = 1;
const IS_BIND_NO = 0;
protected $table = 'lanzu_service_speakers';
protected $fillable = ['store_id', 'device_name', 'state', 'market_id', 'bind_time', 'is_bind'];
}

32
app/Service/DeviceServiceImp.php

@ -31,7 +31,7 @@ class DeviceServiceImp implements DeviceServiceInterFace
*/
public function getListByStoreId($store_id)
{
return SpeakerDevic::query()->where(['store_id' => $store_id])->get();
return SpeakerDevic::query()->where(['store_id' => $store_id, 'is_bind' => SpeakerDevic::IS_BIND_YES])->get()->toArray();
}
/**
@ -54,12 +54,18 @@ class DeviceServiceImp implements DeviceServiceInterFace
// 获取市场ID
$market_id = Store::query()->where(['id' => $store_id])->value('market_id');
$sd = new SpeakerDevic;
$sd->store_id = $store_id;
$sd->device_name = $dev_name;
$sd->market_id = $market_id;
$sd->bind_time = time();
$sd->saveOrFail();
// $sd = new SpeakerDevic;
// $sd->store_id = $store_id;
// $sd->device_name = $dev_name;
// $sd->market_id = $market_id;
// $sd->bind_time = time();
// $sd->saveOrFail();
$sd = SpeakerDevic::query()->updateOrCreate(
['store_id' => $store_id, 'device_name' => $dev_name],
['market_id' => $market_id, 'bind_time' => time(), 'is_bind' => SpeakerDevic::IS_BIND_YES]
);
} catch (Exception $e) {
$this->log->event(LogLabel::DEVICE_LOG, ['msg' => '绑定设备异常:'.$e->getMessage()]);
}
@ -73,7 +79,7 @@ class DeviceServiceImp implements DeviceServiceInterFace
*/
public function unbindById($bind_id)
{
return SpeakerDevic::destroy($bind_id);
return SpeakerDevic::query()->where(['id' => $bind_id])->update(['is_bind' => SpeakerDevic::IS_BIND_NO]);
}
/**
@ -81,9 +87,13 @@ class DeviceServiceImp implements DeviceServiceInterFace
* @param $store_id
* @param $msg
*/
public function pubMsgToStoreByDevName($dev_name, $msg)
public function pubMsgToStoreByDevName($dev_names, $msg)
{
return $this->IOTService->pub($dev_name, $msg);
foreach ($dev_names as $key => $dev_name) {
$this->IOTService->pub($dev_name, $msg);
}
return true;
}
/**
@ -93,7 +103,7 @@ class DeviceServiceImp implements DeviceServiceInterFace
*/
protected function checkDeviceEnable($dev_name)
{
return SpeakerDevic::query()->where(['device_name' => $dev_name])->exists();
return SpeakerDevic::query()->where(['device_name' => $dev_name, 'is_bind' => SpeakerDevic::IS_BIND_YES])->exists();
}
}

2
app/Service/DeviceServiceInterFace.php

@ -7,5 +7,5 @@ interface DeviceServiceInterFace
public function getListByStoreId($store_id);
public function bindByStoreId($dev_name,$store_id);
public function unbindById($bind_id);
public function pubMsgToStoreByDevName($dev_name,$msg);
public function pubMsgToStoreByDevName($dev_names,$msg);
}

2
app/Service/IOTAliService.php

@ -34,7 +34,7 @@ class IOTAliService implements IOTServiceInterface
->options([
'query' => [
'RegionId' => "cn-shanghai",
'TopicFullName' => "/a1ZSurIJmO0/".$device_name."/user/get",
'TopicFullName' => "/".env('ALI_IOT_PRODUCT_KEY')."/".$device_name."/user/get",
'MessageContent' => base64_encode($msg),
'ProductKey' => env('ALI_IOT_PRODUCT_KEY'),
],

Loading…
Cancel
Save