From 10f776678eeabfa0c73cf052db0e0044342f407f Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 25 二月 2022 20:33:38 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into wvp-pro-record

---
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java                                             |    5 +
 src/main/java/com/genersoft/iot/vmp/utils/node/INode.java                                                                   |    2 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java                                                          |   19 ++++
 src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java                                                 |   18 ++--
 pom.xml                                                                                                                     |    9 ++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java |    1 
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java                                             |   16 ++--
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java                                       |   14 +++
 src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java                                                       |    6 
 web_src/src/components/channelList.vue                                                                                      |    4 
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java                                                         |   12 +++
 src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java                                                              |    2 
 sql/mysql.sql                                                                                                               |   68 ++++++++--------
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java                                                      |    6 +
 src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java                                                        |    1 
 src/main/java/com/genersoft/iot/vmp/vmanager/bean/DeviceChannelTree.java                                                    |    2 
 src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java                                 |    2 
 src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java                                                                |    2 
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java                                                   |   35 ++++----
 19 files changed, 142 insertions(+), 82 deletions(-)

diff --git a/pom.xml b/pom.xml
index f1ac458..770cc25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -183,6 +183,15 @@
 			<version>4.9.0</version>
 		</dependency>
 
+		<!-- okhttp 璋冭瘯鏃ュ織 -->
+		<dependency>
+			<groupId>com.squareup.okhttp3</groupId>
+			<artifactId>logging-interceptor</artifactId>
+			<version>4.9.0</version>
+		</dependency>
+
+
+
 		<!-- okhttp-digest -->
 		<dependency>
 			<groupId>com.burgstaller</groupId>
