Index.php 8.4 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', 4)->field('id,name')->select();
        $this->success('成功', $data);
    }

    // 获取水库列表
    public function reservoir()
    {
        $city = input('get.city');
        $data = Db::name('reservoir_list')->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("删除失败");
        }
    }

}

;