diff --git a/pom.xml b/pom.xml
index 2abd9d8c0..2b9a838c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.3.5.RELEASE
+ 2.7.2
com.genersoft
@@ -47,7 +47,6 @@
UTF-8
MMddHHmm
3.1.1
- 3.1.0
${project.build.directory}/generated-snippets
@@ -74,7 +73,7 @@
org.mybatis.spring.boot
mybatis-spring-boot-starter
- 2.1.4
+ 2.2.2
com.zaxxer
@@ -91,36 +90,35 @@
com.alibaba
druid-spring-boot-starter
- 1.1.22
+ 1.2.11
mysql
mysql-connector-java
- 8.0.22
+ 8.0.30
com.github.pagehelper
pagehelper-spring-boot-starter
- 1.4.1
+ 1.4.3
-
- io.springfox
- springfox-boot-starter
- 3.0.0
-
-
- com.github.xiaoymin
- knife4j-spring-boot-starter
- 3.0.2
+ org.springdoc
+ springdoc-openapi-ui
+ 1.6.10
+
+ com.github.xiaoymin
+ knife4j-springdoc-ui
+ 3.0.3
+
@@ -145,7 +143,7 @@
org.slf4j
log4j-over-slf4j
- 1.7.35
+ 1.7.36
@@ -167,14 +165,14 @@
com.squareup.okhttp3
okhttp
- 4.9.0
+ 4.10.0
com.squareup.okhttp3
logging-interceptor
- 4.9.0
+ 4.10.0
@@ -183,7 +181,7 @@
io.github.rburgst
okhttp-digest
- 2.5
+ 2.7
@@ -197,21 +195,21 @@
org.mitre.dsmiley.httpproxy
smiley-http-proxy-servlet
- 1.12
+ 1.12.1
com.alibaba
easyexcel
- 3.0.4
+ 3.1.1
com.github.oshi
oshi-core
- 6.1.0
+ 6.2.2
@@ -231,7 +229,7 @@
com.google.guava
guava
- 31.0.1-jre
+ 31.1-jre
diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 3bac82d6f..21002c414 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -8,7 +8,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
-import springfox.documentation.oas.annotations.EnableOpenApi;
/**
* 启动类
@@ -16,7 +15,6 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
@ServletComponentScan("com.genersoft.iot.vmp.conf")
@SpringBootApplication
@EnableScheduling
-@EnableOpenApi
@EnableDruidSupport
public class VManageBootstrap extends LogManager {
private static String[] args;
diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
index b5788aedb..4f717f05e 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
@@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.common;
-import com.alibaba.fastjson.JSONArray;
public class StreamInfo {
diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index 510b5b227..bbbfce971 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -91,6 +91,10 @@ public class VideoManagerConstants {
* 接收推流设备的GPS变化通知
*/
public static final String VM_MSG_PUSH_STREAM_STATUS_CHANGE = "VM_MSG_PUSH_STREAM_STATUS_CHANGE";
+ /**
+ * 接收推流设备列表更新变化通知
+ */
+ public static final String VM_MSG_PUSH_STREAM_LIST_CHANGE = "VM_MSG_PUSH_STREAM_LIST_CHANGE";
/**
* redis 消息通知设备推流到平台
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java b/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java
index 1885632ab..b2c235803 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java
@@ -9,6 +9,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;
+import javax.annotation.PostConstruct;
import java.time.Instant;
import java.util.Map;
import java.util.Set;
@@ -25,20 +26,18 @@ public class DynamicTask {
private final Logger logger = LoggerFactory.getLogger(DynamicTask.class);
- @Autowired
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
private final Map> futureMap = new ConcurrentHashMap<>();
private final Map runnableMap = new ConcurrentHashMap<>();
- @Bean
- public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
- ThreadPoolTaskScheduler schedulerPool = new ThreadPoolTaskScheduler();
- schedulerPool.setPoolSize(300);
- schedulerPool.setWaitForTasksToCompleteOnShutdown(true);
- schedulerPool.setAwaitTerminationSeconds(10);
- return schedulerPool;
-
+ @PostConstruct
+ public void DynamicTask() {
+ threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
+ threadPoolTaskScheduler.setPoolSize(300);
+ threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);
+ threadPoolTaskScheduler.setAwaitTerminationSeconds(10);
+ threadPoolTaskScheduler.initialize();
}
/**
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java b/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java
new file mode 100644
index 000000000..f5dff6784
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java
@@ -0,0 +1,56 @@
+package com.genersoft.iot.vmp.conf;
+
+import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
+import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * 全局异常处理
+ */
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ private final static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+
+ /**
+ * 默认异常处理
+ * @param e 异常
+ * @return 统一返回结果
+ */
+ @ExceptionHandler(Exception.class)
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public WVPResult exceptionHandler(Exception e) {
+ logger.error("[全局异常]: ", e);
+ return WVPResult.fail(ErrorCode.ERROR500.getCode(), e.getMessage());
+ }
+
+ /**
+ * 自定义异常处理, 处理controller中返回的错误
+ * @param e 异常
+ * @return 统一返回结果
+ */
+ @ExceptionHandler(ControllerException.class)
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public WVPResult exceptionHandler(ControllerException e) {
+ return WVPResult.fail(e.getCode(), e.getMsg());
+ }
+
+ /**
+ * 登陆失败
+ * @param e 异常
+ * @return 统一返回结果
+ */
+ @ExceptionHandler(BadCredentialsException.class)
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public WVPResult exceptionHandler(BadCredentialsException e) {
+ return WVPResult.fail(ErrorCode.ERROR100.getCode(), e.getMessage());
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
new file mode 100644
index 000000000..e1088e56a
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
@@ -0,0 +1,53 @@
+package com.genersoft.iot.vmp.conf;
+
+import com.alibaba.fastjson.JSON;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
+import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+/**
+ * 全局统一返回结果
+ * @author lin
+ */
+@RestControllerAdvice
+public class GlobalResponseAdvice implements ResponseBodyAdvice