diff --git a/sql/mysql.sql b/sql/mysql.sql
index f2e358f..13e1ccd 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -44,7 +44,7 @@
                           `charset` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
                           PRIMARY KEY (`id`),
                           UNIQUE KEY `device_deviceId_uindex` (`deviceId`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -95,39 +95,41 @@
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!50503 SET character_set_client = utf8mb4 */;
 CREATE TABLE `device_channel` (
-                                  `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `manufacture` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `owner` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `civilCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `block` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `id` int NOT NULL AUTO_INCREMENT,
+                                  `channelId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+                                  `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `manufacture` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `model` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `owner` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `civilCode` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `block` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `address` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `parentId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                   `safetyWay` int DEFAULT NULL,
                                   `registerWay` int DEFAULT NULL,
-                                  `certNum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `certNum` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                   `certifiable` int DEFAULT NULL,
                                   `errCode` int DEFAULT NULL,
-                                  `endTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `secrecy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `ipAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `endTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `secrecy` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `ipAddress` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                   `port` int DEFAULT NULL,
-                                  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                   `PTZType` int DEFAULT NULL,
                                   `status` int DEFAULT NULL,
                                   `longitude` double DEFAULT NULL,
                                   `latitude` double DEFAULT NULL,
-                                  `streamId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
-                                  `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                  `parental` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `streamId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                  `deviceId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+                                  `parental` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                   `hasAudio` bit(1) DEFAULT NULL,
-                                  `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                  `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+                                  `createTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+                                  `updateTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
                                   `subCount` int DEFAULT '0',
-                                  PRIMARY KEY (`channelId`,`deviceId`) USING BTREE,
+                                  PRIMARY KEY (`id`),
+                                  UNIQUE KEY `device_channel_id_uindex` (`id`),
                                   UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -196,7 +198,7 @@
                              PRIMARY KEY (`gbStreamId`) USING BTREE,
                              UNIQUE KEY `app` (`app`,`stream`) USING BTREE,
                              UNIQUE KEY `gbId` (`gbId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=291 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=375 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -226,7 +228,7 @@
                        `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
                        `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
                        PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=245 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=313 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -315,7 +317,7 @@
                                    PRIMARY KEY (`id`),
                                    UNIQUE KEY `parent_platform_id_uindex` (`id`),
                                    UNIQUE KEY `parent_platform_pk` (`serverGBId`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -361,13 +363,11 @@
 /*!50503 SET character_set_client = utf8mb4 */;
 CREATE TABLE `platform_gb_channel` (
                                        `id` int NOT NULL AUTO_INCREMENT,
-                                       `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                       `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                       `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                       `deviceAndChannelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-                                       `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+                                       `platformId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+                                       `catalogId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+                                       `deviceChannelId` int NOT NULL,
                                        PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -393,7 +393,7 @@
                                       `id` int NOT NULL AUTO_INCREMENT,
                                       PRIMARY KEY (`id`),
                                       UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`)
-) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=406 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -463,7 +463,7 @@
                                `mediaServerId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
                                PRIMARY KEY (`id`),
                                UNIQUE KEY `stream_push_pk` (`app`,`stream`)
-) ENGINE=InnoDB AUTO_INCREMENT=310 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=394 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -540,4 +540,4 @@
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2022-02-24 16:52:12
+-- Dump completed on 2022-02-25 20:32:21
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
index 6d40e36..3633789 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
@@ -3,6 +3,10 @@
 public class DeviceChannel {
 
 
+	/**
+	 * 鏁版嵁搴撹嚜璧營D
+	 */
+	private int id;
 
 	/**
 	 * 閫氶亾id
@@ -165,6 +169,14 @@
 	 */
 	private boolean hasAudio;
 
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
 	public String getDeviceId() {
 		return deviceId;
 	}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
index 997031b..3bb2888 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
@@ -60,7 +60,7 @@
         Map<String, List<ParentPlatform>> parentPlatformMap = new HashMap<>();
         if (event.getPlatformId() != null) {
             parentPlatform = storager.queryParentPlatByServerGBId(event.getPlatformId());
-            if (!parentPlatform.isStatus())return;
+            if (parentPlatform != null && !parentPlatform.isStatus())return;
             String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() +  "_Catalog_" + event.getPlatformId();
             subscribe = redisCatchStorage.getSubscribe(key);
             if (subscribe == null) return;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
index 7ddcd82..4b99f90 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
@@ -98,7 +98,6 @@
                     DeviceChannel deviceChannel = storager.queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
                     deviceChannel.setParental(0);
                     deviceChannel.setParentId(channelReduce.getCatalogId());
-
                     cmderFroPlatform.catalogQuery(deviceChannel, parentPlatform, sn, fromHeader.getTag(), size);
                     // 闃叉鍙戦�佽繃蹇�
                     Thread.sleep(50);
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 a15e01a..c884495 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
@@ -122,7 +122,6 @@
                 transform.setName(thirdPartyGB.getName());
             }
         }
-        storager.updateMedia(transform);
         if (!StringUtils.isEmpty(transform.getGbId())) {
             // 濡傛灉杩欎釜鍥芥爣ID宸茬粡缁欎簡鍏朵粬鎺ㄦ祦涓旀祦宸茬绾匡紝鍒欑Щ闄ゅ叾浠栨帹娴�
             List<GbStream> gbStreams = gbStreamMapper.selectByGBId(transform.getGbId());
@@ -135,13 +134,16 @@
                     }
                 }
             }
-            if (gbStreamMapper.selectOne(transform.getApp(), transform.getStream()) != null) {
+            StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream());
+            if (streamProxyItem != null) {
+                transform.setGbStreamId(streamProxyItem.getGbStreamId());
                 gbStreamMapper.update(transform);
             }else {
                 transform.setCreateStamp(System.currentTimeMillis());
                 gbStreamMapper.add(transform);
             }
         }
+        storager.updateMedia(transform);
         return transform;
     }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
index 8238a83..05ecd3f 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
 import okhttp3.*;
+import okhttp3.logging.HttpLoggingInterceptor;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,8 +26,23 @@
         void run(JSONObject response);
     }
 
