Warning.php 11.0 KB
<?php

namespace app\api\controller\reservoir\hkws;
//允许所有的跨域请求
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: token,Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: POST,GET,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
header('Content-type:text/html; Charset=utf-8');
date_default_timezone_set('PRC');
use app\common\controller\Api;
use think\Request;
use think\Db;
use addons\alisms\controller\Index;
/**
 * Class Displacement
 * @package app\api\controller
 */
class Warning extends Api{
    protected $noNeedLogin = '*';
    protected $noNeedRight = '*';
    public function _initialize()
    {
        parent::_initialize();
        $this->model = new \app\admin\model\reservoir\hkws\Warning;
    }
    
    // public function choose($ids=null)
    // {
    //     $row = $this->model->get($ids);
    //     if (!$row) {
    //         $this->error('预警信息不存在');
    //     }
    //     if ($this->request->isPost()) {
    //         $user_id = $this->request->post('user_id','','trim');
    //         if (!$user_id) {
    //             $this->error('未选择用户');
    //         }
    //         $row->user_id = $user_id;
    //         $res = $row->save();
    //         if (!$res) {
    //             $this->error('派发失败');
    //         }
    //         $this->success('派发成功');
    //     }
       
    //     $userlist = \app\admin\model\inspection\Staff::field('user_id,staff_name,mobile,staff_code')->where('reservoir_id',$row->reservoir_id)->select();
    //     $this->success('',$userlist);        
    // }
    
    // public function toprocess($ids=null)
    // {
    //     $row = $this->model->get($ids);
    //     if (!$row) {
    //         $this->error('预警信息不存在');    
    //     }
    //     if ($row->status == 1){
    //         $this->error('预警信息已回复');
    //     }
    //     if ($row->user_id != $this->auth->id) {
    //         $this->error('预警不属于您');
    //     }
    //     $content = $this->request->param('content');
    //     if (!$content) {
    //         $this->error('请填写内容');
    //     }
    //     $row->remark = $content;
    //     $row->status = 1;
    //     $res = $row->save();
    //     if (!$res) {
    //         $this->error('处理失败');
    //     }
    //     $this->success('处理成功');
    // }
    
    
    
