From 2c0240e16f837aef6ce94aa48d862cc48e2c0cf0 Mon Sep 17 00:00:00 2001 From: lawrencehj <1934378145@qq.com> Date: 星期三, 23 六月 2021 16:01:28 +0800 Subject: [PATCH] 屏蔽测试代码 --- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java | 376 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 363 insertions(+), 13 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 22292ef..bbe8c2b 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 @@ -1,19 +1,27 @@ package com.genersoft.iot.vmp.storager.impl; +import java.text.SimpleDateFormat; import java.util.*; -import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; -import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; -import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; -import com.genersoft.iot.vmp.storager.dao.DeviceMapper; -import com.genersoft.iot.vmp.storager.dao.DeviceMobilePositionMapper; +import com.genersoft.iot.vmp.gb28181.bean.*; +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; +import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; +import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import com.genersoft.iot.vmp.storager.dao.*; +import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; 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; /** * @Description:瑙嗛璁惧鏁版嵁瀛樺偍-jdbc瀹炵幇 @@ -24,14 +32,45 @@ @Component public class VideoManagerStoragerImpl implements IVideoManagerStorager { + private Logger logger = LoggerFactory.getLogger(VideoManagerStoragerImpl.class); + + @Autowired + DataSourceTransactionManager dataSourceTransactionManager; + + @Autowired + TransactionDefinition transactionDefinition; + @Autowired private DeviceMapper deviceMapper; @Autowired private DeviceChannelMapper deviceChannelMapper; - + @Autowired private DeviceMobilePositionMapper deviceMobilePositionMapper; + + @Autowired + private ParentPlatformMapper platformMapper; + + @Autowired + private IRedisCatchStorage redisCatchStorage; + + @Autowired + private PlatformChannelMapper platformChannelMapper; + + @Autowired + private StreamProxyMapper streamProxyMapper; + + @Autowired + private StreamPushMapper streamPushMapper; + + @Autowired + private GbStreamMapper gbStreamMapper; + + @Autowired + private VideoStreamSessionManager streamSession; + + private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** @@ -66,8 +105,11 @@ */ @Override public synchronized boolean updateDevice(Device device) { + String now = this.format.format(new Date(System.currentTimeMillis())); + device.setUpdateTime(now); Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId()); if (deviceByDeviceId == null) { + device.setCreateTime(now); return deviceMapper.add(device) > 0; }else { return deviceMapper.update(device) > 0; @@ -79,8 +121,12 @@ public synchronized void updateChannel(String deviceId, DeviceChannel channel) { String channelId = channel.getChannelId(); channel.setDeviceId(deviceId); + channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId())); + String now = this.format.format(new Date(System.currentTimeMillis())); + channel.setUpdateTime(now); DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId); if (deviceChannel == null) { + channel.setCreateTime(now); deviceChannelMapper.add(channel); }else { deviceChannelMapper.update(channel); @@ -168,9 +214,22 @@ */ @Override public boolean delete(String deviceId) { - int result = deviceMapper.del(deviceId); - - return result > 0; + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + boolean result = false; + try { + if (platformChannelMapper.delChannelForDeviceId(deviceId) <0 // 鍒犻櫎涓庡浗鏍囧钩鍙扮殑鍏宠仈 + || deviceChannelMapper.cleanChannelsByDeviceId(deviceId) < 0 // 鍒犻櫎浠栫殑閫氶亾 + || deviceMapper.del(deviceId) < 0 // 绉婚櫎璁惧淇℃伅 + ) { + //浜嬪姟鍥炴粴 + dataSourceTransactionManager.rollback(transactionStatus); + } + result = true; + dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦 + }catch (Exception e) { + dataSourceTransactionManager.rollback(transactionStatus); + } + return result; } /** @@ -186,7 +245,7 @@ return false; } device.setOnline(1); - System.out.println("鏇存柊璁惧鍦ㄧ嚎"); + logger.info("鏇存柊璁惧鍦ㄧ嚎: " + deviceId); return deviceMapper.update(device) > 0; } @@ -198,10 +257,23 @@ */ @Override public synchronized boolean outline(String deviceId) { + logger.info("鏇存柊璁惧绂荤嚎: " + deviceId); Device device = deviceMapper.getDeviceByDeviceId(deviceId); + if (device == null) return false; device.setOnline(0); - System.out.println("鏇存柊璁惧绂荤嚎"); return deviceMapper.update(device) > 0; + } + + /** + * 鏇存柊鎵�鏈夎澶囩绾� + * + * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� + */ + @Override + public synchronized boolean outlineForAll() { + logger.info("鏇存柊鎵�鏈夎澶囩绾�"); + int result = deviceMapper.outlineForAll(); + return result > 0; } /** @@ -215,7 +287,7 @@ /** * 娣诲姞Mobile Position璁惧绉诲姩浣嶇疆 - * @param MobilePosition + * @param mobilePosition */ @Override public synchronized boolean insertMobilePosition(MobilePosition mobilePosition) { @@ -233,6 +305,132 @@ return deviceMobilePositionMapper.queryPositionByDeviceIdAndTime(deviceId, startTime, endTime); } + @Override + public boolean addParentPlatform(ParentPlatform parentPlatform) { + int result = platformMapper.addParentPlatform(parentPlatform); + return result > 0; + } + + @Override + public boolean updateParentPlatform(ParentPlatform parentPlatform) { + int result = 0; + ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId()); + if (parentPlatform.getId() == null ) { + result = platformMapper.addParentPlatform(parentPlatform); + if (parentPlatformCatch == null) { + parentPlatformCatch = new ParentPlatformCatch(); + parentPlatformCatch.setParentPlatform(parentPlatform); + parentPlatformCatch.setId(parentPlatform.getServerGBId()); + } + }else { + if (parentPlatformCatch == null) { // serverGBId 宸插彉鍖� + ParentPlatform parentPlatById = platformMapper.getParentPlatById(parentPlatform.getId()); + // 浣跨敤鏃х殑鏌ュ嚭缂撳瓨ID + parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatById.getServerGBId()); + parentPlatformCatch.setId(parentPlatform.getServerGBId()); + redisCatchStorage.delPlatformCatchInfo(parentPlatById.getServerGBId()); + } + result = platformMapper.updateParentPlatform(parentPlatform); + } + // 鏇存柊缂撳瓨 + parentPlatformCatch.setParentPlatform(parentPlatform); + redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch); + return result > 0; + } + + @Transactional + @Override + public boolean deleteParentPlatform(ParentPlatform parentPlatform) { + int result = platformMapper.delParentPlatform(parentPlatform); + // 鍒犻櫎鍏宠仈鐨勯�氶亾 + platformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId()); + return result > 0; + } + + @Override + public PageInfo<ParentPlatform> queryParentPlatformList(int page, int count) { + PageHelper.startPage(page, count); + List<ParentPlatform> all = platformMapper.getParentPlatformList(); + return new PageInfo<>(all); + } + + @Override + public ParentPlatform queryParentPlatByServerGBId(String platformGbId) { + return platformMapper.getParentPlatByServerGBId(platformGbId); + } + + @Override + public List<ParentPlatform> queryEnableParentPlatformList(boolean enable) { + return platformMapper.getEnableParentPlatformList(enable); + } + + @Override + public void outlineForAllParentPlatform() { + platformMapper.outlineForAllParentPlatform(); + } + + + @Override + public PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online, + Boolean channelType, String platformId, Boolean inPlatform) { + PageHelper.startPage(page, count); + List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform); + return new PageInfo<>(all); + } + + @Override + public List<ChannelReduce> queryChannelListInParentPlatform(String platformId) { + + return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, true); + } + + @Override + public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces) { + + Map<String, ChannelReduce> deviceAndChannels = new HashMap<>(); + for (ChannelReduce channelReduce : channelReduces) { + deviceAndChannels.put(channelReduce.getDeviceId() + "_" + channelReduce.getChannelId(), channelReduce); + } + List<String> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet()); + // 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨� + List<String> relatedPlatformchannels = platformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList); + if (relatedPlatformchannels != null) { + deviceAndChannelList.removeAll(relatedPlatformchannels); + } + for (String relatedPlatformchannel : relatedPlatformchannels) { + deviceAndChannels.remove(relatedPlatformchannel); + } + List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values()); + // 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍 + int result = 0; + if (channelReducesToAdd.size() > 0) { + result = platformChannelMapper.addChannels(platformId, channelReducesToAdd); + } + + return result; + } + + + @Override + public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) { + + int result = platformChannelMapper.delChannelForGB(platformId, channelReduces); + + return result; + } + + @Override + public DeviceChannel queryChannelInParentPlatform(String platformId, String channelId) { + DeviceChannel channel = platformChannelMapper.queryChannelInParentPlatform(platformId, channelId); + return channel; + } + + @Override + public Device queryVideoDeviceByPlatformIdAndChannelId(String platformId, String channelId) { + Device device = platformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId); + return device; + } + /** * 鏌ヨ鏈�鏂扮Щ鍔ㄤ綅缃� * @param deviceId @@ -249,4 +447,156 @@ public int clearMobilePositionsByDeviceId(String deviceId) { return deviceMobilePositionMapper.clearMobilePositionsByDeviceId(deviceId); } + + /** + * 鏂板浠g悊娴� + * @param streamProxyItem + * @return + */ + @Override + public boolean addStreamProxy(StreamProxyItem streamProxyItem) { + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + boolean result = false; + streamProxyItem.setStreamType("proxy"); + streamProxyItem.setStatus(true); + 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 streamProxyItem + * @return + */ + @Override + 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) { + e.printStackTrace(); + dataSourceTransactionManager.rollback(transactionStatus); + } + return result; + } + + /** + * 绉婚櫎浠g悊娴� + * @param app + * @param stream + * @return + */ + @Override + public int deleteStreamProxy(String app, String stream) { + return streamProxyMapper.del(app, stream); + } + + /** + * 鏍规嵁鏄惁鍚敤鑾峰彇浠g悊娴佸垪琛� + * @param enable + * @return + */ + @Override + public List<StreamProxyItem> getStreamProxyListForEnable(boolean enable) { + return streamProxyMapper.selectForEnable(enable); + } + + /** + * 鍒嗛〉鏌ヨ浠g悊娴佸垪琛� + * @param page + * @param count + * @return + */ + @Override + public PageInfo<StreamProxyItem> queryStreamProxyList(Integer page, Integer count) { + PageHelper.startPage(page, count); + 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悊娴� + * @param app + * @param stream + * @return + */ + @Override + public StreamProxyItem queryStreamProxy(String app, String stream){ + return streamProxyMapper.selectOne(app, stream); + } + + @Override + public void updateMediaList(List<StreamPushItem> streamPushItems) { + if (streamPushItems == null || streamPushItems.size() == 0) return; + logger.info("updateMediaList: " + streamPushItems.size()); + streamPushMapper.addAll(streamPushItems); + // TODO 寰呬紭鍖� + for (int i = 0; i < streamPushItems.size(); i++) { + gbStreamMapper.setStatus(streamPushItems.get(i).getApp(), streamPushItems.get(i).getStream(), true); + } + } + + @Override + public void updateMedia(StreamPushItem streamPushItem) { + streamPushMapper.del(streamPushItem.getApp(), streamPushItem.getStream()); + streamPushMapper.add(streamPushItem); + gbStreamMapper.setStatus(streamPushItem.getApp(), streamPushItem.getStream(), true); + } + + @Override + public void removeMedia(String app, String stream) { + streamPushMapper.del(app, stream); + } + + @Override + public void clearMediaList() { + streamPushMapper.clear(); + } + + @Override + public void mediaOutline(String app, String streamId) { + gbStreamMapper.setStatus(app, streamId, false); + } + + @Override + public void updateParentPlatformStatus(String platformGbID, boolean online) { + platformMapper.updateParentPlatformStatus(platformGbID, online); + } } -- Gitblit v1.8.0