From ab81136765f1b641223b982b2baef13e06307fe4 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 08 十二月 2021 16:45:50 +0800
Subject: [PATCH] 优化适配zlm的hook保活

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java |   50 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 47 insertions(+), 3 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 a5a4be7..b7454a8 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
@@ -152,6 +152,49 @@
 	}
 
 	@Override
+	public void updateChannels(String deviceId, List<DeviceChannel> channels) {
+		List<DeviceChannel> addChannels = new ArrayList<>();
+		List<DeviceChannel> updateChannels = new ArrayList<>();
+		HashMap<String, DeviceChannel> channelsInStore = new HashMap<>();
+		if (channels != null && channels.size() > 0) {
+			List<DeviceChannel> channelList = deviceChannelMapper.queryChannelsByDeviceId(deviceId);
+			if (channelList.size() == 0) {
+				for (DeviceChannel channel : channels) {
+					channel.setDeviceId(deviceId);
+					channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId()));
+					String now = this.format.format(System.currentTimeMillis());
+					channel.setUpdateTime(now);
+					channel.setCreateTime(now);
+					addChannels.add(channel);
+				}
+			}else {
+				for (DeviceChannel deviceChannel : channelList) {
+					channelsInStore.put(deviceChannel.getChannelId(), deviceChannel);
+				}
+				for (DeviceChannel channel : channels) {
+					String channelId = channel.getChannelId();
+					channel.setDeviceId(deviceId);
+					channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId()));
+					String now = this.format.format(System.currentTimeMillis());
+					channel.setUpdateTime(now);
+					if (channelsInStore.get(channel.getChannelId()) != null) {
+						updateChannels.add(channel);
+					}else {
+						addChannels.add(channel);
+						channel.setCreateTime(now);
+					}
+				}
+			}
+			if (addChannels.size() > 0) {
+				deviceChannelMapper.batchAdd(addChannels);
+			}
+			if (updateChannels.size() > 0) {
+				deviceChannelMapper.batchUpdate(updateChannels);
+			}
+		}
+	}
+
+	@Override
 	public void deviceChannelOnline(String deviceId, String channelId) {
 		deviceChannelMapper.online(deviceId, channelId);
 	}
@@ -186,19 +229,19 @@
 	public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count) {
 		// 鑾峰彇鍒版墍鏈夋鍦ㄦ挱鏀剧殑娴�
 		PageHelper.startPage(page, count);
-		List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, null, query, hasSubChannel, online);
+		List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, null, query, hasSubChannel, online);
 		return new PageInfo<>(all);
 	}
 
 	@Override
 	public List<DeviceChannel> queryChannelsByDeviceId(String deviceId) {
-		return deviceChannelMapper.queryChannelsByDeviceId(deviceId, null,null, null, null);
+		return deviceChannelMapper.queryChannels(deviceId, null,null, null, null);
 	}
 
 	@Override
 	public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) {
 		PageHelper.startPage(page, count);
-		List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, parentChannelId, null, null, null);
+		List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, parentChannelId, null, null, null);
 		return new PageInfo<>(all);
 	}
 
@@ -695,4 +738,5 @@
 	public StreamProxyItem getStreamProxyByAppAndStream(String app, String streamId) {
 		return streamProxyMapper.selectOne(app, streamId);
 	}
+
 }

--
Gitblit v1.8.0