Warning.php 11.0 KB
<?php

namespace app\api\controller\reservoir\hkws;

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);
    }


}