Index.php 8.5 KB
<?php
namespace app\api\controller\video;

use app\common\controller\Apiadmin;
use think\Db;
use app\admin\model\reservoir\Reservoirlist;
use app\admin\model\reservoir\hkws\Hardware;

/**
* 视频监控平台接口
*/
class Index extends Apiadmin
{

// 无需登录的接口,*表示全部
protected $noNeedLogin = ['*'];
// 无需鉴权的接口,*表示全部
protected $noNeedRight = [''];


    // 左侧树形图
    public function tree()
    {
    
            $mode = new Reservoirlist();
            $name = input('get.name');
            $res = $mode->where('construction_unit', $name)
                        ->field('id,name')
                        ->select();
            return $this->success('成功',$res);
    }
    
    // 设备数量
    public function quantity()
    {   
        $mode = new Hardware();
        $reservoir = input('get.reservoir');
        $sum = count($mode->where('reservoir_id', $reservoir)->select());
        $exist = count($mode->where('reservoir_id', $reservoir)->where('status', 1)->select());
        $line = count($mode->where('reservoir_id', $reservoir)->where('status', 2)->select());
        
        $data = [
            "sum"=>$sum,
            "exist"=>$exist,
            "line"=>$line
            ];            
        return $this->success('成功',$data);
    }

    // 今日预警统计
    public function early()
    {
         $reservoir = input('get.reservoir');
         $normal = count(Db::name('reservoir_hkws_warning')->where('reservoir_id',$reservoir)->where('type',2)->select());
         $abnormal = count(Db::name('reservoir_hkws_warning')->where('reservoir_id',$reservoir)->where('type',1)->select());
         $data = [
             "normal"=>$normal,
             "abnormal"=>$abnormal
             ];
         $this->success('成功',$data);
    }
    
    // 人员入侵预警
    public function perEarly()
    {
        // $monitor = input('get.monitor');
        $code = input('get.code');
        $monitor = Db::name('reservoir_hkws_hardware')->where('indexCode',$code)->field('scode')->find();
        $monitor = $monitor['scode'];
    
        // 水库ID
        $id = Db::name('reservoir_hkws_warning')->where('scode',$monitor)->field('reservoir_id')->find();
        
        $reservoir = Db::name('reservoir_list')->where('id',$id['reservoir_id'])->field('name,address')->select();
        $monitoring = Db::name('reservoir_hkws_hardware')->where('scode',$monitor)->field('name')->select();
        $record = count(Db::name('reservoir_hkws_warning')->where('scode',$monitor)->where('type',1)->select());
        $date = Db::name('reservoir_hkws_warning')->where('scode',$monitor)->order('id desc')->field('createtime')->find();
        // var_dump($date['createtime']);exit;
        $date = date("Y-m-d",$date['createtime']);
        
        if (empty($reservoir)) {
            $reservoir = '没有数据';
            $monitoring = '没有数据';
            $record = '没有数据';
            $date = '没有数据';
        }
        
        $data = [
            // 水库名称
             "reservoir"=> $reservoir,
            //  监控名称
             "monitoring"=> $monitoring,
            //  入侵记录次数
             "record"=> $record,
            // 入侵时间
             "date"=> $date
             ];
         $this->success('成功',$data);
    }
    



    // 历史记录页
    // 获取城市列表
    public function city()
    {
        $data = Db::name('reservoir_county')->where('id',1)->field('id,name')->select();
        $this->success('成功',$data);
    }
    
    // 获取水库列表
    public function reservoir()
    {
        $city = input('get.city');
        $data = Db::name('reservoir_list')->where('county_id',$city)->field('id,name')->select();
        $this->success('成功',$data);
    }
    
    
    // 获取监控列表
    public function monitor()
    {   
         $reservoir = input('get.reservoir');
         $data = Db::name('reservoir_hkws_hardware')->where('reservoir_id',$reservoir)->field('id,name,scode')->select();
         $this->success('成功',$data);
    }

    /**
     * 获取监控列表
     * kevin
     */
    public function monitor2()
    {
        $reservoir = input('get.reservoir');
        $data = Db::name('reservoir_hkws_hardware')->where('reservoir_id',$reservoir)->field('id,name,indexCode as scode')->select();
        $this->success('成功',$data);
    }
    
