|
|
@@ -17,8 +17,6 @@ import com.xunmei.common.core.domain.registerbook.vo.PdfToZipTempVo;
|
|
|
import com.xunmei.common.core.enums.RegisterBookType;
|
|
|
import com.xunmei.common.core.utils.DateHelper;
|
|
|
import com.xunmei.common.core.utils.uuid.UUID;
|
|
|
-import com.xunmei.common.redis.delay.RedisDelayedQueue;
|
|
|
-import com.xunmei.common.redis.delay.RegisterBookFileExpirationListener;
|
|
|
import com.xunmei.common.redis.utils.RedisUtils;
|
|
|
import com.xunmei.file.utils.FileDownUtils;
|
|
|
import com.xunmei.file.utils.FileUploadUtils;
|
|
|
@@ -37,6 +35,9 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.annotation.Primary;
|
|
|
+import org.springframework.data.redis.core.BoundValueOperations;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -80,10 +81,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
|
|
|
@Autowired
|
|
|
private HttpServletRequest request;
|
|
|
-
|
|
|
@Autowired
|
|
|
- private RedisDelayedQueue delayedQueue;
|
|
|
-
|
|
|
+ private StringRedisTemplate redisTemplate;
|
|
|
|
|
|
private static PdfFilePathVo getLocalFilePath(String localFilePath, String businessType, String fileName) {
|
|
|
fileName = filterPath(fileName);
|
|
|
@@ -641,8 +640,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
response.setContentType("application/octet-stream");
|
|
|
response.setHeader("Content-Disposition", "attachment; filename=" + zipName);
|
|
|
List<PdfToZipTempVo> pdfToZipTempVoList = registerBookPdfList.parallelStream().map(pdf -> {
|
|
|
- return resolve(pdf, count);
|
|
|
- }).filter(Objects::nonNull)
|
|
|
+ return resolve(pdf, count);
|
|
|
+ }).filter(Objects::nonNull)
|
|
|
.collect(Collectors.toList());
|
|
|
count.await();
|
|
|
pdfToZipTempVoList.removeIf(pdfToZipTempVo -> !FileUtil.exist(pdfToZipTempVo.getFile()));
|
|
|
@@ -775,8 +774,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
zipName = URLEncoder.encode(fileNameStr + ".zip", "UTF-8");
|
|
|
|
|
|
List<PdfToZipTempVo> pdfToZipTempVoList = list.parallelStream().map(pdf -> {
|
|
|
- return resolve(pdf, count);
|
|
|
- }).filter(Objects::nonNull)
|
|
|
+ return resolve(pdf, count);
|
|
|
+ }).filter(Objects::nonNull)
|
|
|
.collect(Collectors.toList());
|
|
|
pdfToZipTempVoList.removeIf(pdfToZipTempVo -> !FileUtil.exist(pdfToZipTempVo.getFile()));
|
|
|
log.info("登记簿全部下载完成,开始压缩文件,数量:{}", pdfToZipTempVoList.size());
|
|
|
@@ -822,11 +821,12 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
pdfLocalFileTempVo.setIsRegisterBookPage(pdfDto.getIsRegisterBookPage());
|
|
|
pdfLocalFileTempVo.setCreateTime(new Date());
|
|
|
//此处localFileName 为文件的绝对路径,存在redis延迟队列中,一个小时后删除文件
|
|
|
- delayedQueue.addQueueHours(pdfLocalFileTempVo.getLocalFileName(), 1, RegisterBookFileExpirationListener.class);
|
|
|
localFileName = localFileName.replace(this.localFilePath + File.separator, "");
|
|
|
//此处localFileName 为文件名称,存入redis中,用于页面展示文件名称,下载
|
|
|
//RedisUtils.setCacheObject(URLDecoder.decode(localFileName, "UTF-8"), JSON.toJSONString(pdfLocalFileTempVo),true);
|
|
|
- RedisUtils.setCacheObject(URLDecoder.decode(localFileName, "UTF-8"), JSON.toJSONString(pdfLocalFileTempVo), Duration.ofMillis(3500 * 1000L));
|
|
|
+ final BoundValueOperations ops = redisTemplate.boundValueOps(URLDecoder.decode(localFileName, "UTF-8"));
|
|
|
+ ops.set(JSON.toJSONString(pdfLocalFileTempVo));
|
|
|
+ ops.expireAt(DateUtil.endOfDay(new Date()));
|
|
|
}
|
|
|
|
|
|
private List<List<CoreRegisterBookPdfPageVo>> checkSubList(CoreRegisterBookPdfExportDto pdfDto) {
|
|
|
@@ -888,4 +888,16 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
return fileSizeMB.toString();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void deletedZipFile() {
|
|
|
+ final File dir = new File(this.localFilePath);
|
|
|
+ final File[] files = dir.listFiles();
|
|
|
+ if (ObjectUtil.isNull(files) || ObjectUtil.isEmpty(files)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Arrays.stream(files)
|
|
|
+ .filter(file -> file.getName().startsWith(CacheConstants.REGISTER_PDF_FILE_KEY))
|
|
|
+ .filter(file->file.getName().endsWith(".zip"))
|
|
|
+ .forEach(FileUtil::del);
|
|
|
+ }
|
|
|
}
|