    private function writesmg($c=null,$r=null)
    {
        $model = new \app\admin\model\reservoir\Messagelog;
        $type =  ['sms','voice','wechat','app','dingding','qywechat'];
        $data=[];
        foreach ($type as $key=>$item){
            $data[$key]= [
                'type'=>$item,
                'reservoir_id'=>$r,
                'content'=>$c,
                'createtime'=> time(),
            ];
            
        }
        $model->allowField(true)->saveAll($data);
    }
    
    
    public function warning(){
        exit;
        // $hardwaremodel = new \app\admin\model\reservoir\hkws\Hardware;
        // $reservoir = $hardwaremodel->with('reservoirlist')->where('scode','=','iDS-2DC7423MW-AB20210402AACHF77587632')->find();
        // $reservoir = json_decode(json_encode($reservoir),true);
        //  //模板消息
        // $userid = Db::name('inspection_staff')->where('mobile','=',$reservoir['reservoirlist']['user_mobile'])->value('user_id');
        // if($userid){
        //     $openid = Db::name('user')->where('id','=',$userid)->value('openid');
        //     if($openid){
        //         $data = [
        //         'first'=> ['value'=>'水库警告','color'=>'#000000'],
        //         'keyword1'=>['value'=>$reservoir['reservoirlist']['name'],'color'=>'#000000'],
        //         'keyword2'=>['value'=>date('Y-m-d H:i',time()),'color'=>'#000000'],
        //         'keyword3'=>['value'=>'人员入侵预警!','color'=>'#000000'],
        //         'remark'=>['value'=>'设备监测到有人进入水库,请及时处理','color'=>'#000000'],
        //         ];
        //         $template_id = '001';
        //         $text =  \addons\weixin\library\WechatTemplateService::sendTemplateOrApp($openid,$template_id,$data); 
        //     } 
        //   }
        //   var_dump($text);exit;
        // $sms = new Index();
        // $res = $sms->send_param($reservoir['reservoirlist']['user_mobile'],'SMS_227747048','云南智慧水库安全云平台',array('password'=>$reservoir['reservoirlist']['name']));
        // exit;
        // $warning = $this->model->where('scode','=','iDS-2DC7423MW-AB20210402AACHF77587632')->order('createtime desc')->limit(1)->find();
        // var_dump((time()-$warning->createtime)>=600);exit;
        $xml = file_get_contents('php://input');//监听是否有数据传入
        if($xml!=''){//如果有数据传入,则将传入的数据写入到xml.txt文件
        libxml_disable_entity_loader(true);
        $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)),true);
        $warning = $this->model->where('scode','=',$arr['Extensions']['serialNumber'])->order('createtime desc')->limit(1)->find();
        if((time()-$warning->createtime)>=600){
        $hardwaremodel = new \app\admin\model\reservoir\hkws\Hardware;
        $reservoir = $hardwaremodel->with('reservoirlist')->where('scode','=',$arr['Extensions']['serialNumber'])->find();
        $reservoir = json_decode(json_encode($reservoir),true);
        $this->model->scode = $arr['Extensions']['serialNumber'];
        $this->model->type = '1';
        $this->model->reservoir_id = $reservoir['reservoir_id'];
        $this->model->save();
        //短信通知
        $sms = new Index();
        $res = $sms->send_param($reservoir['reservoirlist']['user_mobile'],'SMS_227747048','云南智慧水库安全云平台',array('password'=>$reservoir['reservoirlist']['name']));
        //微信模板消息
        $userid = Db::name('inspection_staff')->where('mobile','=',$reservoir['reservoirlist']['user_mobile'])->value('user_id');
        if($userid){
            $openid = Db::name('user')->where('id','=',$userid)->value('openid');
            if($openid){
                $data = [
                'first'=> ['value'=>'水库警告','color'=>'#000000'],
                'keyword1'=>['value'=>$reservoir['reservoirlist']['name'],'color'=>'#000000'],
                'keyword2'=>['value'=>date('Y-m-d H:i',time()),'color'=>'#000000'],
                'keyword3'=>['value'=>'人员入侵预警!','color'=>'#000000'],
                'remark'=>['value'=>'设备监测到有人进入水库,请及时处理','color'=>'#000000'],
                ];
                $template_id = '001';
                //$uri = Request::instance()->domain().'/index/index/updateWxtemplate?code='.$code.'&openid='.$openid;
                $text =  \addons\weixin\library\WechatTemplateService::sendTemplateOrApp($openid,$template_id,$data); 
            } 
          }
        //钉钉机器人发送消息
        \addons\dinghorn\Dinghorn::msgNotice(1,array(),array('shuiku_name'=>$reservoir['reservoirlist']['name']));
        // 企业微信发送消息
        $vbot = new \addons\vbot\Vbot();
        $vbot->vbotSendMsg(1, [], ['shuiku_name' => $reservoir['reservoirlist']['name'] ]);
        // 阿里云语音通知
        \addons\alisms\controller\Sample::sendsms($reservoir['reservoirlist']['user_mobile'],'TTS_227733591',['skm'=>$reservoir['reservoirlist']['name']]);
        $this->writesmg('水库入侵人员',$this->model->reservoir_id);
        }
      }
    }
    
    public function getList()
    {
        $scode = $this->request->param('scode');
        if(!$scode){
            $this->error('参数错误');
        }
        $page = $this->request->param('page',1);
        $total = $this->model
            ->alias('t1')
            ->join('reservoir_list t2','t1.reservoir_id=t2.id','LEFT')
            ->join('reservoir_hkws_hardware t3','t1.scode=t3.scode','LEFT')
            ->field('from_unixtime(t1.createtime,"%Y-%m-%d %H:%i") as crts,t2.name as reservoir_name,t3.name as equname ')
            ->where('t1.scode',$scode)
            ->count();
        $list = $this->model
            ->alias('t1')
            ->join('reservoir_list t2','t1.reservoir_id=t2.id','LEFT')
            ->join('reservoir_hkws_hardware t3','t1.scode=t3.scode','LEFT')
            ->field('from_unixtime(t1.createtime,"%Y-%m-%d %H:%i") as crts,t2.name as reservoir_name,t3.name as equname ')
            ->where('t1.scode',$scode)
            ->order('t1.id desc')
            ->page($page,10)
            ->select();
        $data = [
            'total'=>$total,
            'page'=> $page,
            'list'=>$list
            ];
        $this->success('',$data);
    }
        public function getList1()
    {
        $scode = $this->request->param('scode');
        if(!$scode){
            $this->error('参数错误');
        }
        $page = $this->request->param('page',1);
        $total = $this->model
            ->alias('t1')
            ->join('reservoir_list t2','t1.reservoir_id=t2.id','LEFT')
            ->join('reservoir_hkws_hardware t3','t1.scode=t3.scode','LEFT')
            ->field('from_unixtime(t1.createtime,"%Y-%m-%d %H:%i") as crts,t2.name as reservoir_name,t3.name as equname,indexCode')
            ->where('indexCode',$scode)
            ->count();
        $list = $this->model
            ->alias('t1')
            ->join('reservoir_list t2','t1.reservoir_id=t2.id','LEFT')
            ->join('reservoir_hkws_hardware t3','t1.scode=t3.scode','LEFT')
            ->field('from_unixtime(t1.createtime,"%Y-%m-%d %H:%i") as crts,t2.name as reservoir_name,t3.name as equname,indexCode')
            ->where('indexCode',$scode)
            ->order('t1.id desc')
            ->page($page,10)
            ->select();
        $data = [
            'total'=>$total,
            'page'=> $page,
            'list'=>$list
            ];
        $this->success('',$data);
    }
    
    public function list()
    {
        $list = $this->model
            ->alias('w')
            ->join('reservoir_list l','l.id=w.reservoir_id','left')
            ->join('reservoir_hkws_hardware hh','hh.scode=w.scode')
            ->field('w.id,l.name,hh.name as sbname,from_unixtime(w.createtime,"%Y-%m-%d %H:%i") as crts')
            ->order('w.createtime desc')
            ->limit(20)
            ->select();
        $this->success('',$list);
    }

    public function list2()
    {
        $list = Db::name('reservoir_hkws_alarm_monitoring')->alias('w')
            ->join('reservoir_list l','l.id=w.reservoir_list_id','left')
            ->join('reservoir_hkws_hardware hh','hh.indexCode=w.cameraIndexCode')
            ->field('w.id,l.name,hh.name as sbname,from_unixtime(w.createtime,"%m-%d %H:%i:%s") as crts')
            ->order('w.createtime desc')
            ->limit(20)
            ->select();
        $this->success('',$list);
    }
    
    //获取入侵总数 $id 水库id
    public function getCount($id){
        $count = $this->model->where('reservoir_id',$id)->count();
        $this->success('',$count);
    }
    
    
}