From 07a8ef9e256c70a3a5b15782add81dcad1e2ffc2 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期五, 14 六月 2024 00:03:57 +0800
Subject: [PATCH] SIP只有一个监听时,直接返回

---
 src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java
old mode 100644
new mode 100755
index cb34ff5..e65ea8d
--- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java
@@ -2,9 +2,10 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.service.IGbStreamService;
-import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.media.service.IMediaServerService;
 import com.genersoft.iot.vmp.service.IStreamPushService;
 import com.genersoft.iot.vmp.utils.DateUtil;
 import org.slf4j.Logger;
@@ -19,6 +20,7 @@
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 /**
@@ -57,7 +59,8 @@
                     try {
                         List<StreamPushItem> streamPushItems = JSON.parseArray(new String(msg.getBody()), StreamPushItem.class);
                         //鏌ヨ鍏ㄩ儴鐨刟pp+stream 鐢ㄤ簬鍒ゆ柇鏄坊鍔犺繕鏄慨鏀�
-                        List<String> allAppAndStream = streamPushService.getAllAppAndStream();
+                        Map<String, StreamPushItem> allAppAndStream = streamPushService.getAllAppAndStreamMap();
+                        Map<String, GbStream> allGBId = gbStreamService.getAllGBId();
 
                         /**
                          * 鐢ㄤ簬瀛樺偍鏇村叿APP+Stream杩囨护鍚庣殑鏁版嵁锛屽彲浠ョ洿鎺ュ瓨鍏tream_push琛ㄤ笌gb_stream琛�
@@ -67,35 +70,48 @@
                         for (StreamPushItem streamPushItem : streamPushItems) {
                             String app = streamPushItem.getApp();
                             String stream = streamPushItem.getStream();
-                            boolean contains = allAppAndStream.contains(app + stream);
+                            boolean contains = allAppAndStream.containsKey(app + stream);
                             //涓嶅瓨鍦ㄥ氨娣诲姞
                             if (!contains) {
+                                if (allGBId.containsKey(streamPushItem.getGbId())) {
+                                    GbStream gbStream = allGBId.get(streamPushItem.getGbId());
+                                    logger.warn("[REDIS娑堟伅-鎺ㄦ祦璁惧鍒楄〃鏇存柊-INSERT] 鍥芥爣缂栧彿閲嶅: {}, 宸插垎閰嶇粰{}/{}",
+                                            streamPushItem.getGbId(), gbStream.getApp(), gbStream.getStream());
+                                    continue;
+                                }
                                 streamPushItem.setStreamType("push");
                                 streamPushItem.setCreateTime(DateUtil.getNow());
                                 streamPushItem.setMediaServerId(mediaServerService.getDefaultMediaServer().getId());
                                 streamPushItem.setOriginType(2);
                                 streamPushItem.setOriginTypeStr("rtsp_push");
-                                streamPushItem.setTotalReaderCount("0");
+                                streamPushItem.setTotalReaderCount(0);
                                 streamPushItemForSave.add(streamPushItem);
+                                allGBId.put(streamPushItem.getGbId(), streamPushItem);
                             } else {
+                                if (allGBId.containsKey(streamPushItem.getGbId())
+                                        && (!allGBId.get(streamPushItem.getGbId()).getApp().equals(streamPushItem.getApp()) || !allGBId.get(streamPushItem.getGbId()).getStream().equals(streamPushItem.getStream()))) {
+                                    GbStream gbStream = allGBId.get(streamPushItem.getGbId());
+                                    logger.warn("[REDIS娑堟伅-鎺ㄦ祦璁惧鍒楄〃鏇存柊-UPDATE] 鍥芥爣缂栧彿閲嶅: {}, 宸插垎閰嶇粰{}/{}",
+                                            streamPushItem.getGbId(), gbStream.getApp(), gbStream.getStream());
+                                    continue;
+                                }
                                 //瀛樺湪灏卞彧淇敼 name鍜実bId
                                 streamPushItemForUpdate.add(streamPushItem);
                             }
                         }
-                        if (streamPushItemForSave.size() > 0) {
-
+                        if (!streamPushItemForSave.isEmpty()) {
                             logger.info("娣诲姞{}鏉�",streamPushItemForSave.size());
                             logger.info(JSONObject.toJSONString(streamPushItemForSave));
                             streamPushService.batchAdd(streamPushItemForSave);
 
                         }
-                        if(streamPushItemForUpdate.size()>0){
+                        if(!streamPushItemForUpdate.isEmpty()){
                             logger.info("淇敼{}鏉�",streamPushItemForUpdate.size());
                             logger.info(JSONObject.toJSONString(streamPushItemForUpdate));
                             gbStreamService.updateGbIdOrName(streamPushItemForUpdate);
                         }
                     }catch (Exception e) {
-                        logger.warn("[REDIS娑堟伅-鎺ㄦ祦璁惧鍒楄〃鏇存柊] 鍙戠幇鏈鐞嗙殑寮傚父, \r\n{}", JSON.toJSONString(message));
+                        logger.warn("[REDIS娑堟伅-鎺ㄦ祦璁惧鍒楄〃鏇存柊] 鍙戠幇鏈鐞嗙殑寮傚父, \r\n{}", new String(message.getBody()));
                         logger.error("[REDIS娑堟伅-鎺ㄦ祦璁惧鍒楄〃鏇存柊] 寮傚父鍐呭锛� ", e);
                     }
                 }

--
Gitblit v1.8.0