Commit e752dbd1a7fdfbb2063c59470b41a8e5dd546c3d
1 parent
66aac452
修复推流关联平台的bug again
Showing
5 changed files
with
30 additions
and
8 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
| ... | ... | @@ -128,7 +128,7 @@ public class ZLMMediaListManager { |
| 128 | 128 | if (gbStreams.size() > 0) { |
| 129 | 129 | for (GbStream gbStream : gbStreams) { |
| 130 | 130 | // 出现使用相同国标Id的视频流时,使用新流替换旧流, |
| 131 | - if (queryKey != null) { | |
| 131 | + if (queryKey != null && gbStream.getApp().equals(mediaItem.getApp())) { | |
| 132 | 132 | Matcher matcherForStream = pattern.matcher(gbStream.getStream()); |
| 133 | 133 | String queryKeyForStream = null; |
| 134 | 134 | if (matcherForStream.find()) { //此处find()每次被调用后,会偏移到下一个匹配 |
| ... | ... | @@ -144,12 +144,15 @@ public class ZLMMediaListManager { |
| 144 | 144 | } |
| 145 | 145 | } |
| 146 | 146 | } |
| 147 | - StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); | |
| 148 | - if (streamProxyItem != null) { | |
| 149 | - transform.setGbStreamId(streamProxyItem.getGbStreamId()); | |
| 150 | - transform.setPlatformId(streamProxyItem.getPlatformId()); | |
| 151 | - transform.setCatalogId(streamProxyItem.getCatalogId()); | |
| 147 | + // StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); | |
| 148 | + List<GbStream> gbStreamList = gbStreamMapper.selectByGBId(transform.getGbId()); | |
| 149 | + if (gbStreamList != null && gbStreamList.size() == 1) { | |
| 150 | + transform.setGbStreamId(gbStreamList.get(0).getGbStreamId()); | |
| 151 | + transform.setPlatformId(gbStreamList.get(0).getPlatformId()); | |
| 152 | + transform.setCatalogId(gbStreamList.get(0).getCatalogId()); | |
| 153 | + transform.setGbId(gbStreamList.get(0).getGbId()); | |
| 152 | 154 | gbStreamMapper.update(transform); |
| 155 | + streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream()); | |
| 153 | 156 | }else { |
| 154 | 157 | transform.setCreateStamp(System.currentTimeMillis()); |
| 155 | 158 | gbStreamMapper.add(transform); | ... | ... |
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
| ... | ... | @@ -33,6 +33,19 @@ public interface GbStreamMapper { |
| 33 | 33 | "mediaServerId=#{mediaServerId}," + |
| 34 | 34 | "status=${status} " + |
| 35 | 35 | "WHERE app=#{app} AND stream=#{stream}") |
| 36 | + int updateByallAndStream(GbStream gbStream); | |
| 37 | + | |
| 38 | + @Update("UPDATE gb_stream " + | |
| 39 | + "SET app=#{app}," + | |
| 40 | + "stream=#{stream}," + | |
| 41 | + "gbId=#{gbId}," + | |
| 42 | + "name=#{name}," + | |
| 43 | + "streamType=#{streamType}," + | |
| 44 | + "longitude=#{longitude}, " + | |
| 45 | + "latitude=#{latitude}," + | |
| 46 | + "mediaServerId=#{mediaServerId}," + | |
| 47 | + "status=${status} " + | |
| 48 | + "WHERE gbStreamId=#{gbStreamId}") | |
| 36 | 49 | int update(GbStream gbStream); |
| 37 | 50 | |
| 38 | 51 | @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}") | ... | ... |
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
| ... | ... | @@ -772,7 +772,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { |
| 772 | 772 | try { |
| 773 | 773 | if (streamProxyMapper.update(streamProxyItem) > 0) { |
| 774 | 774 | if (!StringUtils.isEmpty(streamProxyItem.getGbId())) { |
| 775 | - if (gbStreamMapper.update(streamProxyItem) > 0) { | |
| 775 | + if (gbStreamMapper.updateByallAndStream(streamProxyItem) > 0) { | |
| 776 | 776 | //事务回滚 |
| 777 | 777 | dataSourceTransactionManager.rollback(transactionStatus); |
| 778 | 778 | return false; | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
| ... | ... | @@ -305,6 +305,8 @@ public class PlatformController { |
| 305 | 305 | // 停止发送位置订阅定时任务 |
| 306 | 306 | String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId(); |
| 307 | 307 | dynamicTask.stop(key); |
| 308 | + // 删除缓存的订阅信息 | |
| 309 | + subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId()); | |
| 308 | 310 | if (deleteResult) { |
| 309 | 311 | return new ResponseEntity<>("success", HttpStatus.OK); |
| 310 | 312 | } else { |
| ... | ... | @@ -341,7 +343,6 @@ public class PlatformController { |
| 341 | 343 | * @param platformId 上级平台ID |
| 342 | 344 | * @param query 查询内容 |
| 343 | 345 | * @param online 是否在线 |
| 344 | - * @param choosed 是否已选中 | |
| 345 | 346 | * @param channelType 通道类型 |
| 346 | 347 | * @return |
| 347 | 348 | */ | ... | ... |