|
|
@@ -1,6 +1,9 @@
|
|
|
package com.genersoft.iot.vmp.storager.impl;
|
|
|
|
|
|
+import com.genersoft.iot.vmp.conf.SipConfig;
|
|
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
|
|
+import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
|
|
+import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
|
|
|
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
|
|
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
|
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
|
|
@@ -27,9 +30,9 @@ import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
- * @description:视频设备数据存储-jdbc实现
|
|
|
- * @author: swwheihei
|
|
|
- * @date: 2020年5月6日 下午2:31:42
|
|
|
+ * 视频设备数据存储-jdbc实现
|
|
|
+ * swwheihei
|
|
|
+ * 2020年5月6日 下午2:31:42
|
|
|
*/
|
|
|
@SuppressWarnings("rawtypes")
|
|
|
@Component
|
|
|
@@ -37,6 +40,12 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(VideoManagerStoragerImpl.class);
|
|
|
|
|
|
+ @Autowired
|
|
|
+ EventPublisher eventPublisher;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SipConfig sipConfig;
|
|
|
+
|
|
|
@Autowired
|
|
|
DataSourceTransactionManager dataSourceTransactionManager;
|
|
|
|
|
|
@@ -134,6 +143,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
return deviceMapper.add(device) > 0;
|
|
|
}else {
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
+
|
|
|
return deviceMapper.update(device) > 0;
|
|
|
}
|
|
|
|
|
|
@@ -408,6 +418,8 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
device.setOnline(1);
|
|
|
logger.info("更新设备在线: " + deviceId);
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
+ List<DeviceChannel> deviceChannelList = deviceChannelMapper.queryOnlineChannelsByDeviceId(deviceId);
|
|
|
+ eventPublisher.catalogEventPublish(null, deviceChannelList, CatalogEvent.ON);
|
|
|
return deviceMapper.update(device) > 0;
|
|
|
}
|
|
|
|
|
|
@@ -514,7 +526,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
if (parentPlatform.isShareAllLiveStream()) {
|
|
|
gbStreamService.addPlatformInfo(gbStreams, parentPlatform.getServerGBId(), parentPlatform.getCatalogId());
|
|
|
}else {
|
|
|
- gbStreamService.delPlatformInfo(gbStreams);
|
|
|
+ gbStreamService.delPlatformInfo(parentPlatform.getServerGBId(), gbStreams);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -590,6 +602,9 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
int result = 0;
|
|
|
if (channelReducesToAdd.size() > 0) {
|
|
|
result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
|
|
|
+ // TODO 后续给平台增加控制开关以控制是否响应目录订阅
|
|
|
+ List<DeviceChannel> deviceChannelList = getDeviceChannelListByChannelReduceList(channelReducesToAdd, catalogId);
|
|
|
+ eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.ADD);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
@@ -600,7 +615,13 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
|
|
|
|
|
|
int result = platformChannelMapper.delChannelForGB(platformId, channelReduces);
|
|
|
-
|
|
|
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
|
|
|
+ for (ChannelReduce channelReduce : channelReduces) {
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(channelReduce.getChannelId());
|
|
|
+ deviceChannelList.add(deviceChannel);
|
|
|
+ }
|
|
|
+ eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.DEL);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@@ -739,7 +760,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<GbStream> queryStreamInParentPlatform(String platformId, String gbId) {
|
|
|
+ public GbStream queryStreamInParentPlatform(String platformId, String gbId) {
|
|
|
return gbStreamMapper.queryStreamInPlatform(platformId, gbId);
|
|
|
}
|
|
|
|
|
|
@@ -771,7 +792,11 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
streamPushMapper.addAll(streamPushItems);
|
|
|
// TODO 待优化
|
|
|
for (int i = 0; i < streamPushItems.size(); i++) {
|
|
|
- gbStreamMapper.setStatus(streamPushItems.get(i).getApp(), streamPushItems.get(i).getStream(), true);
|
|
|
+ int onlineResult = gbStreamMapper.setStatus(streamPushItems.get(i).getApp(), streamPushItems.get(i).getStream(), true);
|
|
|
+ if (onlineResult > 0) {
|
|
|
+ // 发送上线通知
|
|
|
+ eventPublisher.catalogEventPublishForStream(null, streamPushItems.get(i), CatalogEvent.ON);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -780,6 +805,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
streamPushMapper.del(streamPushItem.getApp(), streamPushItem.getStream());
|
|
|
streamPushMapper.add(streamPushItem);
|
|
|
gbStreamMapper.setStatus(streamPushItem.getApp(), streamPushItem.getStream(), true);
|
|
|
+
|
|
|
if(!StringUtils.isEmpty(streamPushItem.getGbId() )){
|
|
|
// 查找开启了全部直播流共享的上级平台
|
|
|
List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream();
|
|
|
@@ -858,7 +884,12 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
|
|
|
@Override
|
|
|
public int addCatalog(PlatformCatalog platformCatalog) {
|
|
|
- return catalogMapper.add(platformCatalog);
|
|
|
+ int result = catalogMapper.add(platformCatalog);
|
|
|
+ if (result > 0) {
|
|
|
+ DeviceChannel deviceChannel = getDeviceChannelByCatalog(platformCatalog);
|
|
|
+ eventPublisher.catalogEventPublish(platformCatalog.getPlatformId(), deviceChannel, CatalogEvent.ADD);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -873,23 +904,56 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
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());
|
|
|
+ delCatalogExecute(catalog.getId(), catalog.getPlatformId());
|
|
|
}else {
|
|
|
delCatalog(catalog.getId());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ return delCatalogExecute(id, platformCatalog.getPlatformId());
|
|
|
+ }
|
|
|
+ private int delCatalogExecute(String id, String platformId) {
|
|
|
int delresult = catalogMapper.del(id);
|
|
|
+ DeviceChannel deviceChannelForCatalog = new DeviceChannel();
|
|
|
+ if (delresult > 0){
|
|
|
+ deviceChannelForCatalog.setChannelId(id);
|
|
|
+ eventPublisher.catalogEventPublish(platformId, deviceChannelForCatalog, CatalogEvent.DEL);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<GbStream> gbStreams = platformGbStreamMapper.queryChannelInParentPlatformAndCatalog(platformId, id);
|
|
|
+ if (gbStreams.size() > 0){
|
|
|
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
|
|
|
+ for (GbStream gbStream : gbStreams) {
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(gbStream.getGbId());
|
|
|
+ deviceChannelList.add(deviceChannel);
|
|
|
+ }
|
|
|
+ eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.DEL);
|
|
|
+ }
|
|
|
int delStreamresult = platformGbStreamMapper.delByCatalogId(id);
|
|
|
- int delChanneresult = platformChannelMapper.delByCatalogId(id);
|
|
|
- return delresult + delChanneresult + delStreamresult;
|
|
|
+ List<PlatformCatalog> platformCatalogs = platformChannelMapper.queryChannelInParentPlatformAndCatalog(platformId, id);
|
|
|
+ if (platformCatalogs.size() > 0){
|
|
|
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
|
|
|
+ for (PlatformCatalog platformCatalog : platformCatalogs) {
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(platformCatalog.getId());
|
|
|
+ deviceChannelList.add(deviceChannel);
|
|
|
+ }
|
|
|
+ eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.DEL);
|
|
|
+ }
|
|
|
+ int delChannelresult = platformChannelMapper.delByCatalogId(id);
|
|
|
+ return delresult + delChannelresult + delStreamresult;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public int updateCatalog(PlatformCatalog platformCatalog) {
|
|
|
- return catalogMapper.update(platformCatalog);
|
|
|
+ int result = catalogMapper.update(platformCatalog);
|
|
|
+ if (result > 0) {
|
|
|
+ DeviceChannel deviceChannel = getDeviceChannelByCatalog(platformCatalog);
|
|
|
+ eventPublisher.catalogEventPublish(platformCatalog.getPlatformId(), deviceChannel, CatalogEvent.UPDATE);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -905,11 +969,17 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
@Override
|
|
|
public int delRelation(PlatformCatalog platformCatalog) {
|
|
|
if (platformCatalog.getType() == 1) {
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(platformCatalog.getId());
|
|
|
+ eventPublisher.catalogEventPublish(platformCatalog.getPlatformId(), deviceChannel, CatalogEvent.DEL);
|
|
|
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())) {
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(gbStream.getGbId());
|
|
|
+ eventPublisher.catalogEventPublish(platformCatalog.getPlatformId(), deviceChannel, CatalogEvent.DEL);
|
|
|
return platformGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream());
|
|
|
}
|
|
|
}
|
|
|
@@ -921,4 +991,57 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|
|
public int updateStreamGPS(List<GPSMsgInfo> gpsMsgInfos) {
|
|
|
return gbStreamMapper.updateStreamGPS(gpsMsgInfos);
|
|
|
}
|
|
|
+
|
|
|
+ private List<DeviceChannel> getDeviceChannelListByChannelReduceList(List<ChannelReduce> channelReduces, String catalogId) {
|
|
|
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
|
|
|
+ if (channelReduces.size() > 0){
|
|
|
+ for (ChannelReduce channelReduce : channelReduces) {
|
|
|
+ DeviceChannel deviceChannel = queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
|
|
|
+ deviceChannel.setParental(1);
|
|
|
+ deviceChannel.setParentId(catalogId);
|
|
|
+ deviceChannelList.add(deviceChannel);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return deviceChannelList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private DeviceChannel getDeviceChannelByCatalog(PlatformCatalog catalog) {
|
|
|
+ ParentPlatform parentPlatByServerGBId = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());
|
|
|
+ DeviceChannel deviceChannel = new DeviceChannel();
|
|
|
+ deviceChannel.setChannelId(catalog.getId());
|
|
|
+ deviceChannel.setName(catalog.getName());
|
|
|
+ deviceChannel.setLongitude(0.0);
|
|
|
+ deviceChannel.setLatitude(0.0);
|
|
|
+ deviceChannel.setDeviceId(parentPlatByServerGBId.getDeviceGBId());
|
|
|
+ deviceChannel.setManufacture("wvp-pro");
|
|
|
+ deviceChannel.setStatus(1);
|
|
|
+ deviceChannel.setParental(1);
|
|
|
+ deviceChannel.setParentId(catalog.getParentId());
|
|
|
+ deviceChannel.setRegisterWay(1);
|
|
|
+ deviceChannel.setCivilCode(sipConfig.getDomain());
|
|
|
+ deviceChannel.setModel("live");
|
|
|
+ deviceChannel.setOwner("wvp-pro");
|
|
|
+ deviceChannel.setSecrecy("0");
|
|
|
+ return deviceChannel;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DeviceChannel> queryOnlineChannelsByDeviceId(String deviceId) {
|
|
|
+ return deviceChannelMapper.queryOnlineChannelsByDeviceId(deviceId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ParentPlatform> queryPlatFormListForGBWithGBId(String channelId, List<String> platforms) {
|
|
|
+ return platformChannelMapper.queryPlatFormListForGBWithGBId(channelId, platforms);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ParentPlatform> queryPlatFormListForStreamWithGBId(String app, String stream, List<String> platforms) {
|
|
|
+ return platformGbStreamMapper.queryPlatFormListForGBWithGBId(app, stream, platforms);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public GbStream getGbStream(String app, String streamId) {
|
|
|
+ return gbStreamMapper.selectOne(app, streamId);
|
|
|
+ }
|
|
|
}
|