    // 设备入侵记录
    public function history()
    {
        
        $monitor = input('get.monitor');
        $page = input('get.page');
        
      
        

        $data = Db::name('reservoir_hkws_warning')->alias('a')
        ->join('reservoir_hkws_hardware b ','b.reservoir_id= a.reservoir_id')
        ->join('reservoir_list c ','c.id= a.reservoir_id')
        ->where('a.scode', $monitor)
        ->where('b.scode', $monitor)
        ->field('a.scode,a.type,a.createtime as invtime ,b.name,b.createtime,c.name as reservoir')
        ->page($page,10)
        ->select();
        
        
            
        return $this->success('成功',$data);
    }

    /**
     * 设备入侵记录
     * kevin
     */
    public function history2()
    {

        $monitor = input('get.monitor');
        $page = input('get.page');

        $data = Db::name('reservoir_hkws_alarm_monitoring')->alias('a')
            ->join('reservoir_hkws_hardware b ','b.indexCode= a.cameraIndexCode')
            ->join('reservoir_list c ','c.id= a.reservoir_list_id')
            ->where('a.cameraIndexCode', $monitor)
            ->where('b.indexCode', $monitor)
            ->field('a.id,a.cameraIndexCode,a.alarm_type,a.alarmimage,a.createtime,b.name,c.name as reservoir')
            ->order("a.createtime desc")
            ->page($page,7)
            ->select();

        $model = new \app\admin\model\reservoir\hkws\AlarmMonitoring();
        $typeList = ['LINE_CROSSING_DETECTION' =>"越界侦测", 'REGION_ENTRANCE_DETECTION' => "进入区域", 'INTRUSION_DETECTION' =>"区域入侵"];
        $colorList = ['LINE_CROSSING_DETECTION' => "color:#ffdb5c;", 'REGION_ENTRANCE_DETECTION' => "color:#32c5e9;", 'INTRUSION_DETECTION' => "color:#ff9f7f;"];
        if (!empty($data)) {
            foreach ($data as $k => $v) {
                $data[$k]['alarmimage'] = $v['alarmimage'] ? "https://qiniu.ynzhsk.cn" . $v['alarmimage'] : $v['alarmimage'];
                $data[$k]['createtime'] = date("Y-m-d H:i:s", $v['createtime']);
                $data[$k]['alarm_type'] =$typeList[$v['alarm_type']];
            }
        }



        return $this->success('成功',$data);
    }
    
    // 设备入侵记录分页数量
    
    public function page()
    {
        $monitor = input('get.monitor');

        $res = count(Db::name('reservoir_hkws_warning')->alias('a')
        ->join('reservoir_hkws_hardware b ','b.reservoir_id= a.reservoir_id')
        ->join('reservoir_list c ','c.id= a.reservoir_id')
        ->where('a.scode', $monitor)
        ->where('b.scode', $monitor)
        ->select());
        
        $data = ceil($res/10);
        $fy = [];
        for ($i = 1; $i < $data + 1; $i++) {
             $fy[] = $i;
        }
         return $this->success('成功',$fy);
    }

    /**
     * 设备入侵记录分页数量
     * kevin
     */
    public function page2()
    {
        $monitor = input('get.monitor');

        $res = count(Db::name('reservoir_hkws_alarm_monitoring')->alias('a')
            ->join('reservoir_hkws_hardware b ','b.indexCode= a.cameraIndexCode')
            ->join('reservoir_list c ','c.id= a.reservoir_list_id')
            ->where('a.cameraIndexCode', $monitor)
            ->where('b.indexCode', $monitor)
            ->select());

        $data = ceil($res/7);
        $fy = [];
        for ($i = 1; $i < $data + 1; $i++) {
            $fy[] = $i;
        }
        return $this->success('成功',['list'=>$fy,"pages"=>$data]);
    }

    /**
     * 批量删除入侵报警
     */
    public function bat_delete_alarm_log(){
        $param = $this->request->param();
        if (empty($param['delete_ids'])) {
            $this->error("请先选择您要删除的报警数据");
        }
        $w = [];
        $w["id"] = ["in",$param['delete_ids']];
        //删除报警数据
        $res = Db::name("reservoir_hkws_alarm_monitoring")->where($w)->delete();
        if($res){
            //删除已读未读数据
            $w2= [];
            $w2["reservoir_hkws_alarm_monitoring_id"]=["in",$param['delete_ids']];
            Db::name("reservoir_hkws_alarm_monitoring_read")->where($w2)->delete();
            $this->success("删除成功");
        }else{
            $this->error("删除失败");
        }
    }

};