From 45b3d9322c2a6238402febf44a2e7afb911f05d1 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 14 Apr 2025 22:54:30 +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/conf/CloudRecordTimer.java | 14 +++++++---- .../media/zlm/ZLMMediaNodeServerService.java | 2 +- .../service/impl/CloudRecordServiceImpl.java | 23 +++++++++++++++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java b/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java index 652853bb0..cf4fff31c 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java @@ -1,6 +1,7 @@ package com.genersoft.iot.vmp.conf; +import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.service.IMediaServerService; import com.genersoft.iot.vmp.service.bean.CloudRecordItem; @@ -59,11 +60,14 @@ public class CloudRecordTimer { // TODO 后续可以删除空了的过期日期文件夹 for (CloudRecordItem cloudRecordItem : cloudRecordItemList) { String date = new File(cloudRecordItem.getFilePath()).getParentFile().getName(); - boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServerItem, cloudRecordItem.getApp(), - cloudRecordItem.getStream(), date, cloudRecordItem.getFileName()); - if (deleteResult) { - log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath()); - } + try { + boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServerItem, cloudRecordItem.getApp(), + cloudRecordItem.getStream(), date, cloudRecordItem.getFileName()); + if (deleteResult) { + log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath()); + } + }catch (ControllerException ignored) {} + } result += cloudRecordServiceMapper.deleteList(cloudRecordItemList); } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java index f18520066..abb88100c 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java @@ -169,7 +169,7 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { return true; }else { log.info("[zlm-deleteRecordDirectory] 删除磁盘文件错误, server: {} {}:{}->{}/{}, 结果: {}", mediaServer.getId(), app, stream, date, fileName, jsonObject); - return false; + throw new ControllerException(ErrorCode.ERROR100.getCode(), "删除磁盘文件失败"); } } 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 afd253bbc..7b1320933 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 @@ -344,18 +344,31 @@ public class CloudRecordServiceImpl implements ICloudRecordService { return; } List cloudRecordItemIdListForDelete = new ArrayList<>(); + StringBuilder stringBuilder = new StringBuilder(); 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); + try { + boolean deleteResult = mediaServerService.deleteRecordDirectory(mediaServer, cloudRecordItem.getApp(), + cloudRecordItem.getStream(), date, cloudRecordItem.getFileName()); + if (deleteResult) { + log.warn("[录像文件定时清理] 删除磁盘文件成功: {}", cloudRecordItem.getFilePath()); + cloudRecordItemIdListForDelete.add(cloudRecordItem); + } + }catch (ControllerException e) { + if (stringBuilder.length() > 0) { + stringBuilder.append(", "); + } + stringBuilder.append(cloudRecordItem.getFileName()); } + } if (!cloudRecordItemIdListForDelete.isEmpty()) { cloudRecordServiceMapper.deleteList(cloudRecordItemIdListForDelete); } + if (stringBuilder.length() > 0) { + stringBuilder.append(" 删除失败"); + throw new ControllerException(ErrorCode.ERROR100.getCode(), stringBuilder.toString()); + } } }