DeviceEventListener.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Listeners;
  3. use App\Console\Commands\SendDeviceRule;
  4. use App\Model\DeviceBox;
  5. use App\Model\DeviceInfo;
  6. use App\Model\DeviceType;
  7. use App\Model\DeviceTypeBox;
  8. use App\Model\LockInfo;
  9. use App\Model\SystemConfig;
  10. use App\Server\DeviceServer;
  11. use Illuminate\Contracts\Queue\ShouldQueue;
  12. use Illuminate\Queue\InteractsWithQueue;
  13. use App\Events\DeviceEvent;
  14. use Illuminate\Support\Carbon;
  15. use Illuminate\Support\Facades\DB;
  16. use Illuminate\Support\Facades\Log;
  17. use Illuminate\Console\Scheduling\Schedule;
  18. class DeviceEventListener
  19. {
  20. /**
  21. * Create the event listener.
  22. *
  23. * @return void
  24. */
  25. public function __construct()
  26. {
  27. //
  28. }
  29. /**
  30. * Handle the event.
  31. *
  32. * @param object $event
  33. * @return void
  34. */
  35. public function handle(DeviceEvent $event)
  36. {
  37. $device = $event->device;
  38. if(!empty($device->device_type)){
  39. $this->addBox($device);
  40. Log::info('有数据'.$device->device_type);
  41. } else {
  42. Log::info('没数据'.$device->device_type);
  43. }
  44. return true;
  45. }
  46. public function addBox($device){
  47. $lock_config = SystemConfig::get('lock_config');
  48. $device->device_type == DeviceInfo::BOXFOUR ? $n = 5 : $n = 6;
  49. $now = date('Y-m-d H:i:s',time());
  50. $lcount = LockInfo::where(['device_id' =>$device->id])->count();
  51. Log::info('现有多少个·'.$lcount);
  52. if($lcount == 0){
  53. for($i=1;$i<=$n;$i++){
  54. $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>1,'open_time'=>$lock_config['am_open'],'close_time'=>$lock_config['am_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
  55. LockInfo::insert($data);
  56. $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>2,'open_time'=>$lock_config['pm_open'],'close_time'=>$lock_config['pm_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
  57. LockInfo::insert($data);
  58. }
  59. } else {
  60. if($device->device_type == 1){
  61. LockInfo::where(['device_id'=>$device->id,'box_type'=>6])->delete();
  62. } else {
  63. $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>1,'open_time'=>$lock_config['am_open'],'close_time'=>$lock_config['am_close'],'start_time'=>$now,'box_type'=>6,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
  64. LockInfo::insert($data);
  65. $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>2,'open_time'=>$lock_config['pm_open'],'close_time'=>$lock_config['pm_close'],'start_time'=>$now,'box_type'=>6,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
  66. LockInfo::insert($data);
  67. }
  68. }
  69. $schedule = new Schedule();
  70. $schedule->command(SendDeviceRule::class, [$device->id, 1])->everyMinute();
  71. return true;
  72. }
  73. }