From c547851487a8e24f93405ace3c0359d0d6790364 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 25 一月 2022 19:38:04 +0800
Subject: [PATCH] 优化zlm上线与下线过时通道的移除

---
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java |    8 +++++---
 src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java      |   13 ++++++++++++-
 src/main/resources/application-dev.yml                                      |    2 +-
 src/main/resources/application-docker.yml                                   |    2 +-
 4 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index d3d3249..948c61a 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -118,7 +118,7 @@
 
     @Override
     public List<StreamPushItem> getPushList(String mediaServerId) {
-        return streamPushMapper.selectAllByMediaServerId(mediaServerId);
+        return streamPushMapper.selectAllByMediaServerIdWithOutGbID(mediaServerId);
     }
 
     @Override
@@ -204,7 +204,9 @@
         Map<String, MediaItem> streamInfoPushItemMap = new HashMap<>();
         if (pushList.size() > 0) {
             for (StreamPushItem streamPushItem : pushList) {
-                pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem);
+                if (StringUtils.isEmpty(streamPushItem.getGbId())) {
+                    pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem);
+                }
             }
         }
         if (mediaItems.size() > 0) {
@@ -268,7 +270,7 @@
 
     @Override
     public void zlmServerOffline(String mediaServerId) {
-        List<StreamPushItem> streamPushItems = streamPushMapper.selectAllByMediaServerId(mediaServerId);
+        List<StreamPushItem> streamPushItems = streamPushMapper.selectAllByMediaServerIdWithOutGbID(mediaServerId);
         // 绉婚櫎娌℃湁GBId鐨勬帹娴�
         streamPushMapper.deleteWithoutGBId(mediaServerId);
         gbStreamMapper.deleteWithoutGBId("push", mediaServerId);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
index e072e27..08b7c82 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
@@ -33,6 +33,14 @@
     int del(String app, String stream);
 
     @Delete("<script> "+
+            "DELETE sp FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream where " +
+            "<foreach collection='streamPushItems' item='item' separator='or'>" +
+            "(sp.app=#{item.app} and sp.stream=#{item.stream} and gs.gbId is null) " +
+            "</foreach>" +
+            "</script>")
+    int delAllWithoutGBId(List<StreamPushItem> streamPushItems);
+
+    @Delete("<script> "+
             "DELETE FROM stream_push where " +
             "<foreach collection='streamPushItems' item='item' separator='or'>" +
             "(app=#{item.app} and stream=#{item.stream}) " +
@@ -62,10 +70,13 @@
     @Delete("DELETE FROM stream_push")
     void clear();
 
-    @Delete("DELETE FROM stream_push WHERE mediaServerId=#{mediaServerId}")
+    @Delete("DELETE sp FROM stream_push sp left join gb_stream gs on gs.app = sp.app and gs.stream= sp.stream WHERE sp.mediaServerId=#{mediaServerId} and gs.gbId is null ")
     void deleteWithoutGBId(String mediaServerId);
 
     @Select("SELECT * FROM stream_push WHERE mediaServerId=#{mediaServerId}")
     List<StreamPushItem> selectAllByMediaServerId(String mediaServerId);
 
+    @Select("SELECT sp.* FROM stream_push sp left join gb_stream gs on gs.app = sp.app and gs.stream= sp.stream WHERE sp.mediaServerId=#{mediaServerId} and gs.gbId is null")
+    List<StreamPushItem> selectAllByMediaServerIdWithOutGbID(String mediaServerId);
+
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 1051d96..55443fc 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -20,7 +20,7 @@
     datasource:
         # 浣跨敤mysql 鎵撳紑23-28琛屾敞閲婏紝 鍒犻櫎29-36琛�
         name: wvp
-        url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true
+        url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true&useSSL=false
         username:
         password:
         type: com.alibaba.druid.pool.DruidDataSource
diff --git a/src/main/resources/application-docker.yml b/src/main/resources/application-docker.yml
index 2f6992f..98c1335 100644
--- a/src/main/resources/application-docker.yml
+++ b/src/main/resources/application-docker.yml
@@ -20,7 +20,7 @@
     datasource:
         # 浣跨敤mysql 鎵撳紑23-28琛屾敞閲婏紝 鍒犻櫎29-36琛�
          name: wvp
-         url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true
+         url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true&useSSL=false
          username: root
          password: root
          type: com.alibaba.druid.pool.DruidDataSource

--
Gitblit v1.8.0