| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package com.genersoft.iot.vmp.conf;
- import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
- import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
- import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
- import com.genersoft.iot.vmp.service.IPlatformService;
- import com.genersoft.iot.vmp.service.impl.PlatformServiceImpl;
- import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
- import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.CommandLineRunner;
- import org.springframework.core.annotation.Order;
- import org.springframework.stereotype.Component;
- import java.util.List;
- /**
- * 系统启动时控制上级平台重新注册
- * @author lin
- */
- @Component
- @Order(value=13)
- public class SipPlatformRunner implements CommandLineRunner {
- @Autowired
- private IVideoManagerStorage storager;
- @Autowired
- private IRedisCatchStorage redisCatchStorage;
- @Autowired
- private IPlatformService platformService;
- @Autowired
- private ISIPCommanderForPlatform sipCommanderForPlatform;
- private final static Logger logger = LoggerFactory.getLogger(PlatformServiceImpl.class);
- @Override
- public void run(String... args) throws Exception {
- // 获取所有启用的平台
- List<ParentPlatform> parentPlatforms = storager.queryEnableParentPlatformList(true);
- for (ParentPlatform parentPlatform : parentPlatforms) {
- ParentPlatformCatch parentPlatformCatchOld = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
- // 更新缓存
- ParentPlatformCatch parentPlatformCatch = new ParentPlatformCatch();
- parentPlatformCatch.setParentPlatform(parentPlatform);
- parentPlatformCatch.setId(parentPlatform.getServerGBId());
- redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch);
- if (parentPlatformCatchOld != null) {
- // 取消订阅
- try {
- sipCommanderForPlatform.unregister(parentPlatform, parentPlatformCatchOld.getSipTransactionInfo(), null, (eventResult)->{
- platformService.login(parentPlatform);
- });
- } catch (Exception e) {
- logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage());
- platformService.offline(parentPlatform, true);
- continue;
- }
- }
- // 设置所有平台离线
- platformService.offline(parentPlatform, false);
- }
- }
- }
|