1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace App\Listeners;
- use App\Console\Commands\SendDeviceRule;
- use App\Model\DeviceBox;
- use App\Model\DeviceInfo;
- use App\Model\DeviceType;
- use App\Model\DeviceTypeBox;
- use App\Model\LockInfo;
- use App\Model\SystemConfig;
- use App\Server\DeviceServer;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Queue\InteractsWithQueue;
- use App\Events\DeviceEvent;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Console\Scheduling\Schedule;
- class DeviceEventListener
- {
- /**
- * Create the event listener.
- *
- * @return void
- */
- public function __construct()
- {
- //
- }
- /**
- * Handle the event.
- *
- * @param object $event
- * @return void
- */
- public function handle(DeviceEvent $event)
- {
- $device = $event->device;
- if(!empty($device->device_type)){
- $this->addBox($device);
- Log::info('有数据'.$device->device_type);
- } else {
- Log::info('没数据'.$device->device_type);
- }
- return true;
- }
- public function addBox($device){
- $lock_config = SystemConfig::get('lock_config');
- $device->device_type == DeviceInfo::BOXFOUR ? $n = 5 : $n = 6;
- $now = date('Y-m-d H:i:s',time());
- $lcount = LockInfo::where(['device_id' =>$device->id])->count();
- Log::info('现有多少个·'.$lcount);
- if($lcount == 0){
- for($i=1;$i<=$n;$i++){
- $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];
- LockInfo::insert($data);
- $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];
- LockInfo::insert($data);
- }
- } else {
- if($device->device_type == 1){
- LockInfo::where(['device_id'=>$device->id,'box_type'=>6])->delete();
- } else {
- $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];
- LockInfo::insert($data);
- $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];
- LockInfo::insert($data);
- }
- }
- $schedule = new Schedule();
- $schedule->command(SendDeviceRule::class, [$device->id, 1])->everyMinute();
- return true;
- }
- }
|