From e752dbd1a7fdfbb2063c59470b41a8e5dd546c3d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 16 三月 2022 10:12:31 +0800
Subject: [PATCH] 修复推流关联平台的bug again

---
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java |    3 ++-
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java                 |    5 +++++
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java                |   15 +++++++++------
 src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java                  |   13 +++++++++++++
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java       |    2 +-
 5 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
index 287c2a0..62a45d5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
@@ -46,4 +46,9 @@
         }
         return platforms;
     }
+
+    public void removeAllSubscribe(String platformId) {
+        mobilePositionMap.remove(platformId);
+        catalogMap.remove(platformId);
+    }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
index a4f7815..fa4aa35 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
@@ -128,7 +128,7 @@
             if (gbStreams.size() > 0) {
                 for (GbStream gbStream : gbStreams) {
                     // 鍑虹幇浣跨敤鐩稿悓鍥芥爣Id鐨勮棰戞祦鏃讹紝浣跨敤鏂版祦鏇挎崲鏃ф祦锛�
-                    if (queryKey != null) {
+                    if (queryKey != null && gbStream.getApp().equals(mediaItem.getApp())) {
                         Matcher matcherForStream = pattern.matcher(gbStream.getStream());
                         String queryKeyForStream = null;
                         if (matcherForStream.find()) { //姝ゅfind锛堬級姣忔琚皟鐢ㄥ悗锛屼細鍋忕Щ鍒颁笅涓�涓尮閰�
@@ -144,12 +144,15 @@
                     }
                 }
             }
-            StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream());
-            if (streamProxyItem != null) {
-                transform.setGbStreamId(streamProxyItem.getGbStreamId());
-                transform.setPlatformId(streamProxyItem.getPlatformId());
-                transform.setCatalogId(streamProxyItem.getCatalogId());
+            //            StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream());
+            List<GbStream> gbStreamList = gbStreamMapper.selectByGBId(transform.getGbId());
+            if (gbStreamList != null && gbStreamList.size() == 1) {
+                transform.setGbStreamId(gbStreamList.get(0).getGbStreamId());
+                transform.setPlatformId(gbStreamList.get(0).getPlatformId());
+                transform.setCatalogId(gbStreamList.get(0).getCatalogId());
+                transform.setGbId(gbStreamList.get(0).getGbId());
                 gbStreamMapper.update(transform);
+                streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream());
             }else {
                 transform.setCreateStamp(System.currentTimeMillis());
                 gbStreamMapper.add(transform);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
index b430ebb..4ed0a0c 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -33,6 +33,19 @@
             "mediaServerId=#{mediaServerId}," +
             "status=${status} " +
             "WHERE app=#{app} AND stream=#{stream}")
+    int updateByallAndStream(GbStream gbStream);
+
+    @Update("UPDATE gb_stream " +
+            "SET app=#{app}," +
+            "stream=#{stream}," +
+            "gbId=#{gbId}," +
+            "name=#{name}," +
+            "streamType=#{streamType}," +
+            "longitude=#{longitude}, " +
+            "latitude=#{latitude}," +
+            "mediaServerId=#{mediaServerId}," +
+            "status=${status} " +
+            "WHERE gbStreamId=#{gbStreamId}")
     int update(GbStream gbStream);
 
     @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}")
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
index e1ccf9a..158a163 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -772,7 +772,7 @@
 		try {
 			if (streamProxyMapper.update(streamProxyItem) > 0) {
 				if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
-					if (gbStreamMapper.update(streamProxyItem) > 0) {
+					if (gbStreamMapper.updateByallAndStream(streamProxyItem) > 0) {
 						//浜嬪姟鍥炴粴
 						dataSourceTransactionManager.rollback(transactionStatus);
 						return false;
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index c3435fd..878e77c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -305,6 +305,8 @@
         // 鍋滄鍙戦�佷綅缃闃呭畾鏃朵换鍔�
         String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() +  "_MobilePosition_" + parentPlatform.getServerGBId();
         dynamicTask.stop(key);
+        // 鍒犻櫎缂撳瓨鐨勮闃呬俊鎭�
+        subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId());
         if (deleteResult) {
             return new ResponseEntity<>("success", HttpStatus.OK);
         } else {
@@ -341,7 +343,6 @@
      * @param platformId  涓婄骇骞冲彴ID
      * @param query       鏌ヨ鍐呭
      * @param online      鏄惁鍦ㄧ嚎
-     * @param choosed     鏄惁宸查�変腑
      * @param channelType 閫氶亾绫诲瀷
      * @return
      */

--
Gitblit v1.8.0