+    private OkHttpClient getClient(){
+        OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
+        if (logger.isDebugEnabled()) {
+            HttpLoggingInterceptor logging = new HttpLoggingInterceptor(message -> {
+                logger.debug("http璇锋眰鍙傛暟锛�" + message);
+            });
+            logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
+            // OkHttp閫茶娣诲姞鏀旀埅鍣╨oggingInterceptor
+            httpClientBuilder.addInterceptor(logging);
+        }
+        return httpClientBuilder.build();
+    }
+
+
     public JSONObject sendPost(MediaServerItem mediaServerItem, String api, Map<String, Object> param, RequestCallback callback) {
-        OkHttpClient client = new OkHttpClient();
+        OkHttpClient client = getClient();
+
         if (mediaServerItem == null) {
             return null;
         }
@@ -56,6 +72,7 @@
                         ResponseBody responseBody = response.body();
                         if (responseBody != null) {
                             String responseStr = responseBody.string();
+                            System.out.println(responseStr);
                             responseJSON = JSON.parseObject(responseStr);
                         }
                     }else {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
index 6d9cd00..d4cace4 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -87,26 +87,27 @@
     void startPlay(String deviceId, String channelId, String streamId);
 
     @Select(value = {" <script>" +
-            "SELECT dc.channelId, "+
-            "dc.deviceId, " +
-            "dc.name, " +
-            "de.manufacturer, " +
-            "de.hostAddress, " +
-            "dc.subCount, " +
-            "pgc.platformId as platformId, " +
-            "pgc.catalogId as catalogId " +
-            "FROM device_channel dc " +
-            "LEFT JOIN device de ON dc.deviceId = de.deviceId " +
-            "LEFT JOIN platform_gb_channel pgc on de.deviceId = pgc.deviceId and pgc.channelId = dc.channelId " +
-            "LEFT JOIN device_channel dc2 ON dc2.deviceId = de.deviceId AND dc2.parentId = dc.channelId " +
+            "SELECT " +
+            "    dc.id,\n" +
+            "    dc.channelId,\n" +
+            "    dc.deviceId,\n" +
+            "    dc.name,\n" +
+            "    de.manufacturer,\n" +
+            "    de.hostAddress,\n" +
+            "    dc.subCount,\n" +
+            "    pgc.platformId as platformId,\n" +
+            "    pgc.catalogId as catalogId " +
+            " FROM device_channel dc " +
+            " LEFT JOIN device de ON dc.deviceId = de.deviceId " +
+            " LEFT JOIN platform_gb_channel pgc on pgc.deviceChannelId = dc.id " +
             " WHERE 1=1 " +
             " <if test='query != null'> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
             " <if test='online == true' > AND dc.status=1</if> " +
             " <if test='online == false' > AND dc.status=0</if> " +
-            " <if test='hasSubChannel!= null and hasSubChannel == true' >  AND dc2.channelId is not null</if> " +
-            " <if test='hasSubChannel!= null and hasSubChannel == false' >  AND dc2.channelId is null</if> " +
-            " <if test='catalogId == null ' >  AND ((pgc.platformId IS NULL AND pgc.catalogId IS NULL) or (pgc.platformId != #{platformId}))</if> " +
-            " <if test='catalogId != null ' >  AND pgc.platformId =#{platformId} AND pgc.catalogId = #{catalogId}</if> " +
+            " <if test='hasSubChannel!= null and hasSubChannel == true' >  AND dc.subCount > 0</if> " +
+            " <if test='hasSubChannel!= null and hasSubChannel == false' >  AND dc.subCount == 0</if> " +
+            " <if test='catalogId == null ' >  AND dc.id not in (select deviceChannelId from platform_gb_channel where platformId=#{platformId} ) </if> " +
+            " <if test='catalogId != null ' >  AND pgc.platformId = #{platformId} and pgc.catalogId=#{catalogId} </if> " +
             " ORDER BY dc.deviceId, dc.channelId ASC" +
             " </script>"})
     List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String platformId, String catalogId);
@@ -196,8 +197,8 @@
     List<DeviceChannel> queryOnlineChannelsByDeviceId(String deviceId);
 
     @Select(" SELECT\n" +
+            "        id,\n" +
             "        channelId,\n" +
-            "        channelId as id,\n" +
             "        deviceId,\n" +
             "        parentId,\n" +
             "        status,\n" +
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 55b5379..2c63c82 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
@@ -19,6 +19,7 @@
             "('${app}', '${stream}', '${gbId}', '${name}', " +
             "'${longitude}', '${latitude}', '${streamType}', " +
             "'${mediaServerId}', ${status}, ${createStamp})")
