From 6a26b1d539576a556d0f8682af7ae4317de78c7a Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 02 四月 2024 13:35:35 +0800
Subject: [PATCH] 修复相机密码脱敏导致的bug

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java |  246 ++++++++++++++++++++++++------------------------
 1 files changed, 123 insertions(+), 123 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index fc24937..1193b37 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -73,116 +73,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    public boolean login(ArdCameras camera) {
-        try {
-            // 鍒濆鍖�
-            if (!hCNetSDK.NET_DVR_Init()) {
-                log.error("SDK鍒濆鍖栧け璐�");
-            }
-            //鎵撳嵃娴峰悍sdk鏃ュ織
-            if (Platform.isWindows()) {
-                String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-                hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-            } else {
-                hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
-            }
-            String m_sDeviceIP = camera.getIp();
-            String m_sUsername = camera.getUsername();
-            String m_sPassword = camera.getPassword();
-            short m_sPort = camera.getPort().shortValue();
-            //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
-            hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
-            hCNetSDK.NET_DVR_SetReconnect(5000, true);
-            //璁惧淇℃伅, 杈撳嚭鍙傛暟
-            HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
-            HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
-            // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
-            m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
-            System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
-            m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
-            System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
-            m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
-            System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
-            m_strLoginInfo.wPort = m_sPort;
-            m_strLoginInfo.byVerifyMode = 0;
-            m_strLoginInfo.byLoginMode = 0;
-            //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
-            m_strLoginInfo.bUseAsynLogin = false;
-            m_strLoginInfo.write();
-            //鍚屾鐧诲綍
-            int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
-            if (lUserID < 0) {
-                log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError());
-                camera.setChanNum(0);
-                camera.setLoginId(-1);
-                camera.setState("0");
-                //鍒犻櫎绠$悊閫氶亾
-                ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-                ardCamerasService.updateArdCameras(camera);
-                return false;
-            }
-
-            log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
-            if (fExceptionCallBack == null) {
-                fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
-                //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
-                if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
-                    log.debug("Set fExceptionCallBack function fail");
-                    return false;
-                } else {
-                    log.debug("Set fExceptionCallBack function successfully!");
-                }
-            }
-
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-
-            //鍒犻櫎绠$悊閫氶亾
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-            GlobalVariable.loginMap.put(camera.getId(), lUserID);
-            GlobalVariable.loginCameraMap.put(lUserID, camera);
-
-            camera.setLoginId(lUserID);
-            camera.setState("1");
-            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
-            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
-            //鑾峰彇鏈�鏂伴�氶亾
-            List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
-            if (cameraChannelList.size() > 0) {
-                camera.setChannelList(cameraChannelList);
-                for (ArdChannel channel : cameraChannelList) {
-                    channel.setId(IdUtils.simpleUUID());
-                    ardChannelService.insertArdChannel(channel);
-                }
-                //娣诲姞鍒版祦濯掍綋
-                addVtdu(camera);
-            }
-            //鍒涘缓寮曞闃熷垪
-            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
-                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
-                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
-            }
-            ardCamerasService.updateArdCameras(camera);
-        } catch (Exception ex) {
-            log.error("娉ㄥ唽璁惧寮傚父", ex);
-        }
-        return true;
-    }
-
-    /**
-     * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
-     * @鍙傛暟 [dvrLogin]
-     * @杩斿洖鍊� java.lang.Integer
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/1/17 16:12
-     * @淇敼浜哄拰鍏跺畠淇℃伅
-     */
-    @Override
-    @Async("loginExecutor")
-    public void asyncLogin(ArdCameras camera) {
+    public AjaxResult login(ArdCameras camera) {
         try {
             // 鍒濆鍖�
             if (!hCNetSDK.NET_DVR_Init()) {
@@ -223,18 +114,126 @@
             int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
             if (lUserID < 0) {
                 int errorCode = hCNetSDK.NET_DVR_GetLastError();
-                log.debug("Login Failed 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�," +
-                        "Error Code:" + errorCode + " " +
-                        "Error Info:" + SdkErrorCodeEnum.getDescByCode(errorCode));
                 camera.setChanNum(0);
                 camera.setLoginId(-1);
                 camera.setState("0");
                 //鍒犻櫎绠$悊閫氶亾
                 ardChannelService.deleteArdChannelByDeviceId(camera.getId());
                 ardCamerasService.updateArdCameras(camera);
-                return;
+                log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+                return AjaxResult.error("鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
             }
 
+            log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+            if (fExceptionCallBack == null) {
+                fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+                //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+                if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+                    log.debug("Set fExceptionCallBack function fail");
+                } else {
+                    log.debug("Set fExceptionCallBack function successfully!");
+                }
+            }
+
+            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+                GlobalVariable.loginMap.remove(camera.getId());
+            }
+
+            //鍒犻櫎绠$悊閫氶亾
+            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+            GlobalVariable.loginMap.put(camera.getId(), lUserID);
+            GlobalVariable.loginCameraMap.put(lUserID, camera);
+
+            camera.setLoginId(lUserID);
+            camera.setState("1");
+            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
+            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+            //鑾峰彇鏈�鏂伴�氶亾
+            List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
+            if (cameraChannelList.size() > 0) {
+                camera.setChannelList(cameraChannelList);
+                for (ArdChannel channel : cameraChannelList) {
+                    channel.setId(IdUtils.simpleUUID());
+                    ardChannelService.insertArdChannel(channel);
+                }
+                //娣诲姞鍒版祦濯掍綋
+                addVtdu(camera);
+            }
+            //鍒涘缓寮曞闃熷垪
+            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+            }
+            ardCamerasService.updateArdCameras(camera);
+            return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
+        } catch (Exception ex) {
+            log.error("娉ㄥ唽璁惧寮傚父", ex);
+            return AjaxResult.error("娉ㄥ唽璁惧寮傚父" + ex.getMessage());
+        }
+    }
+
+    /**
+     * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
+     * @鍙傛暟 [dvrLogin]
+     * @杩斿洖鍊� java.lang.Integer
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/17 16:12
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    @Override
+    @Async("loginExecutor")
+    public AjaxResult asyncLogin(ArdCameras camera) {
+        try {
+            // 鍒濆鍖�
+            if (!hCNetSDK.NET_DVR_Init()) {
+                log.error("SDK鍒濆鍖栧け璐�");
+                return AjaxResult.error("SDK鍒濆鍖栧け璐�");
+            }
+            //鎵撳嵃娴峰悍sdk鏃ュ織
+            if (Platform.isWindows()) {
+                String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+                hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+            } else {
+                hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+            }
+            String m_sDeviceIP = camera.getIp();
+            String m_sUsername = camera.getUsername();
+            String m_sPassword = camera.getPassword();
+            short m_sPort = camera.getPort().shortValue();
+            //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
+            hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+            hCNetSDK.NET_DVR_SetReconnect(5000, true);
+            //璁惧淇℃伅, 杈撳嚭鍙傛暟
+            HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+            HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+            // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
+            m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+            System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+            m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+            System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+            m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+            System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+            m_strLoginInfo.wPort = m_sPort;
+            m_strLoginInfo.byVerifyMode = 0;
+            m_strLoginInfo.byLoginMode = 0;
+            //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
+            m_strLoginInfo.bUseAsynLogin = false;
+            m_strLoginInfo.write();
+            //鍚屾鐧诲綍
+            int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+            if (lUserID < 0) {
+                int errorCode = hCNetSDK.NET_DVR_GetLastError();
+                camera.setChanNum(0);
+                camera.setLoginId(-1);
+                camera.setState("0");
+                //鍒犻櫎绠$悊閫氶亾
+                ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+                ardCamerasService.updateArdCameras(camera);
+                log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+                return AjaxResult.error("璁惧鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+            }
             log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�");
             synchronized (_lock) {
                 if (fExceptionCallBack == null) {
@@ -242,7 +241,6 @@
                     //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
                     if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
                         log.debug("Set fExceptionCallBack function fail");
-                        return;
                     } else {
                         log.debug("Set fExceptionCallBack function successfully!");
                     }
@@ -277,8 +275,10 @@
             addVtdu(camera);
             //鍒涘缓寮曞闃熷垪
             createGuideQueue(camera);
+            return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
         } catch (Exception ex) {
             log.error("娉ㄥ唽璁惧寮傚父", ex);
+            return AjaxResult.error("娉ㄥ唽璁惧寮傚父" + ex.getMessage());
         }
     }
 
@@ -1917,14 +1917,14 @@
             log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
             return AjaxResult.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
         }
-            struGisInfo.read();
-            Map<String, Object> map = new HashMap<>();
-            map.put("p", struGisInfo.struPtzPos.fPanPos);
-            map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
-            map.put("z", struGisInfo.struPtzPos.fZoomPos);
-            map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙�
-            map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙�
-            return AjaxResult.success(map);
+        struGisInfo.read();
+        Map<String, Object> map = new HashMap<>();
+        map.put("p", struGisInfo.struPtzPos.fPanPos);
+        map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
+        map.put("z", struGisInfo.struPtzPos.fZoomPos);
+        map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙�
+        map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙�
+        return AjaxResult.success(map);
 
     }
 }

--
Gitblit v1.9.3