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 e385ad74..9bff21f0 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -291,7 +291,7 @@ public class ZLMHttpHookListener { } // 如果是录像下载就设置视频间隔十秒 if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) { - result.setMp4_max_second(10); + result.setMp4_max_second(30); result.setEnable_mp4(true); } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java index 5a5eb650..10a58c61 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java @@ -18,7 +18,7 @@ public interface ICloudRecordService { /** * 分页回去云端录像列表 */ - PageInfo getList(int page, int count, String app, String stream, String startTime, String endTime, List mediaServerItems); + PageInfo getList(int page, int count, String query, String app, String stream, String startTime, String endTime, List mediaServerItems); /** * 根据hook消息增加一条记录 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java index 1d8a5374..5af3d647 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java @@ -50,7 +50,7 @@ public class CloudRecordServiceImpl implements ICloudRecordService { private VideoStreamSessionManager streamSession; @Override - public PageInfo getList(int page, int count, String app, String stream, String startTime, String endTime, List mediaServerItems) { + public PageInfo getList(int page, int count, String query, String app, String stream, String startTime, String endTime, List mediaServerItems) { // 开始时间和结束时间在数据库中都是以秒为单位的 Long startTimeStamp = null; Long endTimeStamp = null; @@ -69,7 +69,7 @@ public class CloudRecordServiceImpl implements ICloudRecordService { } PageHelper.startPage(page, count); - List all = cloudRecordServiceMapper.getList(app, stream, startTimeStamp, endTimeStamp, + List all = cloudRecordServiceMapper.getList(query, app, stream, startTimeStamp, endTimeStamp, null, mediaServerItems); return new PageInfo<>(all); } @@ -85,7 +85,7 @@ public class CloudRecordServiceImpl implements ICloudRecordService { } long startTimeStamp = startDate.atStartOfDay().toInstant(ZoneOffset.ofHours(8)).getEpochSecond(); long endTimeStamp = endDate.atStartOfDay().toInstant(ZoneOffset.ofHours(8)).getEpochSecond(); - List cloudRecordItemList = cloudRecordServiceMapper.getList(app, stream, startTimeStamp, + List cloudRecordItemList = cloudRecordServiceMapper.getList(null, app, stream, startTimeStamp, endTimeStamp, null, mediaServerItems); if (cloudRecordItemList.isEmpty()) { return new ArrayList<>(); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index eb9e2ef6..87b839f7 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -765,7 +765,7 @@ public class PlayServiceImpl implements IPlayService { } // 为了支持多个数据库,这里不能使用求和函数来直接获取总数了 - List cloudRecordItemList = cloudRecordServiceMapper.getList("rtp", inviteInfo.getStream(), null, null, ssrcTransaction.getCallId(), null); + List cloudRecordItemList = cloudRecordServiceMapper.getList(null, "rtp", inviteInfo.getStream(), null, null, ssrcTransaction.getCallId(), null); if (cloudRecordItemList.isEmpty()) { logger.warn("[获取下载进度],未找到下载视频信息"); diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java index d5a08592..49ba89e4 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java @@ -44,6 +44,7 @@ public interface CloudRecordServiceMapper { "select * " + " from wvp_cloud_record " + " where 0 = 0" + + " AND (app LIKE concat('%',#{query},'%') OR stream LIKE concat('%',#{query},'%') ) " + " and app=#{app}" + " and stream=#{stream}" + " and end_time >= #{startTimeStamp}" + @@ -52,8 +53,10 @@ public interface CloudRecordServiceMapper { " and media_server_id in " + " #{item.id}" + " " + + " order by start_time DESC" + + " ") - List getList(@Param("app") String app, @Param("stream") String stream, + List getList(@Param("query") String query, @Param("app") String app, @Param("stream") String stream, @Param("startTimeStamp")Long startTimeStamp, @Param("endTimeStamp")Long endTimeStamp, @Param("callId")String callId, List mediaServerItemList); 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 04778c36..cb731cd3 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 @@ -105,20 +105,22 @@ public class CloudRecordController { @ResponseBody @GetMapping("/list") @Operation(summary = "分页查询云端录像") - @Parameter(name = "app", description = "应用名", required = true) - @Parameter(name = "stream", description = "流ID", required = true) + @Parameter(name = "query", description = "检索内容", required = false) + @Parameter(name = "app", description = "应用名", required = false) + @Parameter(name = "stream", description = "流ID", required = false) @Parameter(name = "page", description = "当前页", required = false) @Parameter(name = "count", description = "每页查询数量", required = false) - @Parameter(name = "startTime", description = "开始时间(yyyy-MM-dd HH:mm:ss)", required = true) - @Parameter(name = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = true) + @Parameter(name = "startTime", description = "开始时间(yyyy-MM-dd HH:mm:ss)", required = false) + @Parameter(name = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = false) @Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部流媒体", required = false) public PageInfo openRtpServer( - @RequestParam String app, - @RequestParam String stream, + @RequestParam(required = false) String query, + @RequestParam(required = false) String app, + @RequestParam(required = false) String stream, @RequestParam int page, @RequestParam int count, - @RequestParam String startTime, - @RequestParam String endTime, + @RequestParam(required = false) String startTime, + @RequestParam(required = false) String endTime, @RequestParam(required = false) String mediaServerId ) { @@ -139,7 +141,22 @@ public class CloudRecordController { if (mediaServerItems.isEmpty()) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "当前无流媒体"); } - return cloudRecordService.getList(page, count, app, stream, startTime, endTime, mediaServerItems); + if (query != null && ObjectUtils.isEmpty(query.trim())) { + query = null; + } + if (app != null && ObjectUtils.isEmpty(app.trim())) { + app = null; + } + if (stream != null && ObjectUtils.isEmpty(stream.trim())) { + stream = null; + } + if (startTime != null && ObjectUtils.isEmpty(startTime.trim())) { + startTime = null; + } + if (endTime != null && ObjectUtils.isEmpty(endTime.trim())) { + endTime = null; + } + return cloudRecordService.getList(page, count, query, app, stream, startTime, endTime, mediaServerItems); } @ResponseBody diff --git a/web_src/src/components/CloudRecord.vue b/web_src/src/components/CloudRecord.vue index c13cdc4a..c47ce2f7 100755 --- a/web_src/src/components/CloudRecord.vue +++ b/web_src/src/components/CloudRecord.vue @@ -1,5 +1,5 @@