|  |  | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.genersoft.iot.vmp.common.StreamInfo; | 
 |  |  | import com.genersoft.iot.vmp.conf.SipConfig; | 
 |  |  | import com.genersoft.iot.vmp.conf.UserSetup; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.GbStream; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.dto.MediaItem; | 
 |  |  | 
 |  |  |     private IRedisCatchStorage redisCatchStorage; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IVideoManagerStorager storager; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private UserSetup userSetup; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SipConfig sipConfig; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private GbStreamMapper gbStreamMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformGbStreamMapper platformGbStreamMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private EventPublisher eventPublisher; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ParentPlatformMapper parentPlatformMapper; | 
 |  |  | 
 |  |  |                 }else { | 
 |  |  |                     streamLive = true; | 
 |  |  |                     StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream( | 
 |  |  |                             mediaInfo, param.getApp(), param.getStream(), null); | 
 |  |  |                             mediaInfo, param.getApp(), param.getStream(), null, null); | 
 |  |  |                     wvpResult.setData(streamInfo); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 result.append(",  关联国标平台[ " + param.getPlatformGbId() + " ]失败"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         // 查找开启了全部直播流共享的上级平台 | 
 |  |  |         List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream(); | 
 |  |  |         if (parentPlatforms.size() > 0) { | 
 |  |  |             for (ParentPlatform parentPlatform : parentPlatforms) { | 
 |  |  |                 param.setPlatformId(parentPlatform.getServerGBId()); | 
 |  |  |                 param.setCatalogId(parentPlatform.getCatalogId()); | 
 |  |  |                 String stream = param.getStream(); | 
 |  |  |                 StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId()); | 
 |  |  |                 if (streamProxyItems == null) { | 
 |  |  |                     platformGbStreamMapper.add(param); | 
 |  |  |         if (!StringUtils.isEmpty(param.getGbId())) { | 
 |  |  |             // 查找开启了全部直播流共享的上级平台 | 
 |  |  |             List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream(); | 
 |  |  |             if (parentPlatforms.size() > 0) { | 
 |  |  |                 for (ParentPlatform parentPlatform : parentPlatforms) { | 
 |  |  |                     param.setPlatformId(parentPlatform.getServerGBId()); | 
 |  |  |                     param.setCatalogId(parentPlatform.getCatalogId()); | 
 |  |  |                     String stream = param.getStream(); | 
 |  |  |                     StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId()); | 
 |  |  |                     if (streamProxyItems == null) { | 
 |  |  |                         platformGbStreamMapper.add(param); | 
 |  |  |                         eventPublisher.catalogEventPublishForStream(parentPlatform.getServerGBId(), param, CatalogEvent.ADD); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         wvpResult.setMsg(result.toString()); | 
 |  |  |         return wvpResult; | 
 |  |  |     } | 
 |  |  | 
 |  |  |     public void del(String app, String stream) { | 
 |  |  |         StreamProxyItem streamProxyItem = videoManagerStorager.queryStreamProxy(app, stream); | 
 |  |  |         if (streamProxyItem != null) { | 
 |  |  |             gbStreamService.sendCatalogMsg(streamProxyItem, CatalogEvent.DEL); | 
 |  |  |             videoManagerStorager.deleteStreamProxy(app, stream); | 
 |  |  |             JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyItem); | 
 |  |  |             if (jsonObject != null && jsonObject.getInteger("code") == 0) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void zlmServerOnline(String mediaServerId) { | 
 |  |  |         zlmServerOffline(mediaServerId); | 
 |  |  |         // 移除开启了无人观看自动移除的流 | 
 |  |  |         List<StreamProxyItem> streamProxyItemList = streamProxyMapper.selecAutoRemoveItemByMediaServerId(mediaServerId); | 
 |  |  |         if (streamProxyItemList.size() > 0) { | 
 |  |  |             gbStreamMapper.batchDel(streamProxyItemList); | 
 |  |  |         } | 
 |  |  |         streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId); | 
 |  |  |  | 
 |  |  |         // 恢复流代理, 只查找这个这个流媒体 | 
 |  |  |         List<StreamProxyItem> streamProxyListForEnable = storager.getStreamProxyListForEnableInMediaServer( | 
 |  |  |                 mediaServerId, true, false); | 
 |  |  |         for (StreamProxyItem streamProxyDto : streamProxyListForEnable) { | 
 |  |  |             logger.info("恢复流代理," + streamProxyDto.getApp() + "/" + streamProxyDto.getStream()); | 
 |  |  |             JSONObject jsonObject = addStreamProxyToZlm(streamProxyDto); | 
 |  |  |             if (jsonObject == null) { | 
 |  |  |                 // 设置为离线 | 
 |  |  |                 logger.info("恢复流代理失败" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream()); | 
 |  |  |                 updateStatus(false, streamProxyDto.getApp(), streamProxyDto.getStream()); | 
 |  |  |             }else { | 
 |  |  |                 updateStatus(true, streamProxyDto.getApp(), streamProxyDto.getStream()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |             gbStreamMapper.batchDel(streamProxyItemList); | 
 |  |  |         } | 
 |  |  |         streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId); | 
 |  |  |         // 其他的流设置未启用 | 
 |  |  |         streamProxyMapper.updateStatus(false, mediaServerId); | 
 |  |  |         // 其他的流设置离线 | 
 |  |  |         streamProxyMapper.updateStatusByMediaServerId(false, mediaServerId); | 
 |  |  |         String type = "PULL"; | 
 |  |  |  | 
 |  |  |         // 发送redis消息 | 
 |  |  | 
 |  |  |     public void clean() { | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public int updateStatus(boolean status, String app, String stream) { | 
 |  |  |         return streamProxyMapper.updateStatus(status, app, stream); | 
 |  |  |     } | 
 |  |  | } |