From 3146e63fc05fddf91e6df086e363a4f5584c1d6b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 01 九月 2022 17:53:00 +0800
Subject: [PATCH] 优化异常处理
---
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java | 6 +--
web_src/config/index.js | 4 +-
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 9 +++-
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java | 14 ++-----
web_src/src/components/StreamProxyList.vue | 2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java | 4 +
src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java | 4 +-
src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java | 1
src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java | 16 ++++++++
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 7 ++-
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 2
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java | 17 ++------
12 files changed, 47 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java b/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java
index f5dff67..0c7c3d2 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/GlobalExceptionHandler.java
@@ -32,6 +32,7 @@
return WVPResult.fail(ErrorCode.ERROR500.getCode(), e.getMessage());
}
+
/**
* 鑷畾涔夊紓甯稿鐞嗭紝 澶勭悊controller涓繑鍥炵殑閿欒
* @param e 寮傚父
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
index e1088e5..bfe344d 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
@@ -1,16 +1,22 @@
package com.genersoft.iot.vmp.conf;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import org.jetbrains.annotations.NotNull;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
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;
+
+import java.util.List;
/**
* 鍏ㄥ眬缁熶竴杩斿洖缁撴灉
@@ -24,6 +30,7 @@
public boolean supports(@NotNull MethodParameter returnType, @NotNull Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
+
@Override
public Object beforeBodyWrite(Object body, @NotNull MethodParameter returnType, @NotNull MediaType selectedContentType, @NotNull Class<? extends HttpMessageConverter<?>> selectedConverterType, @NotNull ServerHttpRequest request, @NotNull ServerHttpResponse response) {
@@ -50,4 +57,13 @@
return WVPResult.success(body);
}
+
+ /**
+ * 闃叉杩斿洖string鏃跺嚭閿�
+ * @return
+ */
+ @Bean
+ public HttpMessageConverters custHttpMessageConverter() {
+ return new HttpMessageConverters(new FastJsonHttpMessageConverter());
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
index 13f04b6..71944f9 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
@@ -151,7 +151,9 @@
logger.info("[鍙戦�侀敊璇闃匽");
SipSubscribe.Event subscribe = sipSubscribe.getErrorSubscribe(callIdHeader.getCallId());
SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(timeoutEvent);
- subscribe.response(eventResult);
+ if (subscribe != null){
+ subscribe.response(eventResult);
+ }
sipSubscribe.removeOkSubscribe(callIdHeader.getCallId());
sipSubscribe.removeErrorSubscribe(callIdHeader.getCallId());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index 87271a3..ce46393 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -184,8 +184,7 @@
if (!"rtp".equals(param.getApp())) {
Map<String, String> paramMap = urlParamToMap(param.getParams());
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(param.getApp(), param.getStream());
- if (streamAuthorityInfo == null
- || (streamAuthorityInfo.getCallId() != null && !streamAuthorityInfo.getCallId().equals(paramMap.get("callId")))) {
+ if (streamAuthorityInfo != null && streamAuthorityInfo.getCallId() != null && !streamAuthorityInfo.getCallId().equals(paramMap.get("callId"))) {
ret.put("code", 401);
ret.put("msg", "Unauthorized");
return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
@@ -476,8 +475,12 @@
if (mediaServerItem != null){
if (regist) {
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
+ String callId = null;
+ if (streamAuthorityInfo != null) {
+ callId = streamAuthorityInfo.getCallId();
+ }
StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaServerItem,
- app, stream, tracks, streamAuthorityInfo.getCallId());
+ app, stream, tracks, callId);
item.setStreamInfo(streamInfoByAppAndStream);
redisCatchStorage.addStream(mediaServerItem, type, app, stream, item);
if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
index ab1fd55..6288a16 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
@@ -54,9 +54,10 @@
if (mediaInfo == null) {
return null;
}
+ String calld = null;
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
- if (streamAuthorityInfo == null) {
- return null;
+ if (streamAuthorityInfo != null) {
+ calld = streamAuthorityInfo.getCallId();
}
JSONObject mediaList = zlmresTfulUtils.getMediaList(mediaInfo, app, stream);
if (mediaList != null) {
@@ -68,7 +69,7 @@
JSONObject mediaJSON = JSON.parseObject(JSON.toJSONString(data.get(0)), JSONObject.class);
JSONArray tracks = mediaJSON.getJSONArray("tracks");
if (authority) {
- streamInfo = getStreamInfoByAppAndStream(mediaInfo, app, stream, tracks, addr,streamAuthorityInfo.getCallId());
+ streamInfo = getStreamInfoByAppAndStream(mediaInfo, app, stream, tracks, addr, calld);
}else {
streamInfo = getStreamInfoByAppAndStream(mediaInfo, app, stream, tracks, addr,null);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index e217ca9..aa197ef 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -296,7 +296,7 @@
public boolean start(String app, String stream) {
boolean result = false;
StreamProxyItem streamProxy = videoManagerStorager.queryStreamProxy(app, stream);
- if (!streamProxy.isEnable() ) {
+ if (streamProxy != null && !streamProxy.isEnable() ) {
JSONObject jsonObject = addStreamProxyToZlm(streamProxy);
if (jsonObject == null) {
return false;
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
index 706de93..abff3eb 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
@@ -76,8 +76,8 @@
"WHERE " +
"1=1 " +
" <if test='query != null'> AND (st.app LIKE '%${query}%' OR st.stream LIKE '%${query}%' OR gs.gbId LIKE '%${query}%' OR gs.name LIKE '%${query}%')</if> " +
- " <if test='pushing == true' > AND (gs.gbId is null OR st.status=1)</if>" +
- " <if test='pushing == false' > AND st.status=0</if>" +
+ " <if test='pushing == true' > AND (gs.gbId is null OR st.pushIng=1)</if>" +
+ " <if test='pushing == false' > AND st.pushIng=0</if>" +
" <if test='mediaServerId != null' > AND st.mediaServerId=#{mediaServerId} </if>" +
"order by st.createTime desc" +
" </script>"})
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
index 6b24f99..e5d928a 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
@@ -3,6 +3,7 @@
import java.util.List;
import java.util.UUID;
+import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
@@ -10,6 +11,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.util.StringUtil;
@@ -136,13 +138,9 @@
@Parameter(name = "expires", description = "璁㈤槄瓒呮椂鏃堕棿", required = true)
@Parameter(name = "interval", description = "涓婃姤鏃堕棿闂撮殧", required = true)
@GetMapping("/subscribe/{deviceId}")
- public String positionSubscribe(@PathVariable String deviceId,
+ public void positionSubscribe(@PathVariable String deviceId,
@RequestParam String expires,
@RequestParam String interval) {
- String msg = ((expires.equals("0")) ? "鍙栨秷" : "") + "璁㈤槄璁惧" + deviceId + "鐨勭Щ鍔ㄤ綅缃�";
- if (logger.isDebugEnabled()) {
- logger.debug(msg);
- }
if (StringUtil.isEmpty(interval)) {
interval = "5";
@@ -151,13 +149,8 @@
device.setSubscribeCycleForMobilePosition(Integer.parseInt(expires));
device.setMobilePositionSubmissionInterval(Integer.parseInt(interval));
deviceService.updateDevice(device);
- String result = msg;
- if (deviceService.removeMobilePositionSubscribe(device)) {
- result += "锛屾垚鍔�";
- } else {
- result += "锛屽け璐�";
+ if (!deviceService.removeMobilePositionSubscribe(device)) {
+ throw new ControllerException(ErrorCode.ERROR100);
}
-
- return result;
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
index 30320e6..fe363a6 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
@@ -56,20 +56,14 @@
@Operation(summary = "杩滅▼鍚姩鎺у埗鍛戒护")
@Parameter(name = "deviceId", description = "璁惧鍥芥爣缂栧彿", required = true)
@GetMapping("/teleboot/{deviceId}")
- public String teleBootApi(@PathVariable String deviceId) {
+ public void teleBootApi(@PathVariable String deviceId) {
if (logger.isDebugEnabled()) {
logger.debug("璁惧杩滅▼鍚姩API璋冪敤");
}
Device device = storager.queryVideoDevice(deviceId);
- boolean sucsess = cmder.teleBootCmd(device);
- if (sucsess) {
- JSONObject json = new JSONObject();
- json.put("DeviceID", deviceId);
- json.put("Result", "OK");
- return json.toJSONString();
- } else {
- logger.warn("璁惧杩滅▼鍚姩API璋冪敤澶辫触锛�");
- throw new ControllerException(ErrorCode.ERROR100.getCode(), "璁惧杩滅▼鍚姩API璋冪敤澶辫触锛�");
+ if (!cmder.teleBootCmd(device)) {
+ logger.warn("璁惧杩滅▼鍚姩API璋冪敤澶辫触锛�");
+ throw new ControllerException(ErrorCode.ERROR100);
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index bf42189..fa1de00 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -244,7 +244,7 @@
@Parameter(name = "serverGBId", description = "涓婄骇骞冲彴鐨勫浗鏍囩紪鍙�")
@DeleteMapping("/delete/{serverGBId}")
@ResponseBody
- public String deletePlatform(@PathVariable String serverGBId) {
+ public void deletePlatform(@PathVariable String serverGBId) {
if (logger.isDebugEnabled()) {
logger.debug("鍒犻櫎涓婄骇骞冲彴API璋冪敤");
@@ -278,9 +278,7 @@
dynamicTask.stop(key);
// 鍒犻櫎缂撳瓨鐨勮闃呬俊鎭�
subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId());
- if (deleteResult) {
- return null;
- } else {
+ if (!deleteResult) {
throw new ControllerException(ErrorCode.ERROR100);
}
}
diff --git a/web_src/config/index.js b/web_src/config/index.js
index b1e1cbe..c5a7452 100644
--- a/web_src/config/index.js
+++ b/web_src/config/index.js
@@ -12,14 +12,14 @@
assetsPublicPath: '/',
proxyTable: {
'/debug': {
- target: 'http://localhost:18080',
+ target: 'http://localhost:38080',
changeOrigin: true,
pathRewrite: {
'^/debug': '/'
}
},
'/static/snap': {
- target: 'http://localhost:18080',
+ target: 'http://localhost:38080',
changeOrigin: true,
// pathRewrite: {
// '^/static/snap': '/static/snap'
diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue
index 99b2226..5eff9d5 100644
--- a/web_src/src/components/StreamProxyList.vue
+++ b/web_src/src/components/StreamProxyList.vue
@@ -220,7 +220,7 @@
this.getListLoading = true;
this.$axios({
method: 'get',
- url:`/api/media/stream_info_by_app_and_stream`,
+ url:`/api/push/getPlayUrl`,
params: {
app: row.app,
stream: row.stream,
--
Gitblit v1.8.0