From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/lib/videoPlay/js/hkDeviceControl.js |  237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 237 insertions(+), 0 deletions(-)

diff --git a/public/map/lib/videoPlay/js/hkDeviceControl.js b/public/map/lib/videoPlay/js/hkDeviceControl.js
new file mode 100644
index 0000000..0ecfe3a
--- /dev/null
+++ b/public/map/lib/videoPlay/js/hkDeviceControl.js
@@ -0,0 +1,237 @@
+function HkDevice(appKey, appSecret) {
+  this.appKey = appKey; //在萤石云获取
+  this.appSecret = appSecret; //在萤石云获取
+  this.accessToken = null;
+  this.livelist = null;
+  this.devicelist = null;
+  this.cameralist = null;
+  this.post = function(url, data, success) {
+    jQuery.ajax({
+      sender: this,
+      type: "POST",
+      url: url,
+      data: data,
+      dataType: "json",
+      success: function(data) {
+        success(this.sender, data);
+      }
+    });
+  };
+
+  /**
+   * 根据appKey和secret获取accessToken
+   * @param {function} ret 异步回调请求结果
+   */
+  this.getAccessToken = function(ret) {
+    this.post(
+      "https://open.ys7.com/api/lapp/token/get",
+      { appKey: this.appKey, appSecret: this.appSecret },
+      function(sender, data) {
+        if (data.code == "200") {
+          sender.accessToken = data.data.accessToken;
+        }
+        ret(data);
+      }
+    );
+  };
+
+  /**
+   * 获取用户下直播视频列表
+   * @param {function} ret 异步回调请求结果
+   */
+  this.getLiveVideoList = function(ret) {
+    this.post(
+      "https://open.ys7.com/api/lapp/live/video/list",
+      { accessToken: this.accessToken, pageStart: "0", pageSize: "50" },
+      function(sender, data) {
+        if (data.code == "200") {
+          sender.livelist = data.data;
+        }
+        ret(data);
+      }
+    );
+  };
+
+  /**
+   * 获取设备列表
+   * @param {function} ret 异步回调请求结果
+   */
+  this.getDeviceList = function(ret) {
+    this.post(
+      "https://open.ys7.com/api/lapp/device/list",
+      { accessToken: this.accessToken, pageStart: "0", pageSize: "50" },
+      function(sender, data) {
+        if (data.code == "200") {
+          sender.devicelist = data.data;
+        }
+        ret(data);
+      }
+    );
+  };
+
+  /**
+   * 获取摄像头列表
+   * @param {function} ret 异步回调请求结果
+   */
+  this.getCamerasList = function(ret) {
+    var mPageStart = "0";
+    var mPageStartIndex = 0;
+    var mCamerasList = {
+      code: "200",
+      data: []
+    };
+    var cl_this = this;
+
+    function mGetCamerasList() {
+      cl_this.post(
+        "https://open.ys7.com/api/lapp/camera/list",
+        {
+          accessToken: cl_this.accessToken,
+          pageStart: mPageStart,
+          pageSize: "50"
+        },
+        function(sender, data) {
+          if (data.code == "200") {
+            mCamerasList.data = mCamerasList.data.concat(data.data);
+            mPageStartIndex++;
+            if (data.page.total > mPageStartIndex * 50) {
+              mPageStart = mPageStartIndex + "";
+              mGetCamerasList();
+            } else {
+              sender.cameralist = mCamerasList.data;
+              ret(mCamerasList);
+            }
+          }
+        }
+      );
+    }
+
+    mGetCamerasList();
+  };
+
+  /**
+   * 开始云台控制
+   * @param {Object} option
+   * {deviceSerial:设备序列号,
+   * channelNo:通道号,
+   * direction:镜像方向:操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距。   ,
+   * speed:云台速度:0-慢,1-适中,2-快}
+   * @param {function} ret 异步回调请求结果
+   */
+  this.setPtzTurn = function(option, ret) {
+    if (
+      !(
+        option.deviceSerial &&
+        option.channelNo &&
+        option.direction != undefined &&
+        option.speed
+      )
+    ) {
+      ret();
+      return;
+    }
+    this.post(
+      "https://open.ys7.com/api/lapp/device/ptz/start",
+      {
+        accessToken: this.accessToken,
+        deviceSerial: option.deviceSerial,
+        channelNo: option.channelNo,
+        direction: option.direction,
+        speed: option.speed
+      },
+      function(sender, data) {
+        if (data.code == "200") {
+        }
+        ret(data);
+      }
+    );
+  };
+
+  /**
+   * 停止云台控制
+   * @param {Object} option
+   * {deviceSerial:设备序列号,
+   * channelNo:通道号}
+   * @param {function} ret 异步回调请求结果
+   */
+  this.setPtzStop = function(option, ret) {
+    if (!(option.deviceSerial && option.channelNo)) {
+      ret();
+      return;
+    }
+    this.post(
+      "https://open.ys7.com/api/lapp/device/ptz/stop",
+      {
+        accessToken: this.accessToken,
+        deviceSerial: option.deviceSerial,
+        channelNo: option.channelNo
+      },
+      function(sender, data) {
+        if (data.code == "200") {
+        }
+        ret(data);
+      }
+    );
+  };
+  /**
+   * 镜像翻转
+   * @param {Object} option
+   * {deviceSerial:设备序列号,
+   * channelNo:通道号,
+   * command:镜像方向:0-上下, 1-左右, 2-中心}
+   * @param {function} ret 异步回调请求结果
+   */
+  this.setPtzMirror = function(option, ret) {
+    if (!(option.deviceSerial && option.channelNo && option.command)) {
+      ret();
+      return;
+    }
+    this.post(
+      "https://open.ys7.com/api/lapp/device/ptz/stop",
+      {
+        accessToken: this.accessToken,
+        deviceSerial: option.deviceSerial,
+        channelNo: option.channelNo,
+        command: option.command
+      },
+      function(sender, data) {
+        if (data.code == "200") {
+        }
+        ret(data);
+      }
+    );
+  };
+
+  /**
+   * 根据时间获取历史影像
+   * @param {Object} option
+   * {deviceSerial:设备序列号,
+   * channelNo:通道号,
+   * startTime:起始时间,时间格式为:1378345128000。非必选,默认为当天0点
+   * endTime:结束时间,时间格式为:1378345128000。非必选,默认为当前时间
+   * recType:回放源,0-系统自动选择,1-云存储,2-本地录像。非必选,默认为0
+   * @param {function} ret 异步回调请求结果
+   */
+  this.getPlaybackRecord = function(option, ret) {
+    if (!option.deviceSerial) {
+      ret();
+      return;
+    }
+    this.post(
+      "https://open.ys7.com/api/lapp/video/by/time",
+      {
+        accessToken: this.accessToken,
+        deviceSerial: option.deviceSerial,
+        channelNo: option.channelNo,
+        //"startTime":option.startTime,
+        //"endTime":option.endTime,
+        recType: 0
+      },
+      function(sender, data) {
+        if (data.code == "200") {
+        }
+        ret(data);
+      }
+    );
+  };
+}

--
Gitblit v1.9.3