diff --git a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java index b541f7448..b56818049 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java @@ -18,7 +18,6 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; -import javax.sip.message.Response; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java index 1f0f3658e..44789f0a2 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java @@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 业务分组 */ +@EqualsAndHashCode(callSuper = true) @Data @Schema(description = "业务分组树") public class GroupTree extends Group{ diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java index 125bd3da7..10ef1ae02 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/RegionTree.java @@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 区域 */ +@EqualsAndHashCode(callSuper = true) @Data @Schema(description = "区域树") public class RegionTree extends Region { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java index 95e2e7905..3bafa6a20 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java @@ -1723,7 +1723,14 @@ public class PlayServiceImpl implements IPlayService { throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error"); } DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId()); - play(device, deviceChannel, callback); + + MediaServer mediaServerItem = getNewMediaServerItem(device); + if (mediaServerItem == null) { + log.warn("[点播] 未找到可用的zlm deviceId: {},channelId:{}", device.getDeviceId(), deviceChannel.getDeviceId()); + throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的zlm"); + } + play(mediaServerItem, device, deviceChannel, null, record, callback); + } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java index f8e5e7da3..7f772e309 100755 --- a/src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java @@ -51,6 +51,7 @@ public class StreamPushServiceImpl implements IStreamPushService { private UserSetting userSetting; @Autowired + private IMediaServerService mediaServerService; @Autowired @@ -576,13 +577,13 @@ public class StreamPushServiceImpl implements IStreamPushService { if (streamPushList.isEmpty()) { return; } - List commonGBChannelList = new ArrayList<>(); + Set channelIds = new HashSet<>(); streamPushList.stream().forEach(streamPush -> { if (streamPush.getGbDeviceId() != null) { - commonGBChannelList.add(streamPush.buildCommonGBChannel()); + channelIds.add(streamPush.getGbId()); } }); streamPushMapper.batchDel(streamPushList); - gbChannelService.delete(ids); + gbChannelService.delete(channelIds); } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java index 07c3b3cbd..c3080051e 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java @@ -55,7 +55,12 @@ public class CloudRecordController { @Parameter(name = "year", description = "年,置空则查询当年", required = false) @Parameter(name = "month", description = "月,置空则查询当月", required = false) @Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部", required = false) - public List openRtpServer(@RequestParam(required = true) String app, @RequestParam(required = true) String stream, @RequestParam(required = false) Integer year, @RequestParam(required = false) Integer month, @RequestParam(required = false) String mediaServerId + public List openRtpServer( + @RequestParam(required = true) String app, + @RequestParam(required = true) String stream, + @RequestParam(required = false) Integer year, + @RequestParam(required = false) Integer month, + @RequestParam(required = false) String mediaServerId ) { log.info("[云端录像] 查询存在云端录像的日期 app->{}, stream->{}, mediaServerId->{}, year->{}, month->{}", app, stream, mediaServerId, year, month); @@ -96,7 +101,15 @@ public class CloudRecordController { @Parameter(name = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = false) @Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部流媒体", required = false) @Parameter(name = "callId", description = "每次录像的唯一标识,置空则查询全部流媒体", required = false) - public PageInfo openRtpServer(@RequestParam(required = false) String query, @RequestParam(required = false) String app, @RequestParam(required = false) String stream, @RequestParam int page, @RequestParam int count, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String mediaServerId, @RequestParam(required = false) String callId + public PageInfo openRtpServer(@RequestParam(required = false) String query, + @RequestParam(required = false) String app, + @RequestParam(required = false) String stream, + @RequestParam int page, + @RequestParam int count, + @RequestParam(required = false) String startTime, + @RequestParam(required = false) String endTime, + @RequestParam(required = false) String mediaServerId, + @RequestParam(required = false) String callId ) { log.info("[云端录像] 查询 app->{}, stream->{}, mediaServerId->{}, page->{}, count->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, page, count, startTime, endTime, callId); diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java index edfd71a2d..fcb7f70d2 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java @@ -37,10 +37,9 @@ public class ApiControlController { * @param channel 通道序号 * @param code 通道编号 * @param speed 速度(0~255) 默认值: 129 - * @return */ @GetMapping(value = "/ptz") - private void list(String serial,String command, + private void ptz(String serial,String command, @RequestParam(required = false)Integer channel, @RequestParam(required = false)String code, @RequestParam(required = false)Integer speed){ @@ -55,7 +54,7 @@ public class ApiControlController { if (device == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "device[ " + serial + " ]未找到"); } - int cmdCode = 0; + int cmdCode = -1; switch (command){ case "left": cmdCode = 2; @@ -93,6 +92,9 @@ public class ApiControlController { default: break; } + if (cmdCode == -1) { + throw new ControllerException(ErrorCode.ERROR100.getCode(), "未识别的指令:" + command); + } // 默认值 50 try { cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed); @@ -110,7 +112,6 @@ public class ApiControlController { * @param command 控制指令 允许值: set, goto, remove * @param preset 预置位编号(1~255) * @param name 预置位名称, command=set 时有效 - * @return */ @GetMapping(value = "/preset") private void list(String serial,String command, diff --git a/web_src/static/js/ZLMRTCClient.js b/web_src/static/js/ZLMRTCClient.js index 30a08eff6..bbb4c4a87 100644 --- a/web_src/static/js/ZLMRTCClient.js +++ b/web_src/static/js/ZLMRTCClient.js @@ -6560,7 +6560,7 @@ var ZLMRTCClient = (function (exports) { resolve(response); } else { reject(new AxiosError_1( - 'Request failed with status code ' + response.status, + '请求失败, 状态码:' + response.status, [AxiosError_1.ERR_BAD_REQUEST, AxiosError_1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, @@ -7885,7 +7885,7 @@ var ZLMRTCClient = (function (exports) { }).then(response => { let ret = response.data; //JSON.parse(response.data); if (ret.code != 0) { - // mean failed for offer/anwser exchange + // mean failed for offer/anwser exchange this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret); return; } @@ -7989,7 +7989,7 @@ var ZLMRTCClient = (function (exports) { }).then(response => { let ret = response.data; //JSON.parse(response.data); if (ret.code != 0) { - // mean failed for offer/anwser exchange + // mean failed for offer/anwser exchange this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret); return; }