From 9072fdbdd4fdafcf529829df93327b1e1256f794 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期二, 06 一月 2026 14:44:08 +0800
Subject: [PATCH] 调整流媒体接口,增加流媒体节点查看功能

---
 fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml                 |   27 +++
 fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java                   |   11 +
 fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java               |    5 
 fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml             |   49 +++++++
 fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml                   |   11 +
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java      |   36 +++++
 fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html        |    1 
 fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js             |    6 
 fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java     |   19 ++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java      |    5 
 fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java |  232 +++++++++++----------------------
 fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java           |    7 +
 12 files changed, 251 insertions(+), 158 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java
index 25da229..389fc77 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java
@@ -24,6 +24,9 @@
     private String url;
     private Long expiresIn;
 
-    /*--------------鑾峰彇鐩存挱鍦板潃浣跨敤-------------*/
+    /*--------------鑾峰彇鐩戞帶鍒楄〃浣跨敤-------------*/
     private List<YdQlyCamera> device;
+
+    /*--------------鑾峰彇鐩戞帶鑺傜偣鍒楄〃浣跨敤-------------*/
+    private List<YdQlyNode> node;
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java
new file mode 100644
index 0000000..9dd9657
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java
@@ -0,0 +1,19 @@
+package com.fzzy.igds.camera.data.ydqly;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2026/1/4 16:54
+ */
+@Data
+public class YdQlyNode implements Serializable {
+
+    private String nodeId;    //鑺傜偣缂栫爜
+    private String nodeName;  //鑺傜偣鍚嶇О
+    private Integer hasChild; //鏄惁鏈夊瓙鑺傜偣
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java
index 33d8033..d858cf5 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java
@@ -5,6 +5,7 @@
 import com.fzzy.igds.camera.data.*;
 import com.fzzy.igds.camera.data.ydqly.YdQlyCamera;
 import com.fzzy.igds.camera.data.ydqly.YdQlyDto;
+import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
 import com.fzzy.igds.camera.data.ydqly.YdQlyResp;
 import com.fzzy.igds.constant.CameraPlayType;
 import com.fzzy.igds.constant.Constant;
@@ -41,7 +42,6 @@
      */
     private static final String URL_ACCESS_TOKEN = "https://open.qly.cmviot.cn/v3/open/api/token";
     private static final String URL_PLAY_LIVE = "https://open.qly.cmviot.cn/v3/open/api/websdk/live";
-
     private static final String URL_CAMERA_LIST = "https://open.qly.cmviot.cn/v3/open/api/node/tree";
 
     @Resource
@@ -79,6 +79,12 @@
         //鎺ュ彛鑾峰彇鎾斁鍦板潃
         YdQlyResp resp = getPlayUrl(cameraMedia, apiCameraDto.getCameraId());
 
+        if("11503".equals(resp.getResultCode()) || "11504".equals(resp.getResultCode())){
+            delAccessToken();
+
+            resp = getPlayUrl(cameraMedia, apiCameraDto.getCameraId());
+        }
+
         if(!"000000".equals(resp.getResultCode())){
             return new ApiCameraResp(ApiCameraResp.CODE_ERROR, resp.getResultMsg());
         }
@@ -101,17 +107,24 @@
         //鏌ヨ搴撳尯娴佸獟浣撻厤缃紝鑾峰彇搴撳尯鑺傜偣
         CameraMedia cameraMedia = cameraMediaService.getByDeptId(apiCameraDto.getDeptId(), apiCameraDto.getCompanyId());
         if(null == cameraMedia || StringUtils.isEmpty(cameraMedia.getYdStoreId())){
-            log.error("鑾峰彇鎽勫儚澶翠俊鎭け璐ワ紝搴撳尯鑺傜偣鏈厤缃紒");
+            log.error("鍚屾澶辫触锛屽簱鍖鸿妭鐐规湭閰嶇疆锛岃鍒板簱鍖洪厤缃�->娴佸獟浣撻厤缃紒");
             return null;
         }
 
-        String str = getCameraList(cameraMedia);
-        if(null== str){
-            log.error("鑾峰彇鎽勫儚澶翠俊鎭け璐ワ紝搴撳尯鑺傜偣鏈厤缃紒");
+        //鎺ュ彛鑾峰彇鎾斁鍦板潃
+        YdQlyResp resp = getCameraList(cameraMedia);
+
+        if("11503".equals(resp.getResultCode()) || "11504".equals(resp.getResultCode())){
+            delAccessToken();
+
+            resp = getCameraList(cameraMedia);
+        }
+
+        if(!"000000".equals(resp.getResultCode())){
             return null;
         }
 
-        YdQlyDto ydQlyDto = JSONObject.parseObject(str, YdQlyDto.class);
+        YdQlyDto ydQlyDto = JSONObject.parseObject(resp.getData(), YdQlyDto.class);
 
         if(null== ydQlyDto || null == ydQlyDto.getDevice()){
             log.error("鑾峰彇鎽勫儚澶翠俊鎭け璐ワ紝搴撳尯鑺傜偣鏈厤缃紒");
@@ -135,6 +148,14 @@
         return listCamera;
     }
 
+    /**
+     * 娓呴櫎token
+     */
+    private void delAccessToken() {
+        //璇锋竻闄oken
+        String key = RedisConst.buildKey(ContextUtil.getCompanyId(), Constant.KEY_ACCESS_TOKEN_YD_QLY);
+        redisCache.deleteObject(key);
+    }
 
     /**
      * 鑾峰彇accessToken
@@ -247,7 +268,7 @@
             String jsonString = JSONObject.toJSONString(herderParams);
 
             // 4. RSA绛惧悕
-            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
+            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
             PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
             PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
 
@@ -275,7 +296,7 @@
      * @param cameraMedia
      * @return
      */
-    private String getCameraList(CameraMedia cameraMedia) {
+    private YdQlyResp getCameraList(CameraMedia cameraMedia) {
         try {
 
             String timestamp = String.valueOf(System.currentTimeMillis());
@@ -302,7 +323,7 @@
             String jsonString = JSONObject.toJSONString(herderParams);
 
             // 4. RSA绛惧悕
-            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
+            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
             PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
             PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
 
@@ -318,43 +339,27 @@
             String response = HttpUtils.doPost(URL_CAMERA_LIST, herderParams, requestBodyStr);
 
             YdQlyResp ydQlyResp = JSONObject.parseObject(response, YdQlyResp.class);
-            if(!"000000".equals(ydQlyResp.getResultCode())){
-                return null;
-            }
-            return ydQlyResp.getData();
+            return ydQlyResp;
         } catch (Exception e) {
             return null;
         }
     }
 
-
-    private static final String TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJwcm9mZXNzaW9uIjoxLCJhcHBpZCI6ImUwYTFhNDIwZjU1YTRmOWRiYTBkNjM4MmRmNTlkYjY2Iiwib3BlcmF0b3JUeXBlIjoxLCJvcGVyYXRvciI6ImUwYTFhNDIwZjU1YTRmOWRiYTBkNjM4MmRmNTlkYjY2IiwianRpIjoiMjE4Nzk0MzMzMTE4NDM1NzM4NyIsImlhdCI6MTc2NzYxMDM3Mywic3ViIjoiZTBhMWE0MjBmNTVhNGY5ZGJhMGQ2MzgyZGY1OWRiNjYiLCJleHAiOjE3NjgyMTUxNzN9.Tot-yYsNLbY9YH2AYgV_Fggb7PCNrUR0PDi0Ear1s5w";
-    private static final String APP_ID = "e0a1a420f55a4f9dba0d6382df59db66";
-    private static final String SECRET = "OuLsvFL9nqxeeltu";
-    private static final String URL = "https://open.qly.cmviot.cn/v3/open/api/token";
-    private static final String URL_PLAY = "https://open.qly.cmviot.cn/v3/open/api/websdk/live";
-    private static final String URL_LIST = "https://open.qly.cmviot.cn/v3/open/api/node/tree";
-    private static final String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAI7iA0WASV8pekjHVcsYV3ycZR2/+XK7O6BZpybAw/cauEzHRKsrDknErFxdNFca1OlVbPljBOfXjIrhS1CpAWez3Ff2+XaAaFE3fFer9LTxQ5GMXJSIAGQ4ntq/7y57ucwdVjL9+4B4WT8Yfea1DLa/fv+I0Gm7haVQj75JVYhBAgMBAAECgYAfvBs16JRjSncaiwuHHFTyHFppDSZ+UQ+hQchaVx4vWAPvKaMa0WlPARu3OAxT/GWlnY+ipFeGlt1kSz3LIH5rERYd5sNPOFmK7Nzih1VK6r/y1XobM4cLqLrP2UW2c3V36A77xz1xpaa9CP5l6gFjYAdZ1vnGS7HyjolWvzjUAQJBAMB6OTwrHcxOUJiLRJSK697LMIziBi1p5cR4NdSoQjQ4/enUqzAalwi6ZODuGSYai5VKhH9xkxFASWMT8waTOxECQQC+CbWK4Igx8Uh5qPpBIiFuA6ReAuFoRDMvKlzPUi8FGFkvF/CDx5IUFvYUd7FFX4l6Wtu5vf+VF3OydmzFr5oxAkB96Xa3nZ0IodKnd7ONWLOkM1e3UcSowLXGKL1OOCPW9dFkvfKerUZQN172pctd2c+mAfFbTXjfuCZJ4isBCh+BAkA8+ZiKaujIPYbnolRJuc3IItsGXx47+kYCCDGnQ9NaaymSdrfxUIOKdqOWhaEXhUPzQlvmCRSMne29gUn9VA7BAkBLvhtfSuANFSDt942GAY0Q25bJBM01yrRjtTEVCnGDxztexksPKaWGnJxk0Zk0xp4PkJCZvVuxFZ1Dw7F9yg6X";
-
-    public static void main(String[] args) {
-//        String accessToken = getAccessTokenTest();
-//        System.out.println("accessToken: " + accessToken);
-
-//        String playUrl = getPlayUrlTest();
-//        System.out.println("playUrl: " + playUrl);
-
-        String cameraList = getCameraListTest();
-        System.out.println("cameraList: " + cameraList);
-    }
-
-    private static String getCameraListTest() {
+    /**
+     * 鑾峰彇鐩戞帶鎵�鍦ㄨ妭鐐圭紪鐮�
+     * @param cameraMedia
+     * @return
+     */
+    public List<YdQlyNode> getNodeId(CameraMedia cameraMedia) {
         try {
 
             String timestamp = String.valueOf(System.currentTimeMillis());
 
             JSONObject requestBody = new JSONObject();
             requestBody.put("queryType", 0);
-            requestBody.put("nodeId", "1346024619493187584");
+            if(StringUtils.isNotBlank(cameraMedia.getYdStoreId())){
+                requestBody.put("nodeId", cameraMedia.getYdStoreId());
+            }
 
             String requestBodyStr = requestBody.toString();
 
@@ -362,16 +367,17 @@
             String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
 
             // 3. 鏋勫缓绛惧悕瀛楃涓�
-            Map signParams = new LinkedHashMap();
-            signParams.put("appid", APP_ID);
-            signParams.put("md5", md5);
-            signParams.put("timestamp", timestamp);
-            signParams.put("token", TOKEN);
-            signParams.put("version", "1.0.0");
-            String jsonString = JSONObject.toJSONString(signParams);
+            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
+
+            herderParams.put("appid", cameraMedia.getYdAppKey());
+            herderParams.put("md5", md5);
+            herderParams.put("timestamp", timestamp);
+            herderParams.put("token", getAccessToken(cameraMedia));
+            herderParams.put("version", "1.0.0");
+            String jsonString = JSONObject.toJSONString(herderParams);
 
             // 4. RSA绛惧悕
-            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
+            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
             PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
             PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
 
@@ -380,128 +386,44 @@
             signature.update(jsonString.getBytes("UTF-8"));
             String signatureString = Base64.getEncoder().encodeToString(signature.sign());
 
-            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
-
-            herderParams.put("content-type", "application/json");
-            herderParams.put("appid", APP_ID);
-            herderParams.put("md5", md5);
-            herderParams.put("timestamp", timestamp);
-            herderParams.put("token", TOKEN);
-            herderParams.put("version", "1.0.0");
             herderParams.put("signature", signatureString);
+            herderParams.put("content-type", "application/json");
 
             // 5. 鍙戦�佽姹�
-            String response = HttpUtils.doPost(URL_LIST, herderParams, requestBodyStr);
+            String response = HttpUtils.doPost(URL_CAMERA_LIST, herderParams, requestBodyStr);
 
-            return response;
+            YdQlyResp resp = JSONObject.parseObject(response, YdQlyResp.class);
+
+            if(!"000000".equals(resp.getResultCode())){
+                return null;
+            }
+
+            YdQlyDto ydQlyDto = JSONObject.parseObject(resp.getData(), YdQlyDto.class);
+            if(null == ydQlyDto || null == ydQlyDto.getNode() || ydQlyDto.getNode().isEmpty()){
+                return null;
+            }
+            return ydQlyDto.getNode();
         } catch (Exception e) {
-            e.printStackTrace();
             return null;
         }
     }
 
-    private static String getPlayUrlTest() {
-        try {
+    /**
+     * 鑾峰彇鎵�鏈夎妭鐐�
+     * @param cameraMedia
+     */
+    public void getAllNodeId(CameraMedia cameraMedia) {
 
-            String timestamp = String.valueOf(System.currentTimeMillis());
-
-            JSONObject requestBody = new JSONObject();
-            requestBody.put("deviceId", "gb_26236371771319266195");
-
-            String requestBodyStr = requestBody.toString();
-
-            // 2. 璁$畻璇锋眰浣揗D5
-            String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
-
-            // 3. 鏋勫缓绛惧悕瀛楃涓�
-            Map signParams = new LinkedHashMap();
-            signParams.put("appid", APP_ID);
-            signParams.put("md5", md5);
-            signParams.put("timestamp", timestamp);
-            signParams.put("token", TOKEN);
-            signParams.put("version", "1.0.0");
-            String jsonString = JSONObject.toJSONString(signParams);
-
-            // 4. RSA绛惧悕
-            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
-            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
-            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
-
-            Signature signature = Signature.getInstance("SHA1WithRSA");
-            signature.initSign(priKey);
-            signature.update(jsonString.getBytes("UTF-8"));
-            String signatureString = Base64.getEncoder().encodeToString(signature.sign());
-
-            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
-
-            herderParams.put("content-type", "application/json");
-            herderParams.put("appid", APP_ID);
-            herderParams.put("md5", md5);
-            herderParams.put("timestamp", timestamp);
-            herderParams.put("token", TOKEN);
-            herderParams.put("version", "1.0.0");
-            herderParams.put("signature", signatureString);
-
-            // 5. 鍙戦�佽姹�
-            String response = HttpUtils.doPost(URL_PLAY, herderParams, requestBodyStr);
-
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    private static String getAccessTokenTest() {
-        try {
-
-            String timestamp = String.valueOf(System.currentTimeMillis());
-
-            String sig =  Hex.encodeHexString(MessageDigest.getInstance("MD5").digest(StringUtils.getBytes(APP_ID+SECRET,"UTF-8")));
-
-            JSONObject requestBody = new JSONObject();
-            requestBody.put("operatorType", 1);
-            requestBody.put("sig", sig);
-            String requestBodyStr = requestBody.toString();
-
-            // 2. 璁$畻璇锋眰浣揗D5
-            String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
-
-            // 3. 鏋勫缓绛惧悕瀛楃涓�
-            Map signParams = new LinkedHashMap();
-            signParams.put("appid", APP_ID);
-            signParams.put("md5", md5);
-            signParams.put("timestamp", timestamp);
-            signParams.put("version", "1.0.0");
-            String jsonString = JSONObject.toJSONString(signParams);
-
-            // 4. RSA绛惧悕
-            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
-            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
-            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
-
-            Signature signature = Signature.getInstance("SHA1WithRSA");
-            signature.initSign(priKey);
-            signature.update(jsonString.getBytes("UTF-8"));
-            String signatureString = Base64.getEncoder().encodeToString(signature.sign());
-
-            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
-
-            herderParams.put("content-type", "application/json");
-            herderParams.put("appid", APP_ID);
-            herderParams.put("md5", md5);
-            herderParams.put("timestamp", timestamp);
-            herderParams.put("version", "1.0.0");
-
-            herderParams.put("signature", signatureString);
-
-            // 5. 鍙戦�佽姹�
-            String response = HttpUtils.doPost(URL, herderParams, requestBodyStr);
-
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
+        List<YdQlyNode> nodeList = this.getNodeId(cameraMedia);
+        if(null != nodeList && !nodeList.isEmpty()){
+            for (YdQlyNode node : nodeList) {
+                if(node.getHasChild() == 1){
+                    cameraMedia.setYdStoreId(node.getNodeId());
+                    this.getAllNodeId(cameraMedia);
+                }else {
+                    ContextUtil.nodeList.add(node);
+                }
+            }
         }
     }
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java
index 35574dd..b408758 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java
@@ -1,13 +1,17 @@
 package com.fzzy.igds.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
+import com.fzzy.igds.camera.data.ydqly.YdQlyResp;
+import com.fzzy.igds.camera.impl.ApiPlayYdQlyService;
 import com.fzzy.igds.domain.CameraMedia;
 import com.fzzy.igds.mapper.CameraMediaMapper;
 import com.fzzy.igds.utils.ContextUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
+import com.ruoyi.common.utils.StringUtils;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -20,9 +24,14 @@
 @Service
 public class CameraMediaService {
 
+    private static final String APP_ID = "e0a1a420f55a4f9dba0d6382df59db66";
+    private static final String SECRET = "OuLsvFL9nqxeeltu";
+    private static final String RSA = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAI7iA0WASV8pekjHVcsYV3ycZR2/+XK7O6BZpybAw/cauEzHRKsrDknErFxdNFca1OlVbPljBOfXjIrhS1CpAWez3Ff2+XaAaFE3fFer9LTxQ5GMXJSIAGQ4ntq/7y57ucwdVjL9+4B4WT8Yfea1DLa/fv+I0Gm7haVQj75JVYhBAgMBAAECgYAfvBs16JRjSncaiwuHHFTyHFppDSZ+UQ+hQchaVx4vWAPvKaMa0WlPARu3OAxT/GWlnY+ipFeGlt1kSz3LIH5rERYd5sNPOFmK7Nzih1VK6r/y1XobM4cLqLrP2UW2c3V36A77xz1xpaa9CP5l6gFjYAdZ1vnGS7HyjolWvzjUAQJBAMB6OTwrHcxOUJiLRJSK697LMIziBi1p5cR4NdSoQjQ4/enUqzAalwi6ZODuGSYai5VKhH9xkxFASWMT8waTOxECQQC+CbWK4Igx8Uh5qPpBIiFuA6ReAuFoRDMvKlzPUi8FGFkvF/CDx5IUFvYUd7FFX4l6Wtu5vf+VF3OydmzFr5oxAkB96Xa3nZ0IodKnd7ONWLOkM1e3UcSowLXGKL1OOCPW9dFkvfKerUZQN172pctd2c+mAfFbTXjfuCZJ4isBCh+BAkA8+ZiKaujIPYbnolRJuc3IItsGXx47+kYCCDGnQ9NaaymSdrfxUIOKdqOWhaEXhUPzQlvmCRSMne29gUn9VA7BAkBLvhtfSuANFSDt942GAY0Q25bJBM01yrRjtTEVCnGDxztexksPKaWGnJxk0Zk0xp4PkJCZvVuxFZ1Dw7F9yg6X";
 
     @Resource
     private CameraMediaMapper mapper;
+    @Resource
+    private ApiPlayYdQlyService ydQlyService;
 
 
     /**
@@ -73,6 +82,16 @@
 
             data.setCreateBy(ContextUtil.getLoginUserName());
             data.setCreateTime(new Date());
+
+            if(StringUtils.isBlank(data.getYdAppKey())){
+                data.setYdAppKey(APP_ID);
+            }
+            if(StringUtils.isBlank(data.getYdAppSecret())){
+                data.setYdAppSecret(SECRET);
+            }
+            if(StringUtils.isBlank(data.getYdRsa())){
+                data.setYdRsa(RSA);
+            }
             mapper.insert(data);
         } else {
             mapper.updateById(data);
@@ -88,4 +107,19 @@
         if (StringUtils.isEmpty(data.getId())) return null;
         return mapper.deleteById(data.getId()) > 0 ? null : "鍒犻櫎澶辫触";
     }
+
+    /**
+     *
+     * @return
+     */
+    public List<YdQlyNode> listYdQlyNode() {
+
+        CameraMedia cameraMedia = new CameraMedia();
+        cameraMedia.setYdAppKey(APP_ID);
+        cameraMedia.setYdAppSecret(SECRET);
+        cameraMedia.setYdRsa(RSA);
+        ContextUtil.nodeList = new ArrayList<>();
+        ydQlyService.getAllNodeId(cameraMedia);
+        return ContextUtil.nodeList;
+    }
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
index 60cd2f6..b021503 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
@@ -1,5 +1,6 @@
 package com.fzzy.igds.utils;
 
+import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
 import com.ruoyi.common.config.FrameworkConfig;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.ShiroUtils;
@@ -31,6 +32,10 @@
      */
     public static Map<String, String> contextSnCompanyIdMap = new HashMap<>();
 
+    /**
+     * 娴佸獟浣撹妭鐐逛娇鐢�
+     */
+    public static List<YdQlyNode> nodeList = null;
 
     /**
      * 鐢熸垚椤哄簭ID锛氬勾鏈堟棩鏃跺垎绉掓绉�(17浣�) + 搴忓垪鍙�(4浣�) = 21浣�
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml
index 6769638..40bff6e 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml
@@ -170,6 +170,13 @@
     </DataType>
   </Model>
   <View layout="padding:10">
+    <ClientEvent name="onReady">
+&#xD;
+//鑺傜偣鏌ョ湅&#xD;
+showNode = function(){&#xD;
+    view.get(&quot;#iFrameNode&quot;).set(&quot;path&quot;, &quot;/com.fzzy.igds.CameraMediaNode.d&quot;);&#xD;
+    view.get(&quot;#dialogNode&quot;).show();&#xD;
+};&#xD;</ClientEvent>
     <Property name="packages">font-awesome,css-common</Property>
     <Property name="cache">
       <Property name="mode">clientSide</Property>
@@ -226,6 +233,13 @@
           <Property name="exClassName">btn3</Property>
           <Property name="iconClass">fa fa-minus-circle</Property>
           <Property name="width">80</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">showNode();</ClientEvent>
+          <Property name="caption">鏌ョ湅娴佸獟浣撹妭鐐�</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-plus-square</Property>
+          <Property name="width">150</Property>
         </ToolBarButton>
         <Separator/>
       </ToolBar>
@@ -605,6 +619,19 @@
       </Children>
       <Tools/>
     </Dialog>
+    <Dialog id="dialogNode">
+      <Property name="width">55%</Property>
+      <Property name="height">80%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Property name="caption">娴佸獟浣撹妭鐐�</Property>
+      <Buttons/>
+      <Children>
+        <IFrame id="iFrameNode">
+          <Property name="width">100%</Property>
+        </IFrame>
+      </Children>
+      <Tools/>
+    </Dialog>
     <AjaxAction id="ajaxDel">
       <Property name="service">cameraMediaPR#delData</Property>
       <Property name="confirmMessage">纭畾瑕佸垹闄ゅ悧锛�</Property>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml
new file mode 100644
index 0000000..428d5ef
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtNode">
+      <Property name="creationType">com.fzzy.igds.camera.data.ydqly.YdQlyNode</Property>
+      <PropertyDef name="nodeId">
+        <Property></Property>
+        <Property name="label">鑺傜偣缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="nodeName">
+        <Property></Property>
+        <Property name="label">鑺傜偣鍚嶇О</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <Property name="cache">
+      <Property name="mode">clientSide</Property>
+    </Property>
+    <DataSet id="dsNode">
+      <Property name="parameter"></Property>
+      <Property name="dataType">[dtNode]</Property>
+      <Property name="dataProvider">cameraMediaPR#listYdQlyNode</Property>
+    </DataSet>
+    <Container>
+      <Property name="exClassName">c-data</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <DataGrid id="dataGridMain" layoutConstraint="padding:8">
+        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridMain&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
+        <Property name="dataSet">dsNode</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowNumColumn/>
+        <DataColumn>
+          <Property name="property">nodeId</Property>
+          <Property name="name">nodeId</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="nodeName">
+          <Property name="property">nodeName</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+  </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java
index 362dbf0..4122dce 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java
@@ -3,6 +3,7 @@
 import com.bstek.dorado.annotation.DataProvider;
 import com.bstek.dorado.annotation.DataResolver;
 import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
 import com.fzzy.igds.domain.CameraMedia;
 import com.fzzy.igds.service.CameraMediaService;
 import com.ruoyi.common.utils.StringUtils;
@@ -63,4 +64,14 @@
         return service.delData(newData);
     }
 
+    /**
+     * secCameraMediaPR#listYdQlyNode 鎺ュ彛鏌ヨ鎵�鏈夎妭鐐�
+     *
+     */
+    @DataProvider
+    public List<YdQlyNode> listYdQlyNode() {
+
+        return service.listYdQlyNode();
+    }
+
 }
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
index df88e00..17a0c0c 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -580,7 +580,7 @@
     <Container>
       <Property name="className">c-param</Property>
       <AutoForm>
-        <Property name="cols">*,*,*,*,90,90</Property>
+        <Property name="cols">*,*,*,*,90,90,120</Property>
         <Property name="dataSet">dsParam</Property>
         <Property name="labelAlign">right</Property>
         <Property name="labelWidth">100</Property>
@@ -617,6 +617,15 @@
           <Property name="exClassName">btn-q2</Property>
           <Property name="iconClass">fa fa-refresh</Property>
         </Button>
+        <Button>
+          <ClientEvent name="onClick">
+            var url = &quot;/com.fzzy.igds.ConfByDept.d&quot;;&#xD;
+            window.$openTab(&quot;搴撳尯閰嶇疆&quot;, url);
+          </ClientEvent>
+          <Property name="caption">搴撳尯閰嶇疆</Property>
+          <Property name="exClassName">btn-q1</Property>
+          <Property name="iconClass">fa fa-plus-square</Property>
+        </Button>
       </AutoForm>
     </Container>
     <Container>
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
index 7c56232..d14e989 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
@@ -54,10 +54,16 @@
     @RequestMapping("/video-dept")
     public String videoDept(@RequestParam(value = "type", required = false) String type,
                             @RequestParam(value = "deptId", required = false) String deptId,
+                            @RequestParam(value = "lan", required = false) String lan,
                             ModelMap view) {
 
         if (StringUtils.isBlank(type)) {
             type = "2";
+        }
+
+        if (StringUtils.isBlank(lan)) {
+            //鍐呯綉鎾斁
+            lan = "1";
         }
 
         SysUser user = ContextUtil.getLoginUser();
@@ -74,6 +80,7 @@
         SysDept sysDept = commonManager.getDeptById(deptId);
         view.put("dept", sysDept);
         view.put("type", type);
+        view.put("lan", lan);
 
         //鍒ゆ柇鏄惁鏄剧ず搴撳尯閫夋嫨寮圭獥
         String showDeptList = "Y";
diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
index bf85ba4..cd16d3f 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
@@ -58,6 +58,12 @@
         });
     });
 
+    //璧嬪�煎唴澶栫綉鎾斁
+    if (lan) {
+        $("#playLan").val(lan)
+        playTag = lan;
+    }
+
     //鍒濆鍖栨覆鏌撴挱鏀惧垪琛�
     renderList();
 });
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
index 064fbd0..489bad1 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
@@ -469,6 +469,7 @@
 <script th:inline="javascript">
     var listCamera = [[${listCamera}]];
     var type = [[${type}]];
+    var lan = [[${lan}]];
 </script>
 <script th:src="@{/js/jquery.min.js}"></script>
 <script th:src="@{/ajax/libs/layui/layui.js}"></script>

--
Gitblit v1.9.3