From 5b0b17d7410785aef2bedb22447bd458a3713300 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 04 十二月 2021 17:27:23 +0800
Subject: [PATCH] 添加第三方服务参与的推流直接转发到国标功能

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 50 insertions(+), 1 deletions(-)

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 49fe098..baf0b3c 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
@@ -1,21 +1,28 @@
 package com.genersoft.iot.vmp.media.zlm;
 
 import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.conf.UserSetup;
+import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.service.IStreamPushService;
+import com.genersoft.iot.vmp.service.bean.ThirdPartyGB;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
 import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
+import com.genersoft.iot.vmp.storager.dao.StreamPushMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Component
 public class ZLMMediaListManager {
@@ -41,7 +48,13 @@
     private IStreamPushService streamPushService;
 
     @Autowired
+    private StreamPushMapper streamPushMapper;
+
+    @Autowired
     private ZLMHttpHookSubscribe subscribe;
+
+    @Autowired
+    private UserSetup userSetup;
 
 
     public void updateMediaList(MediaServerItem mediaServerItem) {
@@ -89,7 +102,43 @@
     }
 
     public void addMedia(MediaItem mediaItem) {
-        storager.updateMedia(streamPushService.transform(mediaItem));
+        // 鏌ユ壘姝ょ洿鎾祦鏄惁瀛樺湪redis棰勮gbId
+        StreamPushItem transform = streamPushService.transform(mediaItem);
+        // 浠巗treamId鍙栧嚭鏌ヨ鍏抽敭鍊�
+        Pattern pattern = Pattern.compile(userSetup.getThirdPartyGBIdReg());
+        Matcher matcher = pattern.matcher(mediaItem.getStream());// 鎸囧畾瑕佸尮閰嶇殑瀛楃涓�
+        String queryKey = null;
+        if (matcher.find()) { //姝ゅfind锛堬級姣忔琚皟鐢ㄥ悗锛屼細鍋忕Щ鍒颁笅涓�涓尮閰�
+            queryKey = matcher.group();
+        }
+        if (queryKey != null) {
+            ThirdPartyGB thirdPartyGB = redisCatchStorage.queryMemberNoGBId(queryKey);
+            if (thirdPartyGB != null && !StringUtils.isEmpty(thirdPartyGB.getNationalStandardNo())) {
+                transform.setGbId(thirdPartyGB.getNationalStandardNo());
+                transform.setName(thirdPartyGB.getName());
+            }
+        }
+        storager.updateMedia(transform);
+        if (!StringUtils.isEmpty(transform.getGbId())) {
+            // 濡傛灉杩欎釜鍥芥爣ID宸茬粡缁欎簡鍏朵粬鎺ㄦ祦涓旀祦宸茬绾匡紝鍒欑Щ闄ゅ叾浠栨帹娴�
+            List<GbStream> gbStreams = gbStreamMapper.selectByGBId(transform.getGbId());
+            if (gbStreams.size() > 0) {
+                for (GbStream gbStream : gbStreams) {
+                    // 鍑虹幇浣跨敤鐩稿悓鍥芥爣Id鐨勮棰戞祦鏃讹紝浣跨敤鏂版祦鏇挎崲鏃ф祦锛�
+                    gbStreamMapper.del(gbStream.getApp(), gbStream.getStream());
+                    platformGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream());
+                    if (!gbStream.isStatus()) {
+                        streamPushMapper.del(gbStream.getApp(), gbStream.getStream());
+                    }
+                }
+            }
+            if (gbStreamMapper.selectOne(transform.getApp(), transform.getStream()) != null) {
+                gbStreamMapper.update(transform);
+            }else {
+                gbStreamMapper.add(transform);
+            }
+
+        }
     }
 
 

--
Gitblit v1.8.0