row->id; $device_name = $this->row->device_name; $box_info = LockInfo::where(['device_id'=>$id])->get(); if(!empty($box_info)){ $device_name = DeviceInfo::where(['id'=>$id])->value('device_name'); if(empty($device_name)) return true; $lock_info = LockInfo::where(['device_id'=>$id,'status'=>1])->orderBy('box_type','asc')->get()->GroupBy('box_type'); foreach ($lock_info as $lock){ foreach ($lock as $protol){ $send_rule["box".$protol->box_type][] = [ 'open'=>$protol->open_time, 'close'=>$protol->close_time, 'start'=>$protol['start_time'], 'type'=>$protol['type'], 'value'=>$protol['value'] ]; } $send_rule['query'] = 3600; $res = (new DeviceServer())->sendMsg(868626044260472 ,json_encode($send_rule)); sleep('20'); Log::info('执行规则'.json_encode($send_rule).PHP_EOL); } foreach ($box_info as $box){ $box_name = $box->name; $lock_info = LockInfo::where(['box_id'=>$box->id,'status'=>1])->get(); $rule = []; foreach ($lock_info as $val){ $rule[$box_name][] = [ 'open'=>$val->open_time, 'close'=>$val->close_time, 'start'=>$val->start_time, 'type'=>$val->type, 'value'=>$val->value, ]; } if(!empty($rule)){ $rule['query'] = 1800; Log::info(json_encode($rule).PHP_EOL); $res = (new DeviceServer())->sendMsg($device_name,json_encode($rule)); if($res['Success'] != true){ return $this->response()->error($box_name.'下发失败'); continue; } sleep(22); } } return $this->response()->success('下发成功')->refresh(); } } }