From ab491a079ba4ab85ffef35d14c0767eba01455d8 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 15 一月 2025 09:18:36 +0800
Subject: [PATCH] 切正式服

---
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java |   95 +++++++++++++++++++++++++++--------------------
 1 files changed, 54 insertions(+), 41 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 652bcdd..18de78a 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -26,6 +26,7 @@
 import com.genersoft.iot.vmp.storager.dao.*;
 import com.genersoft.iot.vmp.utils.DateUtil;
 import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
+import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.slf4j.Logger;
@@ -126,18 +127,13 @@
             streamPushMapper.update(transform);
             gbStreamMapper.updateMediaServer(event.getApp(), event.getStream(), event.getMediaServer().getId());
         }
-        // TODO 鐩稿叧鐨勪簨浠惰嚜琛岀鐞嗭紝涓嶉渶瑕佸啓鍏LMMediaListManager
-//        ChannelOnlineEvent channelOnlineEventLister = getChannelOnlineEventLister(transform.getApp(), transform.getStream());
-//        if ( channelOnlineEventLister != null)  {
-//            try {
-//                channelOnlineEventLister.run(transform.getApp(), transform.getStream(), transform.getServerId());;
-//            } catch (ParseException e) {
-//                logger.error("addPush: ", e);
-//            }
-//            removedChannelOnlineEventLister(transform.getApp(), transform.getStream());
-//        }
         // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
-        redisCatchStorage.addPushListItem(event.getApp(), event.getStream(), event);
+        if (!"broadcast".equals(event.getApp()) && !"talk".equals(event.getApp())) {
+            StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(
+                    event.getMediaServer(), event.getApp(), event.getStream(), event.getMediaInfo(), event.getCallId());
+            event.getHookParam().setStreamInfo(new StreamContent(streamInfo));
+            redisCatchStorage.addPushListItem(event.getApp(), event.getStream(), event);
+        }
 
         // 鍙戦�佹祦鍙樺寲redis娑堟伅
         JSONObject jsonObject = new JSONObject();
