IndexController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Model\DeviceInfo;
  4. use App\Model\LockInfo;
  5. use App\Model\SystemConfig;
  6. use App\Server\DeviceServer;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Blade;
  9. use Illuminate\Support\Facades\Cache;
  10. use QL\QueryList;
  11. class IndexController extends Controller
  12. {
  13. public function testOpreation(Request $request)
  14. {
  15. $id = $request->get('id');
  16. $device = DeviceInfo::where(['device_name'=>$id])->first();
  17. if($device->type == 1){
  18. $img = SystemConfig::get('lock_config','box_img_four');
  19. } else {
  20. $img = SystemConfig::get('lock_config','box_img_five');
  21. }
  22. $rule = json_decode($device->lock_rule);
  23. foreach ($rule as $key=>$box){
  24. $device_box[] = $key;
  25. }
  26. return view('test_opreation',['img'=>$img,'id'=>$id]);
  27. }
  28. function object_array($array) {
  29. if(is_object($array)) {
  30. $array = (array)$array;
  31. }
  32. if(is_array($array)) {
  33. foreach($array as $key=>$value) {
  34. $array[$key] = object_array($value);
  35. }
  36. }
  37. return $array;
  38. }
  39. //下发协议
  40. public function send_protocol()
  41. {
  42. $type = request('type');
  43. $id = request('id');
  44. $device = DeviceInfo::where('device_name',$id)->first();
  45. $cache_key = $id .'rule_type';
  46. $re_type = Cache::get($cache_key);
  47. // return json_encode(['code'=>200,'msg'=>'下发命令成功','data'=>[]]);
  48. //dd($re_type);
  49. $time1 = 180;//3分钟定时
  50. $opt = 180;
  51. $cpt = 240;
  52. if(empty($type) || empty($id)){
  53. return json_encode(['code'=>601,'msg'=>'缺少必要参数']);
  54. }
  55. if(empty($device)){
  56. return json_encode(['code'=>602,'msg'=>'设备不存在']);
  57. }
  58. // echo '缓存类型--'.$re_type.' 当前类型:--'.$type;
  59. if(empty($re_type)){
  60. if($type == 4) Cache::put($cache_key,4,$time1);
  61. } else {
  62. if($type != $re_type) return json_encode(['code'=>603,'msg'=>'设备下发协议冲突']);
  63. }
  64. // return json_encode(['code'=>200,'msg'=>'不重复']);
  65. switch ($type){
  66. case 1;
  67. $rule = ['cmd'=>'start_test'];
  68. break;
  69. case 2;
  70. $rule = ["cmd"=>"stop_test"];
  71. break;
  72. case 3;
  73. $open_time = date('H:i',(time() + $opt));
  74. $close_time = date('H:i',(time() + $cpt));
  75. $start_time = date('Y-m-d H:i:s',(time() - 60));
  76. $lock_rule = json_decode($device->lock_rule);
  77. foreach ($lock_rule as $box_name){
  78. sleep(22);
  79. $rule = [$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
  80. $res = (new DeviceServer())->sendMsg($device->device_name ,$rule);
  81. }
  82. break;
  83. case 4;
  84. $box_name = request('box_name');
  85. if(empty($box_name)){
  86. return json_encode(['code'=>601,'msg'=>'缺少必要参数']);
  87. }
  88. $open_time = date('H:i',(time() + $opt));
  89. $close_time = date('H:i',(time() + $cpt));
  90. $start_time = date('Y-m-d H:i',(time() - 60));
  91. $rule = ['box'.$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>''],],'query'=>3600];
  92. break;
  93. }
  94. // $rule = ["cmd"=>"stop_test"];
  95. // dd(json_encode($rule));
  96. if($type != 3){
  97. $res = (new DeviceServer())->sendMsg($device->device_name,json_encode($rule));
  98. }
  99. if($res['Success'] == true){
  100. return json_encode(['code'=>200,'msg'=>'下发命令成功']);
  101. } else {
  102. return json_encode(['code'=>400,'msg'=>'下发命令失败']);
  103. }
  104. }
  105. //获取设备信息
  106. public function get_boxname()
  107. {
  108. $id = request('id');
  109. $device = DeviceInfo::where('device_name',$id)->first();
  110. if(empty($device)){
  111. return json_encode(['code'=>200,'msg'=>'ok','data'=>[]]);
  112. }
  113. $lock_config = SystemConfig::get('lock_config');
  114. $data['id'] = $device->id;
  115. $data['device_name'] = $device->device_name;
  116. $data['device_type'] = $device->device_type;
  117. if($device->device_type == 1){
  118. $data['device_image'] = $lock_config['box_img_four'];
  119. } else {
  120. $data['device_image'] = $lock_config['box_img_five'];
  121. }
  122. $data['device_image'] = '';
  123. return json_encode(['code'=>200,'msg'=>'ok','data'=>$data]);
  124. }
  125. }