From 65cd397a9cdad319467c4718abd0028f4093272f Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 14 Apr 2025 22:46:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=91=E7=AB=AF=E5=BD=95?= =?UTF-8?q?=E5=83=8F=E6=89=8B=E5=8A=A8=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/service/ICloudRecordService.java | 2 ++ .../service/impl/CloudRecordServiceImpl.java | 29 ++++++++++++++++--- .../dao/CloudRecordServiceMapper.java | 8 +++++ .../cloudRecord/CloudRecordController.java | 9 ++++++ 4 files changed, 44 insertions(+), 4 deletions(-) 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 41ff4eed4..4d5806998 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java @@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.github.pagehelper.PageInfo; import java.util.List; +import java.util.Set; /** * 云端录像管理 @@ -64,4 +65,5 @@ public interface ICloudRecordService { void setRecordSpeed(String mediaServerId, String app, String stream, Integer speed); + void deleteFileByIds(Set ids); } 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 095561ee5..afd253bbc 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 @@ -34,12 +34,10 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import java.io.File; import java.time.LocalDate; import java.time.ZoneOffset; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; @Slf4j @Service @@ -337,4 +335,27 @@ public class CloudRecordServiceImpl implements ICloudRecordService { } mediaServerService.setRecordSpeed(mediaServer, app, stream, speed); } + + @Override + public void deleteFileByIds(Set ids) { + log.info("[删除录像文件] ids: {}", ids.toArray()); + List cloudRecordItemList = cloudRecordServiceMapper.queryRecordByIds(ids); + if (cloudRecordItemList.isEmpty()) { + return; + } + List cloudRecordItemIdListForDelete = new ArrayList<>(); + for (CloudRecordItem cloudRecordItem : cloudRecordItemList) { + String date = new File(cloudRecordItem.getFilePath()).getParentFile().getName(); + MediaServer mediaServer = mediaServerService.getOne(cloudRecordItem.getMediaServerId()); + boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServer, cloudRecordItem.getApp(), + cloudRecordItem.getStream(), date, cloudRecordItem.getFileName()); + if (deleteResult) { + log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath()); + cloudRecordItemIdListForDelete.add(cloudRecordItem); + } + } + if (!cloudRecordItemIdListForDelete.isEmpty()) { + cloudRecordServiceMapper.deleteList(cloudRecordItemIdListForDelete); + } + } } 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 062710832..87ac2059d 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 @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.service.bean.CloudRecordItem; import org.apache.ibatis.annotations.*; import java.util.List; +import java.util.Set; @Mapper public interface CloudRecordServiceMapper { @@ -140,4 +141,11 @@ public interface CloudRecordServiceMapper { @Param("stream") String stream, @Param("startTimeStamp")Long startTimeStamp, @Param("endTimeStamp")Long endTimeStamp); + + @Select(" ") + List queryRecordByIds(Set ids); } 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 1264d17ff..523543524 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 @@ -12,6 +12,7 @@ import com.genersoft.iot.vmp.service.bean.CloudRecordItem; import com.genersoft.iot.vmp.service.bean.DownloadFileInfo; import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.genersoft.iot.vmp.service.bean.InviteErrorCode; +import com.genersoft.iot.vmp.streamPush.bean.BatchRemoveParam; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.StreamContent; @@ -339,6 +340,14 @@ public class CloudRecordController { cloudRecordService.setRecordSpeed(mediaServerId, app, stream, speed); } + @ResponseBody + @DeleteMapping("/delete") + @Operation(summary = "删除录像文件") + @Parameter(name = "ids", description = "文件ID集合", required = true) + public void deleteFileByIds(@RequestBody BatchRemoveParam ids) { + cloudRecordService.deleteFileByIds(ids.getIds()); + } + /************************* 以下这些接口只适合wvp和zlm部署在同一台服务器的情况,且wvp只有一个zlm节点的情况 ***************************************/ /**