IndexController.php 5.8 KB

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