@@ -156,10 +152,10 @@
     @EventListener
     public void onApplicationEvent(MediaDepartureEvent event) {
         // 鍏煎娴佹敞閿�鏃剁被鍨嬩粠redis璁板綍鑾峰彇
-        OnStreamChangedHookParam onStreamChangedHookParam = redisCatchStorage.getStreamInfo(
+        MediaInfo mediaInfo = redisCatchStorage.getStreamInfo(
                 event.getApp(), event.getStream(), event.getMediaServer().getId());
-        if (onStreamChangedHookParam != null) {
-            String type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
+        if (mediaInfo != null) {
+            String type = OriginType.values()[mediaInfo.getOriginType()].getType();
             redisCatchStorage.removeStream(event.getMediaServer().getId(), type, event.getApp(), event.getStream());
             if ("PUSH".equalsIgnoreCase(type)) {
                 // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
@@ -217,7 +213,7 @@
         streamPushItem.setStream(item.getStream());
         streamPushItem.setAliveSecond(item.getAliveSecond());
         streamPushItem.setOriginSock(item.getOriginSock());
-        streamPushItem.setTotalReaderCount(item.getTotalReaderCount() + "");
+        streamPushItem.setTotalReaderCount(item.getTotalReaderCount());
         streamPushItem.setOriginType(item.getOriginType());
         streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
         streamPushItem.setOriginUrl(item.getOriginUrl());
@@ -274,19 +270,19 @@
     }
 
     @Override
-    public boolean stop(String app, String streamId) {
-        logger.info("[鎺ㄦ祦 ] 鍋滄娴侊細 {}/{}", app, streamId);
-        StreamPushItem streamPushItem = streamPushMapper.selectOne(app, streamId);
+    public boolean stop(String app, String stream) {
+        logger.info("[鎺ㄦ祦 ] 鍋滄娴侊細 {}/{}", app, stream);
+        StreamPushItem streamPushItem = streamPushMapper.selectOne(app, stream);
         if (streamPushItem != null) {
             gbStreamService.sendCatalogMsg(streamPushItem, CatalogEvent.DEL);
         }
 
-        platformGbStreamMapper.delByAppAndStream(app, streamId);
-        gbStreamMapper.del(app, streamId);
-        int delStream = streamPushMapper.del(app, streamId);
+        platformGbStreamMapper.delByAppAndStream(app, stream);
+        gbStreamMapper.del(app, stream);
+        int delStream = streamPushMapper.del(app, stream);
         if (delStream > 0) {
             MediaServer mediaServerItem = mediaServerService.getOne(streamPushItem.getMediaServerId());
-            mediaServerService.closeStreams(mediaServerItem,app, streamId);
+            mediaServerService.closeStreams(mediaServerItem,app, stream);
         }
         return true;
     }
@@ -302,8 +298,8 @@
         List<StreamPushItem> pushList = getPushList(mediaServerId);
         Map<String, StreamPushItem> pushItemMap = new HashMap<>();
         // redis璁板綍
-        List<OnStreamChangedHookParam> onStreamChangedHookParams = redisCatchStorage.getStreams(mediaServerId, "PUSH");
-        Map<String, OnStreamChangedHookParam> streamInfoPushItemMap = new HashMap<>();
+        List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
+        Map<String, MediaInfo> streamInfoPushItemMap = new HashMap<>();
         if (pushList.size() > 0) {
             for (StreamPushItem streamPushItem : pushList) {
                 if (ObjectUtils.isEmpty(streamPushItem.getGbId())) {
@@ -311,9 +307,9 @@
                 }
             }
         }
-        if (onStreamChangedHookParams.size() > 0) {
-            for (OnStreamChangedHookParam onStreamChangedHookParam : onStreamChangedHookParams) {
-                streamInfoPushItemMap.put(onStreamChangedHookParam.getApp() + onStreamChangedHookParam.getStream(), onStreamChangedHookParam);
+        if (mediaInfoList.size() > 0) {
+            for (MediaInfo mediaInfo : mediaInfoList) {
+                streamInfoPushItemMap.put(mediaInfo.getApp() + mediaInfo.getStream(), mediaInfo);
             }
         }
         // 鑾峰彇鎵�鏈夋帹娴侀壌鏉冧俊鎭紝娓呯悊杩囨湡鐨�
@@ -352,21 +348,21 @@
             }
 
         }
-        Collection<OnStreamChangedHookParam> offlineOnStreamChangedHookParamList = streamInfoPushItemMap.values();
-        if (offlineOnStreamChangedHookParamList.size() > 0) {
+        Collection<MediaInfo> mediaInfos = streamInfoPushItemMap.values();
+        if (mediaInfos.size() > 0) {
             String type = "PUSH";
-            for (OnStreamChangedHookParam offlineOnStreamChangedHookParam : offlineOnStreamChangedHookParamList) {
+            for (MediaInfo mediaInfo : mediaInfos) {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("serverId", userSetting.getServerId());
-                jsonObject.put("app", offlineOnStreamChangedHookParam.getApp());
-                jsonObject.put("stream", offlineOnStreamChangedHookParam.getStream());
+                jsonObject.put("app", mediaInfo.getApp());
+                jsonObject.put("stream", mediaInfo.getStream());
                 jsonObject.put("register", false);
                 jsonObject.put("mediaServerId", mediaServerId);
                 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
                 // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
-                redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream());
+                redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", mediaInfo.getApp(), mediaInfo.getStream());
                 // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
-                redisCatchStorage.removePushListItem(offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream(), mediaServerItem.getId());
+                redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerItem.getId());
             }
         }
 
@@ -391,21 +387,21 @@
         // 鍙戦�佹祦鍋滄娑堟伅
         String type = "PUSH";
         // 鍙戦�乺edis娑堟伅
-        List<OnStreamChangedHookParam> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
-        if (streamInfoList.size() > 0) {
-            for (OnStreamChangedHookParam onStreamChangedHookParam : streamInfoList) {
+        List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, type);
+        if (mediaInfoList.size() > 0) {
+            for (MediaInfo mediaInfo : mediaInfoList) {
                 // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
-                redisCatchStorage.removeStream(mediaServerId, type, onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream());
+                redisCatchStorage.removeStream(mediaServerId, type, mediaInfo.getApp(), mediaInfo.getStream());
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("serverId", userSetting.getServerId());
-                jsonObject.put("app", onStreamChangedHookParam.getApp());
-                jsonObject.put("stream", onStreamChangedHookParam.getStream());
+                jsonObject.put("app", mediaInfo.getApp());
+                jsonObject.put("stream", mediaInfo.getStream());
                 jsonObject.put("register", false);
                 jsonObject.put("mediaServerId", mediaServerId);
                 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
 
                 // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
-                redisCatchStorage.removePushListItem(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), mediaServerId);
+                redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerId);
             }
         }
     }
@@ -633,4 +629,21 @@
     public Map<String, StreamPushItem> getAllAppAndStreamMap() {
         return streamPushMapper.getAllAppAndStreamMap();
     }
+
+    @Override
+    public void updatePush(OnStreamChangedHookParam param) {
+        StreamPushItem transform = transform(param);
+        StreamPushItem pushInDb = getPush(param.getApp(), param.getStream());
+        transform.setPushIng(param.isRegist());
+        transform.setUpdateTime(DateUtil.getNow());
+        transform.setPushTime(DateUtil.getNow());
+        transform.setSelf(userSetting.getServerId().equals(param.getSeverId()));
+        if (pushInDb == null) {
+            transform.setCreateTime(DateUtil.getNow());
+            streamPushMapper.add(transform);
+        }else {
+            streamPushMapper.update(transform);
+            gbStreamMapper.updateMediaServer(param.getApp(), param.getStream(), param.getMediaServerId());
+        }
+    }
 }

--
Gitblit v1.8.0