DeviceEventListener.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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\Artisan;
  16. use Illuminate\Support\Facades\DB;
  17. use Illuminate\Support\Facades\Log;
  18. use Illuminate\Console\Scheduling\Schedule;
  19. class DeviceEventListener
  20. {
  21. /**
  22. * Create the event listener.
  23. *
  24. * @return void
  25. */
  26. public function __construct()
  27. {
  28. //
  29. }
  30. /**
  31. * Handle the event.
  32. *
  33. * @param object $event
  34. * @return void
  35. */
  36. public function handle(DeviceEvent $event)
  37. {
  38. $device = $event->device;
  39. if(!empty($device->device_type)){
  40. $this->addBox($device);
  41. Log::info('有数据'.$device->device_type);
  42. } else {
  43. Log::info('没数据'.$device->device_type);
  44. }
  45. return true;
  46. }
  47. public function addBox($device){
  48. $lock_config = SystemConfig::get('lock_config');
  49. $type = $device->device_type;
  50. switch($type) {
  51. case DeviceInfo::BOXFOUR;
  52. $n = 4;
  53. break;
  54. case DeviceInfo::BOXFIVE;
  55. $n = 5;
  56. break;
  57. case DeviceInfo::BOXFOURRECYCLE;
  58. $n = 5;
  59. break;
  60. case DeviceInfo::BOXFIVERECYCLE;
  61. $n = 6;
  62. break;
  63. default;
  64. $n = 4;
  65. break;
  66. }
  67. $now = date('Y-m-d H:i:s',time());
  68. $lcount = LockInfo::where(['device_id' =>$device->id])->count();
  69. Log::info('现有多少个·'.$lcount);
  70. if($lcount != 0){
  71. LockInfo::where(['device_id'=>$device->id])->delete();
  72. }
  73. for($i=1;$i<=$n;$i++){
  74. $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];
  75. LockInfo::insert($data);
  76. $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];
  77. LockInfo::insert($data);
  78. }
  79. Log::info('----执行开始---');
  80. // Artisan::call('SDR 1 '.$device->id);
  81. // Artisan::call('email:send 1 --queue=default');
  82. // $schedule = new Schedule();
  83. // $schedule->command(SendDeviceRule::class, [1,$device->id]);
  84. Log::info('----执行结束---');
  85. return true;
  86. }
  87. }