+    @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
     int add(GbStream gbStream);
 
     @Update("UPDATE gb_stream " +
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
index 4f5de2b..3df38fc 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
@@ -21,23 +21,23 @@
      * 鏌ヨ鍒楄〃閲屽凡缁忓叧鑱旂殑
      */
     @Select("<script> "+
-            "SELECT deviceAndChannelId FROM platform_gb_channel WHERE platformId='${platformId}' AND deviceAndChannelId in" +
-            "<foreach collection='deviceAndChannelIds' open='(' item='id_' separator=',' close=')'> '${id_}'</foreach> ORDER BY deviceAndChannelId ASC" +
+            "SELECT deviceChannelId FROM platform_gb_channel WHERE platformId='${platformId}' AND deviceChannelId in" +
+            "<foreach collection='channelReduces' open='(' item='item' separator=',' close=')'> '${item.id}'</foreach>" +
             "</script>")
-    List<String> findChannelRelatedPlatform(String platformId, List<String> deviceAndChannelIds);
+    List<Integer> findChannelRelatedPlatform(String platformId, List<ChannelReduce> channelReduces);
 
     @Insert("<script> "+
-            "INSERT INTO platform_gb_channel (channelId, deviceId, platformId, deviceAndChannelId, catalogId) VALUES" +
+            "INSERT INTO platform_gb_channel (platformId, deviceChannelId, catalogId) VALUES" +
             "<foreach collection='channelReducesToAdd'  item='item' separator=','>" +
-            " ('${item.channelId}','${item.deviceId}', '${platformId}', '${item.deviceId}_${item.channelId}' , '${item.catalogId}' )" +
+            " ('${platformId}', '${item.id}' , '${item.catalogId}' )" +
             "</foreach>" +
             "</script>")
     int addChannels(String platformId, List<ChannelReduce> channelReducesToAdd);
 
 
     @Delete("<script> "+
-            "DELETE FROM platform_gb_channel WHERE platformId='${platformId}' AND deviceAndChannelId in" +
-            "<foreach collection='channelReducesToDel'  item='item'  open='(' separator=',' close=')' > '${item.deviceId}_${item.channelId}'</foreach>" +
+            "DELETE FROM platform_gb_channel WHERE platformId='${platformId}' AND deviceChannelId in" +
+            "<foreach collection='channelReducesToDel'  item='item'  open='(' separator=',' close=')' > '${item.id}'</foreach>" +
             "</script>")
     int delChannelForGB(String platformId, List<ChannelReduce> channelReducesToDel);
 
@@ -82,8 +82,10 @@
             "parent_platform pp " +
             "left join platform_gb_channel pgc on " +
             "pp.serverGBId = pgc.platformId " +
+            "left join device_channel dc on " +
+            "dc.id = pgc.deviceChannelId " +
             "WHERE " +
-            "pgc.channelId = #{channelId} and pp.status = true " +
+            "dc.channelId = #{channelId} and pp.status = true " +
             "AND pp.serverGBId IN" +
             "<foreach collection='platforms'  item='item'  open='(' separator=',' close=')' > #{item}</foreach>" +
             "</script> ")
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 635d220..6a51541 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
@@ -608,19 +608,19 @@
 	@Override
 	public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId) {
 
-		Map<String, ChannelReduce> deviceAndChannels = new HashMap<>();
+		Map<Integer, ChannelReduce> deviceAndChannels = new HashMap<>();
 		for (ChannelReduce channelReduce : channelReduces) {
 			channelReduce.setCatalogId(catalogId);
-			deviceAndChannels.put(channelReduce.getDeviceId() + "_" + channelReduce.getChannelId(), channelReduce);
+			deviceAndChannels.put(channelReduce.getId(), channelReduce);
 		}
-		List<String> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
+		List<Integer> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
 		// 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨�
-		List<String> relatedPlatformchannels = platformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList);
-		if (relatedPlatformchannels != null) {
-			deviceAndChannelList.removeAll(relatedPlatformchannels);
+		List<Integer> channelIds = platformChannelMapper.findChannelRelatedPlatform(platformId, channelReduces);
+		if (deviceAndChannelList != null) {
+			deviceAndChannelList.removeAll(channelIds);
 		}
-		for (String relatedPlatformchannel : relatedPlatformchannels) {
-			deviceAndChannels.remove(relatedPlatformchannel);
+		for (Integer channelId : channelIds) {
+			deviceAndChannels.remove(channelId);
 		}
 		List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
 		// 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java b/src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java
index 0de2160..6b95508 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java
@@ -18,7 +18,7 @@
 	/**
 	 * 涓婚敭ID
 	 */
-	protected String id;
+	protected int id;
 
 	/**
 	 * 鐖惰妭鐐笽D
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java b/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java
index 0ba7207..d0500a1 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java
@@ -19,7 +19,7 @@
 	 */
 	private Object content;
 
-	public ForestNode(String id, String parentId, Object content) {
+	public ForestNode(int id, String parentId, Object content) {
 		this.id = id;
 		this.parentId = parentId;
 		this.content = content;
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java b/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java
index de98fdc..895e6de 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java
@@ -17,12 +17,12 @@
 	/**
 	 * 妫灄鐨勬墍鏈夎妭鐐�
 	 */
-	private final ImmutableMap<String, T> nodeMap;
+	private final ImmutableMap<Integer, T> nodeMap;
 
 	/**
 	 * 妫灄鐨勭埗鑺傜偣ID
 	 */
-	private final Map<String, Object> parentIdMap = Maps.newHashMap();
+	private final Map<Integer, Object> parentIdMap = Maps.newHashMap();
 
 	public ForestNodeManager(List<T> nodes) {
 		nodeMap = Maps.uniqueIndex(nodes, INode::getId);
@@ -46,7 +46,7 @@
 	 *
 	 * @param parentId 鐖惰妭鐐笽D
 	 */
-	public void addParentId(String parentId) {
+	public void addParentId(int parentId) {
 		parentIdMap.put(parentId, "");
 	}
 
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/node/INode.java b/src/main/java/com/genersoft/iot/vmp/utils/node/INode.java
index 4d6ebfc..c82d6f7 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/node/INode.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/node/INode.java
@@ -14,7 +14,7 @@
 	 *
 	 * @return String
 	 */
-	String getId();
+	int getId();
 
 	/**
 	 * 鐖朵富閿�
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/DeviceChannelTree.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/DeviceChannelTree.java
index 773f2c1..4eaf598 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/DeviceChannelTree.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/DeviceChannelTree.java
@@ -19,7 +19,7 @@
     /**
      * 涓婚敭ID
      */
-    private String id;
+    private int id;
 
     /**
      * 鐖惰妭鐐笽D
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
index d5caab2..e07c81d 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
@@ -1,6 +1,7 @@
 package com.genersoft.iot.vmp.vmanager.gb28181.media;
 
 import com.genersoft.iot.vmp.common.StreamInfo;
+import com.genersoft.iot.vmp.service.IMediaServerService;
 import com.genersoft.iot.vmp.service.IStreamPushService;
 import com.genersoft.iot.vmp.service.IMediaService;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -9,6 +10,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,9 @@
     @Autowired
     private IMediaService mediaService;
 
+    @Autowired
+    private IMediaServerService mediaServerService;
+
 
     /**
      * 鏍规嵁搴旂敤鍚嶅拰娴乮d鑾峰彇鎾斁鍦板潃
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
index fc13e05..10015e4 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
@@ -1,9 +1,16 @@
 package com.genersoft.iot.vmp.vmanager.gb28181.platform.bean;
 
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+
 /**
  * 绮剧畝鐨刢hannel淇℃伅灞曠ず锛屼富瑕佹槸閫夋嫨閫氶亾鐨勬椂鍊欏睍绀哄垪琛ㄤ娇鐢�
  */
 public class ChannelReduce {
+
+    /**
+     * deviceChannel鐨勬暟鎹簱鑷ID
+     */
+    private int id;
 
     /**
      * 閫氶亾id
@@ -45,6 +52,13 @@
      */
     private String  catalogId;
 
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
 
     public String getChannelId() {
         return channelId;
diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue
index 3cd4bc9..6eae383 100644
--- a/web_src/src/components/channelList.vue
+++ b/web_src/src/components/channelList.vue
@@ -28,9 +28,7 @@
             <devicePlayer ref="devicePlayer" v-loading="isLoging"></devicePlayer>
             <!--璁惧鍒楄〃-->
             <el-table ref="channelListTable" :data="deviceChannelList" :height="winHeight" border style="width: 100%">
-                <el-table-column prop="channelId" label="閫氶亾缂栧彿" width="210">
-                </el-table-column>
-                <el-table-column prop="deviceId" label="璁惧缂栧彿" width="210">
+                <el-table-column prop="channelId" label="閫氶亾缂栧彿" width="200">
                 </el-table-column>
                 <el-table-column prop="name" label="閫氶亾鍚嶇О">
                 </el-table-column>

--
Gitblit v1.8.0