This commit is contained in:
2025-04-09 16:18:58 +08:00
parent 73d393b436
commit d0d4e37526
23 changed files with 344 additions and 58 deletions

View File

@ -1,5 +1,6 @@
package com.ycwl.basic.task;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.ycwl.basic.constant.StorageConstant;
import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter;
@ -211,6 +212,12 @@ public class FaceCleaner {
IStorageAdapter adapter = StorageFactory.use("faces");
List<StorageFileObject> fileObjectList = adapter.listDir("user-face");
fileObjectList.parallelStream().forEach(fileObject -> {
if (fileObject.getModifyTime() != null) {
// 如果是一天以内修改的,则跳过
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) < 1) {
return;
}
}
if(faceSampleRespVOS.parallelStream().noneMatch(faceSampleRespVO -> faceSampleRespVO.getFaceUrl().contains(fileObject.getFullPath()))){
log.info("删除人脸文件:{}", fileObject);
adapter.deleteFile(fileObject.getFullPath());
@ -225,6 +232,12 @@ public class FaceCleaner {
log.info("开始清理视频文件");
List<StorageFileObject> fileObjectList = adapter.listDir(StorageConstant.VIDEO_PIECE_PATH);
fileObjectList.parallelStream().forEach(fileObject -> {
if (fileObject.getModifyTime() != null) {
// 如果是一天以内修改的,则跳过
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) < 1) {
return;
}
}
if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getVideoUrl())).noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){
log.info("删除文件:{}", fileObject);
adapter.deleteFile(fileObject.getFullPath());
@ -235,6 +248,12 @@ public class FaceCleaner {
log.info("开始清理图片文件");
fileObjectList = adapter.listDir(StorageConstant.PHOTO_PATH);
fileObjectList.parallelStream().forEach(fileObject -> {
if (fileObject.getModifyTime() != null) {
// 如果是一天以内修改的,则跳过
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) < 1) {
return;
}
}
if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getUrl())).noneMatch(videoRespVO -> videoRespVO.getUrl().contains(fileObject.getFullPath()))){
log.info("删除文件:{}", fileObject);
adapter.deleteFile(fileObject.getFullPath());
@ -252,6 +271,12 @@ public class FaceCleaner {
log.info("开始清理视频文件");
List<StorageFileObject> fileObjectList = adapter.listDir(StorageConstant.VLOG_PATH);
fileObjectList.parallelStream().forEach(fileObject -> {
if (fileObject.getModifyTime() != null) {
// 如果是一天以内修改的,则跳过
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) < 1) {
return;
}
}
if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getVideoUrl())).noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){
log.info("删除文件:{}", fileObject);
adapter.deleteFile(fileObject.getFullPath());

View File

@ -3,11 +3,11 @@ package com.ycwl.basic.task;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.ycwl.basic.biz.OrderBiz;
import com.ycwl.basic.biz.TaskStatusBiz;
import com.ycwl.basic.constant.StorageConstant;
import com.ycwl.basic.device.DeviceFactory;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.operator.IDeviceStorageOperator;
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
import com.ycwl.basic.repository.DeviceRepository;
import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.SourceMapper;
@ -20,9 +20,9 @@ import com.ycwl.basic.repository.TemplateRepository;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.utils.SnowFlakeUtil;
import com.ycwl.basic.utils.VideoReUploader;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@ -65,6 +65,8 @@ public class VideoPieceGetter {
private TemplateRepository templateRepository;
@Autowired
private TaskStatusBiz taskStatusBiz;
@Autowired
private VideoReUploader videoReUploader;
@Data
public static class Task {
@ -285,7 +287,7 @@ public class VideoPieceGetter {
}
log.info("视频裁切成功");
IStorageAdapter adapter = StorageFactory.use("assets");
url = adapter.uploadFile(outFile, "video-source", outFile.getName());
url = adapter.uploadFile("video/mp4", outFile, StorageConstant.VIDEO_PIECE_PATH, outFile.getName());
// 上传成功后删除文件
outFile.delete();
}
@ -320,6 +322,7 @@ public class VideoPieceGetter {
sourceMapper.addRelation(videoSource);
}
sourceMapper.add(sourceEntity);
videoReUploader.addTask(sourceEntity.getVideoUrl(), sourceEntity.getId());
} else {
// 有原视频
if (task.memberId != null && task.faceId != null) {