64 lines
2.4 KiB
Java
64 lines
2.4 KiB
Java
package com.ycwl.basic.task;
|
|
|
|
import com.ycwl.basic.mapper.FaceSampleMapper;
|
|
import com.ycwl.basic.mapper.ScenicMapper;
|
|
import com.ycwl.basic.mapper.SourceMapper;
|
|
import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
|
|
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
|
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
|
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
|
|
import com.ycwl.basic.service.task.TaskFaceService;
|
|
import com.ycwl.basic.storage.StorageFactory;
|
|
import com.ycwl.basic.storage.adapters.IStorageAdapter;
|
|
import com.ycwl.basic.storage.entity.StorageFileObject;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.List;
|
|
|
|
@Component
|
|
@EnableScheduling
|
|
@Slf4j
|
|
public class FaceCleaner {
|
|
@Autowired
|
|
private ScenicMapper scenicMapper;
|
|
@Autowired
|
|
private TaskFaceService faceService;
|
|
@Autowired
|
|
private FaceSampleMapper faceSampleMapper;
|
|
@Autowired
|
|
private SourceMapper sourceMapper;
|
|
|
|
@Scheduled(cron = "0 0 4 * * ?")
|
|
public void clean(){
|
|
ScenicReqQuery scenicQuery = new ScenicReqQuery();
|
|
List<ScenicRespVO> scenicList = scenicMapper.list(scenicQuery);
|
|
scenicList.forEach(scenic -> {
|
|
log.info("当前景区{},开始删除人脸样本", scenic.getName());
|
|
faceService.batchDeleteExpiredFace(scenic.getId());
|
|
});
|
|
}
|
|
|
|
@Scheduled(cron = "0 0 3 * * ?")
|
|
public void deleteExpiredSource(){
|
|
|
|
}
|
|
|
|
@Scheduled(cron = "0 0 5 * * ?")
|
|
public void clear(){
|
|
log.info("开始清理人脸文件");
|
|
List<FaceSampleRespVO> faceSampleRespVOS = faceSampleMapper.list(new FaceSampleReqQuery());
|
|
IStorageAdapter adapter = StorageFactory.use("faces");
|
|
List<StorageFileObject> fileObjectList = adapter.listDir("user-face");
|
|
fileObjectList.parallelStream().forEach(fileObject -> {
|
|
if(faceSampleRespVOS.parallelStream().noneMatch(faceSampleRespVO -> faceSampleRespVO.getFaceUrl().contains(fileObject.getFullPath()))){
|
|
log.info("删除人脸文件:{}", fileObject);
|
|
adapter.deleteFile(fileObject.getFullPath());
|
|
}
|
|
});
|
|
}
|
|
}
|