alarmRecordsModel = $alarmRecordsModel; } /** * 列表 * @time 2021年05月27日 11:20 * @param Request $request */ public function index(Request $request) : \think\Response { return CatchResponse::paginate($this->alarmRecordsModel->getList()); } /** * 保存信息 * @time 2021年05月27日 11:20 * @param Request $request */ public function save(Request $request) : \think\Response { return CatchResponse::success($this->alarmRecordsModel->storeBy($request->post())); } /** * 保存处理记录 * @time 2021年05月27日 11:20 * @param Request $request */ public function handleAlarm(Request $request) : \think\Response { $params=$request->post(); $params['end_time']=time(); $params['state']='end'; $params['handler_id']=$request->user()->id; $res=$this->alarmRecordsModel ->where('device_number',$params['device_number']) ->where('state','start') ->whereIn('alarm_reason',['press','fence_in','fence_out']) ->update($params); if($res){ //2表示已出警' $count=$this->alarmRecordsModel ->where('device_number',$params['device_number']) ->where('state','start') ->where('alarm_reason','low_bat') ->count(); if(!$count){ Db::table('devices')->where('imei', $params['device_number'])->update(['alarm_state' => 0]); } } return CatchResponse::success($res); } /** * 读取 * @time 2021年05月27日 11:20 * @param $id */ public function read($id) : \think\Response { return CatchResponse::success($this->alarmRecordsModel->findBy($id)); } /** * 更新 * @time 2021年05月27日 11:20 * @param Request $request * @param $id */ public function update(Request $request, $id) : \think\Response { $params=$request->post(); $params['end_time']=time(); $params['state']='end'; $params['handler_id']=$request->user()->id; $res=$this->alarmRecordsModel->updateBy($id, $params); if($res){ $device_number=$this->alarmRecordsModel->where('id', $id)->value('device_number'); $where = ['device_number'=>$device_number,'state'=>'start']; $count=$this->alarmRecordsModel->where($where)->count(); if(!$count){ Db::table('devices')->where('imei', $device_number)->update(['alarm_state' => 0]); } } return CatchResponse::success($res); } /** * 删除 * @time 2021年05月27日 11:20 * @param $id */ public function delete($id) : \think\Response { return CatchResponse::success($this->alarmRecordsModel->deleteBy($id)); } /** * 根据用户获取设备的相关列表 * * @param Request $request * @return void */ public function getAlarmRecordsbyId(Request $request) { $data=$request->param(); $userid=$request->param('creator_id'); $state = $request->param('state'); if(empty($data['limit'])) { $data["limit"] = 10; } if(empty($data['page'])) { $data["page"] = 1; } $type_id = Db::name("sys_dict_type")->where('code','AlarmType')->value('id'); $where[]=['d.bind_id','=',$userid]; //$where[]=['a.handler_id','=',0]; $where[] = ['a.state','=',$state]; //获取告警原因 $list = Db::name("devices")->where($where) ->alias("d")->leftJoin('alarm_records a','d.imei=a.device_number') ->leftJoin('sys_dict_data s','s.code=a.alarm_reason') ->field('a.device_number as device_number,a.start_time as start_time,a.end_time as end_time,s.value as alarm_reason,a.id as id,a.result as result') ->limit($data['limit']) ->page($data["page"]) ->select()->toArray(); $total=Db::name("devices") ->alias("d")->leftJoin('alarm_records a','d.imei=a.device_number') ->where($where)->count(); $da = [ 'list'=>$list, 'total'=>$total ]; return CatchResponse::success($da); } /** * 微信获取告警详情 * @param Request $request * @return void */ public function getAlarmDetail(Request $request) { //告警信息id $id=$request->param('id'); $userid=$request->param('creator_id'); $alarmRecords=Db::name('alarm_records')->where('id',$id)->find(); $device = Db::name("devices")->where('imei',$alarmRecords["device_number"])->find(); if(empty($device)) { return CatchResponse::fail('该设备不存在'); } if($device["bind_id"]!=$userid) { return CatchResponse::fail('该设备未和您的账号绑定'); } //用户的详细信息 $user = Db::name("users")->where("id",$userid)->find(); //部门信息 $department =Department::where('id',$user['department_id'])->find(); if(empty($department)) { $department['department_name'] = null; } //获取告警类型 $type_id = Db::name("sys_dict_type")->where('code','AlarmType')->value('id'); $reason = Db::name("sys_dict_data") ->where([["type_id","=", $type_id],['code','=',$alarmRecords['alarm_reason']]]) ->value('value'); $user_info = [ 'device_name'=>$device['name'], 'imei'=>$device['imei'], 'department_name'=>$department["department_name"], 'realname'=>$user['realname'], 'phone' =>$user['phone'], 'last_online_time'=>$device["online_time"], 'status'=>$alarmRecords["state"], 'reason'=> $reason, 'comment'=>$alarmRecords["comment"], 'end_time'=>$alarmRecords['end_time'] ]; return CatchResponse::success($user_info); } }