Device.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?php
  2. namespace app\green\controller;
  3. use app\common\model\SystemUser;
  4. use app\green\model\GreenAlarm;
  5. use app\green\model\GreenDevice;
  6. use think\facade\Request;
  7. use think\facade\Validate;
  8. use think\helper\Time;
  9. class Device extends Common{
  10. public function initialize(){
  11. parent::initialize();
  12. $this->assign('pathMaps',[['name'=>'设备管理','url'=>url("green/device/index")]]);
  13. }
  14. /**
  15. * 列表
  16. */
  17. public function index(int $types = 0,int $operate_id = 0){
  18. $condition = [];
  19. if($this->founder){
  20. if($operate_id > 0){
  21. $condition[] = ['operate_id','=',$operate_id];
  22. }
  23. }else{
  24. $condition[] = ['operate_id','=',$this->operate_id];
  25. }
  26. $time = Request::param('time/d',0);
  27. $starttime = Request::param('starttime/s');
  28. $endtime = Request::param('endtime/s');
  29. if($time){
  30. switch ($time) {
  31. case 2:
  32. list($start, $end) = Time::yesterday();
  33. break;
  34. case 30:
  35. list($start, $end) = Time::month();
  36. break;
  37. case 60:
  38. list($start, $end) = Time::lastMonth();
  39. break;
  40. default:
  41. list($start, $end) = Time::today();
  42. break;
  43. }
  44. $condition[] = ['create_time','>=',$start];
  45. $condition[] = ['create_time','<=',$end];
  46. }else{
  47. if($starttime){
  48. $condition[] = ['create_time','>=',strtotime($starttime)];
  49. }
  50. if($endtime){
  51. $condition[] = ['create_time','<=',strtotime($endtime)];
  52. }
  53. }
  54. $keyword = Request::param('keyword/s');
  55. if(!empty($keyword)){
  56. $condition[] = ['title|device_id','like','%'.$keyword.'%'];
  57. }
  58. $view['alarm_num'] = GreenAlarm::where($this->mini_program)->where($condition)->where(['state' => 0])->count();
  59. $view['line_num'] = GreenDevice::where($this->mini_program)->where($condition)->where(['state' => 0])->count();
  60. $view['off_line_num'] = GreenDevice::where($this->mini_program)->where($condition)->where(['state' => 1])->count();
  61. $view['lists'] = GreenDevice::where($this->mini_program)->where($condition)->where(['state' => $types ? 1 : 0])->order('id desc')->paginate(20, false, ['query' => ['types' => $types, 'starttime' => $starttime, 'endtime' => $endtime, 'time' => $time, 'operate_id' => $operate_id]]);
  62. $view['keyword'] = $keyword;
  63. $view['types'] = $types;
  64. $view['operate_id'] = $operate_id;
  65. $view['time'] = $time;
  66. $view['starttime'] = $starttime;
  67. $view['endtime'] = $endtime;
  68. return view()->assign($view);
  69. }
  70. /**
  71. * 告警列表
  72. */
  73. public function alarm(int $id = 0){
  74. $view['lists'] = GreenAlarm::where($this->mini_program)->where(['device_id' => $id])->order('create_time desc')->paginate(20, false, ['query' => ['id' => $id]]);
  75. return view()->assign($view);
  76. }
  77. /**
  78. * 设备地图
  79. */
  80. public function deviceMap(int $id = 0,int $types = 0,int $operate_id = 0){
  81. $condition = [];
  82. if($this->founder){
  83. if($operate_id > 0){
  84. $condition[] = ['operate_id','=',$operate_id];
  85. }
  86. }else{
  87. $condition[] = ['operate_id','=',$this->operate_id];
  88. }
  89. $keyword = Request::param('keyword/s');
  90. if(!empty($keyword)){
  91. $condition[] = ['title|device_id','like','%'.$keyword.'%'];
  92. }
  93. if(empty($id)){
  94. $list = GreenDevice::where($this->mini_program)->where($condition)->where(['state' => $types ? 1 : 0])->field("id,longitude,latitude,title,device_id")->select();
  95. }else{
  96. $list = GreenDevice::where($this->mini_program)->where(['id' => $id])->field("id,longitude,latitude,title,device_id")->find();
  97. $list->danger;
  98. }
  99. foreach ($list as $key => $value){
  100. if(!empty($value->danger)){
  101. $list[$key]->danger = 1;
  102. }
  103. }
  104. $view['list'] = json_encode($list);
  105. $view['id'] = $id;
  106. $view['types'] = $types;
  107. $view['keyword'] = $keyword;
  108. $view['operate_id'] = $operate_id;
  109. return view()->assign($view);
  110. }
  111. /**
  112. * 选择所属用户
  113. */
  114. public function selectManage(){
  115. $keyword = Request::param('keyword');
  116. $input = Request::param('input');
  117. $condition = [];
  118. if(!empty($keyword)){
  119. if(Validate::isMobile($keyword)){
  120. $condition[] = ['phone_uid','=',$keyword];
  121. }else{
  122. $condition[] = ['nickname','like','%'.$keyword.'%'];
  123. }
  124. }
  125. $view['list'] = SystemUser::where($this->mini_program)->where($condition)->order('id desc')->paginate(10,false,['query' => ['input' => $input,'keyword' => $keyword]]);
  126. $view['keyword'] = $keyword;
  127. $view['input'] = $input;
  128. $view['id'] = $this->member_miniapp_id;
  129. return view()->assign($view);
  130. }
  131. //编辑
  132. public function edit(){
  133. if(request()->isAjax()){
  134. $data = [
  135. 'id' => Request::param('id/d'),
  136. 'member_miniapp_id' => $this->member_miniapp_id,
  137. 'device_id' => Request::param('device_id/s'),
  138. 'manage_uid' => Request::param('manage_uid/d', 0),
  139. 'operate_id' => $this->founder ? Request::param('operate_id/d') : $this->operate_id,
  140. 'title' => Request::param('title/s'),
  141. 'address' => Request::param('address/s'),
  142. 'longitude' => Request::param('longitude/s'),
  143. 'latitude' => Request::param('latitude/s'),
  144. ];
  145. $validate = $this->validate($data,'GreenDevice.edit');
  146. if(true !== $validate){
  147. return json(['code'=>0,'msg'=>$validate]);
  148. }
  149. $device = GreenDevice::where(['device_id' => $data['device_id']])->find();
  150. $result = 0;
  151. if(empty($data['id']) && empty($device)){
  152. $data['create_time'] = time();
  153. $data['update_time'] = time();
  154. $result = GreenDevice::create($data);
  155. }else if($device->id == $data['id']){
  156. $result = GreenDevice::where(['id' => $data['id']])->update($data);
  157. }
  158. if($result){
  159. return enjson(200,'操作成功',['url'=>url('device/index')]);
  160. }else{
  161. return enjson(0,'操作失败');
  162. }
  163. }else{
  164. $view['info'] = GreenDevice::where($this->mini_program)->where(['id' => $this->request->param('id/d')])->find();
  165. return view()->assign($view);
  166. }
  167. }
  168. //删除
  169. public function delete(int $id){
  170. $result = GreenDevice::destroy($id);
  171. if($result){
  172. return enjson(200,'操作成功');
  173. }else{
  174. return enjson(0,'操作失败');
  175. }
  176. }
  177. /**
  178. * 根据地址位置转换
  179. * @return void
  180. */
  181. public function baidu($address){
  182. $view['address'] = $address;
  183. return view()->assign($view);
  184. }
  185. }