Browse Source

完成向上级联->启动时自动注册

panlinlin 4 years ago
parent
commit
9bf87971e7

+ 55 - 0
src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java

@@ -0,0 +1,55 @@
+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.event.EventPublisher;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+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;
+
+/**
+ * 系统启动时控制上级平台重新注册
+ */
+@Component
+@Order(value=3)
+public class SipPlatformRunner implements CommandLineRunner {
+
+    @Autowired
+    private IVideoManagerStorager storager;
+
+    @Autowired
+    private IRedisCatchStorage redisCatchStorage;
+
+    @Autowired
+    private EventPublisher publisher;
+
+    @Override
+    public void run(String... args) throws Exception {
+        // 设置所有平台离线
+        storager.outlineForAllParentPlatform();
+
+        List<ParentPlatform> parentPlatforms = storager.queryEnableParentPlatformList(true);
+
+        for (ParentPlatform parentPlatform : parentPlatforms) {
+
+            redisCatchStorage.updatePlatformRegister(parentPlatform);
+
+            redisCatchStorage.updatePlatformKeepalive(parentPlatform);
+
+            ParentPlatformCatch parentPlatformCatch = new ParentPlatformCatch();
+
+            parentPlatformCatch.setParentPlatform(parentPlatform);
+            parentPlatformCatch.setId(parentPlatform.getDeviceGBId());
+            redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch);
+
+            // 发送平台未注册消息
+            publisher.platformNotRegisterEventPublish(parentPlatform.getDeviceGBId());
+        }
+    }
+}

+ 11 - 0
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java

@@ -168,10 +168,21 @@ public interface IVideoManagerStorager {
 	 */
 	PageInfo<ParentPlatform> queryParentPlatformList(int page, int count);
 
+	/**
+	 * 获取所有已启用的平台
+	 * @return
+	 */
+	List<ParentPlatform> queryEnableParentPlatformList(boolean enable);
+
 	/**
 	 * 获取上级平台
 	 * @param platformGbId
 	 * @return
 	 */
 	ParentPlatform queryParentPlatById(String platformGbId);
+
+	/**
+	 * 所有平台离线
+	 */
+	void outlineForAllParentPlatform();
 }

+ 6 - 0
src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java

@@ -49,6 +49,12 @@ public interface ParentPlatformMapper {
     @Select("SELECT * FROM parent_platform")
     List<ParentPlatform> getParentPlatformList();
 
+    @Select("SELECT * FROM parent_platform WHERE enable=#{enable}")
+    List<ParentPlatform> getEnableParentPlatformList(boolean enable);
+
     @Select("SELECT * FROM parent_platform WHERE deviceGBId=#{platformGbId}")
     ParentPlatform getParentPlatById(String platformGbId);
+
+    @Update("UPDATE parent_platform SET status=false" )
+    void outlineForAllParentPlatform();
 }

+ 9 - 0
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java

@@ -33,6 +33,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 
 	@Autowired
     private ParentPlatformMapper platformMapper;
+
 	@Autowired
     private IRedisCatchStorage redisCatchStorage;
 
@@ -252,5 +253,13 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 		return platformMapper.getParentPlatById(platformGbId);
 	}
 
+	@Override
+	public List<ParentPlatform> queryEnableParentPlatformList(boolean enable) {
+		return platformMapper.getEnableParentPlatformList(enable);
+	}
 
+	@Override
+	public void outlineForAllParentPlatform() {
+		platformMapper.outlineForAllParentPlatform();
+	}
 }

+ 1 - 0
src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java

@@ -25,6 +25,7 @@ public class PlatformController {
 
     @Autowired
     private IVideoManagerStorager storager;
+
     @Autowired
     private IRedisCatchStorage redisCatchStorage;