From 7dc8fd4a1e8c5afb6fad53454935419c239838c0 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期四, 01 四月 2021 18:06:21 +0800
Subject: [PATCH] 添加拉流代理与国标关联, 支持代理rtsp/rtmp/...,转发到国标

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java |  102 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 77 insertions(+), 25 deletions(-)

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 071bf68..b2756e2 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
@@ -2,21 +2,20 @@
 
 import java.util.*;
 
-import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
-import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
-import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
-import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyDto;
+import com.genersoft.iot.vmp.gb28181.bean.*;
+import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
 import com.genersoft.iot.vmp.storager.dao.*;
 import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.stereotype.Component;
 
-import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Transactional;
 
 /**    
@@ -27,6 +26,11 @@
 @SuppressWarnings("rawtypes")
 @Component
 public class VideoManagerStoragerImpl implements IVideoManagerStorager {
+	@Autowired
+	DataSourceTransactionManager dataSourceTransactionManager;
+
+	@Autowired
+	TransactionDefinition transactionDefinition;
 
 	@Autowired
     private DeviceMapper deviceMapper;
@@ -44,12 +48,13 @@
     private IRedisCatchStorage redisCatchStorage;
 
 	@Autowired
-    private PatformChannelMapper patformChannelMapper;
+    private PlatformChannelMapper platformChannelMapper;
 
 	@Autowired
     private StreamProxyMapper streamProxyMapper;
 
-
+	@Autowired
+    private GbStreamMapper gbStreamMapper;
 
 
 	/**
@@ -283,7 +288,7 @@
 	public boolean deleteParentPlatform(ParentPlatform parentPlatform) {
 		int result = platformMapper.delParentPlatform(parentPlatform);
 		// 鍒犻櫎鍏宠仈鐨勯�氶亾
-		patformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId());
+		platformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId());
 		return result > 0;
 	}
 
@@ -333,7 +338,7 @@
 		}
 		List<String> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
 		// 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨�
-		List<String> relatedPlatformchannels = patformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList);
+		List<String> relatedPlatformchannels = platformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList);
 		if (relatedPlatformchannels != null) {
 			deviceAndChannelList.removeAll(relatedPlatformchannels);
 		}
@@ -344,7 +349,7 @@
 		// 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍
 		int result = 0;
 		if (channelReducesToAdd.size() > 0) {
-			result = patformChannelMapper.addChannels(platformId, channelReducesToAdd);
+			result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
 		}
 
 		return result;
@@ -354,20 +359,20 @@
 	@Override
 	public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
 
-		int result = patformChannelMapper.delChannelForGB(platformId, channelReduces);
+		int result = platformChannelMapper.delChannelForGB(platformId, channelReduces);
 
 		return result;
 	}
 
 	@Override
 	public DeviceChannel queryChannelInParentPlatform(String platformId, String channelId) {
-		DeviceChannel channel = patformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
+		DeviceChannel channel = platformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
 		return channel;
 	}
 
 	@Override
 	public Device queryVideoDeviceByPlatformIdAndChannelId(String platformId, String channelId) {
-		Device device = patformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
+		Device device = platformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
 		return device;
 	}
 
@@ -390,27 +395,54 @@
 
 	/**
 	 * 鏂板浠g悊娴�
-	 * @param streamProxyDto
+	 * @param streamProxyItem
 	 * @return
 	 */
 	@Override
-	public int addStreamProxy(StreamProxyDto streamProxyDto) {
-		return streamProxyMapper.add(streamProxyDto);
+	public boolean addStreamProxy(StreamProxyItem streamProxyItem) {
+		TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+		boolean result = false;
+		streamProxyItem.setStreamType("proxy");
+		try {
+			if (gbStreamMapper.add(streamProxyItem)<0 || streamProxyMapper.add(streamProxyItem) < 0) {
+				//浜嬪姟鍥炴粴
+				dataSourceTransactionManager.rollback(transactionStatus);
+			}
+			result = true;
+			dataSourceTransactionManager.commit(transactionStatus);     //鎵嬪姩鎻愪氦
+		}catch (Exception e) {
+			dataSourceTransactionManager.rollback(transactionStatus);
+		}
+		return result;
 	}
 
 	/**
 	 * 鏇存柊浠g悊娴�
-	 * @param streamProxyDto
+	 * @param streamProxyItem
 	 * @return
 	 */
 	@Override
-	public int updateStreamProxy(StreamProxyDto streamProxyDto) {
-		return streamProxyMapper.update(streamProxyDto);
+	public boolean updateStreamProxy(StreamProxyItem streamProxyItem) {
+		TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+		boolean result = false;
+		streamProxyItem.setStreamType("proxy");
+		try {
+			if (gbStreamMapper.update(streamProxyItem)<0 || streamProxyMapper.update(streamProxyItem) < 0) {
+				//浜嬪姟鍥炴粴
+				dataSourceTransactionManager.rollback(transactionStatus);
+			}
+			dataSourceTransactionManager.commit(transactionStatus);     //鎵嬪姩鎻愪氦
+			result = true;
+		}catch (Exception e) {
+			dataSourceTransactionManager.rollback(transactionStatus);
+		}
+		return result;
 	}
 
 	/**
 	 * 绉婚櫎浠g悊娴�
-	 * @param id
+	 * @param app
+	 * @param stream
 	 * @return
 	 */
 	@Override
@@ -424,7 +456,7 @@
 	 * @return
 	 */
 	@Override
-	public List<StreamProxyDto> getStreamProxyListForEnable(boolean enable) {
+	public List<StreamProxyItem> getStreamProxyListForEnable(boolean enable) {
 		return streamProxyMapper.selectForEnable(enable);
 	}
 
@@ -435,12 +467,32 @@
 	 * @return
 	 */
 	@Override
-	public PageInfo<StreamProxyDto> queryStreamProxyList(Integer page, Integer count) {
+	public PageInfo<StreamProxyItem> queryStreamProxyList(Integer page, Integer count) {
 		PageHelper.startPage(page, count);
-		List<StreamProxyDto> all = streamProxyMapper.selectAll();
+		List<StreamProxyItem> all = streamProxyMapper.selectAll();
 		return new PageInfo<>(all);
 	}
 
+	/**
+	 * 鏍规嵁鍥芥爣ID鑾峰彇骞冲彴鍏宠仈鐨勭洿鎾祦
+	 * @param platformId
+	 * @param gbId
+	 * @return
+	 */
+	@Override
+	public GbStream queryStreamInParentPlatform(String platformId, String gbId) {
+		return gbStreamMapper.queryStreamInPlatform(platformId, gbId);
+	}
+
+	/**
+	 * 鑾峰彇骞冲彴鍏宠仈鐨勭洿鎾祦
+	 * @param platformId
+	 * @return
+	 */
+	@Override
+	public List<GbStream> queryGbStreamListInPlatform(String platformId) {
+		return gbStreamMapper.queryGbStreamListInPlatform(platformId);
+	}
 
 	/**
 	 * 鎸夌収鏄痑pp鍜宻tream鑾峰彇浠g悊娴�
@@ -449,7 +501,7 @@
 	 * @return
 	 */
 	@Override
-	public StreamProxyDto queryStreamProxy(String app, String stream){
+	public StreamProxyItem queryStreamProxy(String app, String stream){
 		return streamProxyMapper.selectOne(app, stream);
 	}
 }

--
Gitblit v1.8.0