From 6e0f7fae6eda7ffa18c4289d19a705f272174911 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 05 一月 2022 15:23:14 +0800
Subject: [PATCH] 为级联平台增加虚拟目录功能

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java |   95 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 93 insertions(+), 2 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 1d8d83a..7f0efcd 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
@@ -71,6 +71,9 @@
 
 	@Autowired
     private GbStreamMapper gbStreamMapper;
+
+	@Autowired
+    private PlatformCatalogMapper catalogMapper;
 ;
 
 	@Autowired
@@ -449,6 +452,9 @@
 
 	@Override
 	public boolean addParentPlatform(ParentPlatform parentPlatform) {
+		if (parentPlatform.getCatalogId() == null) {
+			parentPlatform.setCatalogId(parentPlatform.getServerGBId());
+		}
 		int result = platformMapper.addParentPlatform(parentPlatform);
 		return result > 0;
 	}
@@ -458,6 +464,9 @@
 		int result = 0;
 		ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId());
 		if (parentPlatform.getId() == null ) {
+			if (parentPlatform.getCatalogId() == null) {
+				parentPlatform.setCatalogId(parentPlatform.getServerGBId());
+			}
 			result = platformMapper.addParentPlatform(parentPlatform);
 			if (parentPlatformCatch == null) {
 				parentPlatformCatch = new ParentPlatformCatch();
@@ -480,8 +489,11 @@
 		// 鍏变韩鎵�鏈夎棰戞祦锛岄渶瑕佸皢鐜版湁瑙嗛娴佹坊鍔犲埌姝ゅ钩鍙�
 		List<GbStream> gbStreams = gbStreamMapper.selectAll();
 		if (gbStreams.size() > 0) {
+			for (GbStream gbStream : gbStreams) {
+				gbStream.setCatalogId(parentPlatform.getCatalogId());
+			}
 			if (parentPlatform.isShareAllLiveStream()) {
-				gbStreamService.addPlatformInfo(gbStreams, parentPlatform.getServerGBId());
+				gbStreamService.addPlatformInfo(gbStreams, parentPlatform.getServerGBId(), parentPlatform.getCatalogId());
 			}else {
 				gbStreamService.delPlatformInfo(gbStreams);
 			}
@@ -536,10 +548,11 @@
 	}
 
 	@Override
-	public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
+	public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId) {
 
 		Map<String, ChannelReduce> deviceAndChannels = new HashMap<>();
 		for (ChannelReduce channelReduce : channelReduces) {
+			channelReduce.setCatalogId(catalogId);
 			deviceAndChannels.put(channelReduce.getDeviceId() + "_" + channelReduce.getChannelId(), channelReduce);
 		}
 		List<String> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
@@ -574,6 +587,18 @@
 	public DeviceChannel queryChannelInParentPlatform(String platformId, String channelId) {
 		DeviceChannel channel = platformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
 		return channel;
+	}
+
+	@Override
+	public List<PlatformCatalog> queryChannelInParentPlatformAndCatalog(String platformId, String catalogId) {
+		List<PlatformCatalog> catalogs = platformChannelMapper.queryChannelInParentPlatformAndCatalog(platformId, catalogId);
+		return catalogs;
+	}
+
+	@Override
+	public List<PlatformCatalog> queryStreamInParentPlatformAndCatalog(String platformId, String catalogId) {
+		List<PlatformCatalog> catalogs = platformGbStreamMapper.queryChannelInParentPlatformAndCatalogForCatlog(platformId, catalogId);
+		return catalogs;
 	}
 
 	@Override
@@ -739,6 +764,7 @@
 			List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream();
 			if (parentPlatforms.size() > 0) {
 				for (ParentPlatform parentPlatform : parentPlatforms) {
+					streamPushItem.setCatalogId(parentPlatform.getCatalogId());
 					streamPushItem.setPlatformId(parentPlatform.getServerGBId());
 					String stream = streamPushItem.getStream();
 					StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(streamPushItem.getApp(), stream, parentPlatform.getServerGBId());
@@ -804,4 +830,69 @@
 		return streamProxyMapper.selectOne(app, streamId);
 	}
 
+	@Override
+	public List<PlatformCatalog> getChildrenCatalogByPlatform(String platformId, String parentId) {
+		return catalogMapper.selectByParentId(platformId, parentId);
+	}
+
+	@Override
+	public int addCatalog(PlatformCatalog platformCatalog) {
+		return catalogMapper.add(platformCatalog);
+	}
+
+	@Override
+	public PlatformCatalog getCatalog(String id) {
+		return catalogMapper.select(id);
+	}
+
+	@Override
+	public int delCatalog(String id) {
+		PlatformCatalog platformCatalog = catalogMapper.select(id);
+		if (platformCatalog.getChildrenCount() > 0) {
+			List<PlatformCatalog> platformCatalogList = catalogMapper.selectByParentId(platformCatalog.getPlatformId(), platformCatalog.getId());
+			for (PlatformCatalog catalog : platformCatalogList) {
+				if (catalog.getChildrenCount() == 0) {
+					catalogMapper.del(catalog.getId());
+					platformGbStreamMapper.delByCatalogId(catalog.getId());
+					platformChannelMapper.delByCatalogId(catalog.getId());
+				}else {
+					delCatalog(catalog.getId());
+				}
+			}
+		}
+		int delresult =  catalogMapper.del(id);
+		int delStreamresult = platformGbStreamMapper.delByCatalogId(id);
+		int delChanneresult = platformChannelMapper.delByCatalogId(id);
+		return delresult + delChanneresult + delStreamresult;
+	}
+
+	@Override
+	public int updateCatalog(PlatformCatalog platformCatalog) {
+		return catalogMapper.update(platformCatalog);
+	}
+
+	@Override
+	public int setDefaultCatalog(String platformId, String catalogId) {
+		return platformMapper.setDefaultCatalog(platformId, catalogId);
+	}
+
+	@Override
+	public List<PlatformCatalog> queryCatalogInPlatform(String platformId) {
+		return catalogMapper.selectByPlatForm(platformId);
+	}
+
+	@Override
+	public int delRelation(PlatformCatalog platformCatalog) {
+		if (platformCatalog.getType() == 1) {
+			return platformChannelMapper.delByCatalogIdAndChannelIdAndPlatformId(platformCatalog);
+		}else if (platformCatalog.getType() == 2) {
+			List<GbStream> gbStreams = platformGbStreamMapper.queryChannelInParentPlatformAndCatalog(platformCatalog.getPlatformId(), platformCatalog.getParentId());
+			for (GbStream gbStream : gbStreams) {
+				if (gbStream.getGbId().equals(platformCatalog.getId())) {
+					return platformGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream());
+				}
+			}
+		}
+		return 0;
+	}
 }

--
Gitblit v1.8.0