增加云端录像手动删除

This commit is contained in:
648540858
2025-04-14 22:46:37 +08:00
parent 59c6243338
commit 65cd397a9c
4 changed files with 44 additions and 4 deletions

View File

@@ -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<Integer> ids);
}

View File

@@ -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<Integer> ids) {
log.info("[删除录像文件] ids: {}", ids.toArray());
List<CloudRecordItem> cloudRecordItemList = cloudRecordServiceMapper.queryRecordByIds(ids);
if (cloudRecordItemList.isEmpty()) {
return;
}
List<CloudRecordItem> 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);
}
}
}

View File

@@ -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(" <script>" +
"select * " +
" from wvp_cloud_record where id in " +
" <foreach collection='ids' item='item' open='(' separator=',' close=')' > #{item}</foreach>" +
" </script>")
List<CloudRecordItem> queryRecordByIds(Set<Integer> ids);
}

View File

@@ -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节点的情况 ***************************************/
/**