diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/common/handler/BuildRecordScheduled.java b/eladmin-system/src/main/java/me/zhengjie/modules/common/handler/BuildRecordScheduled.java index ac0de6c..b447e0a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/common/handler/BuildRecordScheduled.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/common/handler/BuildRecordScheduled.java @@ -94,6 +94,16 @@ public class BuildRecordScheduled { log.info("buildRecordTask taskName as [{}] result as [{}] result time as [{}]", buildRecord.getTaskName(), deleteTagByParam, LocalTime.now()); } + /** + * todo 用于执行定时任务进行修复 - 一次性链接,不点击的情况 + */ +/* @Scheduled(cron = "0 0 4 * * ?") + public void fixdownloadFilesByRandFileStatus() { + log.info("scheduled fixdownloadFilesByRandFileStatus start time [{}]", LocalTime.now()); + + }*/ + + @Scheduled(cron = "0 0 4 * * ?") public void resendBuildRecordTask() { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/rest/MailTaskController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/rest/MailTaskController.java index 251bb8a..c3e67b1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/rest/MailTaskController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/rest/MailTaskController.java @@ -84,16 +84,15 @@ public class MailTaskController { @GetMapping("download") @ApiOperation("下载文件") @AnonymousAccess // fixme 需要测试完成后进行去除和使用上面的权限注解 - public void downLoadOnceFile(HttpServletResponse response, HttpServletRequest request, @RequestParam(value = "rand")String rand){ - // 校验参数,进行下载文件 - mailTaskService.downloadFilesByRandCode(rand, response, request); -/* if (StringUtils.isBlank(rand)){ - return new ResponseEntity<>(CommonResponse.createByError(ResponseCode.EMPTY_ARGUMENT), HttpStatus.OK); - }*/ -/* if (tag){ - return new ResponseEntity<>(CommonResponse.createBySuccessByCode(ResponseCode.SUCCESS_ONCE_LINK_MSG), HttpStatus.OK); + public ResponseEntity downLoadOnceFile(HttpServletResponse response, HttpServletRequest request, @RequestParam(value = "rand")String rand){ + + if(StringUtils.isNotBlank(rand)){ + // 校验参数,进行下载文件 + mailTaskService.downloadFilesByRandCode(rand, response, request); + return new ResponseEntity<>(CommonResponse.createBySuccessMessage("下载成功"), HttpStatus.OK); }else { - return new ResponseEntity<>(CommonResponse.createByError(ResponseCode.ONCE_LINK_MSG_ERROR), HttpStatus.OK); - }*/ + return new ResponseEntity<>(CommonResponse.createByError(ResponseCode.EMPTY_ARGUMENT), HttpStatus.OK); + } + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/service/impl/MailTaskServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/service/impl/MailTaskServiceImpl.java index 4916f4e..e31a0c9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/service/impl/MailTaskServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mailtask/service/impl/MailTaskServiceImpl.java @@ -1,5 +1,6 @@ package me.zhengjie.modules.mailtask.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.ZipUtil; import cn.hutool.poi.excel.ExcelUtil; @@ -27,6 +28,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.nio.file.Paths; +import java.sql.Timestamp; import java.util.List; import java.util.Objects; @@ -117,7 +119,9 @@ public class MailTaskServiceImpl implements MailTaskService { } } // 任务记录 - TempFileRecord tempFileRecord = new TempFileRecord(); + TempFileRecord tempFileRecord = new TempFileRecord(); // 增加生成时间字段 + // 增加生成时间字段 + tempFileRecord.setGmtCreate(new Timestamp(System.currentTimeMillis())); // 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔 tempFileRecord.setFilePaths(pathBuilder.toString().substring(0, pathBuilder.length() - 1)); // 默认保存7天 @@ -169,11 +173,13 @@ public class MailTaskServiceImpl implements MailTaskService { @Transactional(rollbackFor = Exception.class) public void downloadFilesByRandCode(String rand, HttpServletResponse response,HttpServletRequest request) { // 根据验证码查出需要的信息 - TempFileRecord tempFileRecord = tempFileRecordService.findByVerificationCode(rand.trim(), FINISH_BUILD_FILE_STATUS_CODE); + TempFileRecord tempFileRecord = tempFileRecordService.findByVerificationCode(rand.trim()); // 切分需要的文件地址 - if (tempFileRecord!= null){ + if (ObjectUtil.isNotEmpty(tempFileRecord)){ String filePaths = tempFileRecord.getFilePaths(); - if (StringUtils.isNotBlank(filePaths)){ + Integer fileStatus = tempFileRecord.getFileStatus(); + // fixme 进行临时性修复, 目前无法进行判断是否成功下载, 所以做下2次下载容错, 然后用定时任务自动关闭下载后的结果 + if (StringUtils.isNotBlank(filePaths) && fileStatus <= 2){ String[] split = filePaths.split(FILE_PATH_SPLIT); if (split.length > 0 && StringUtils.isNotBlank(split[0])){ String tempPath = StringUtils.substringBeforeLast(split[0], File.separator); @@ -182,7 +188,8 @@ public class MailTaskServiceImpl implements MailTaskService { // ZipUtil.zip(tempPath, zipPath); FileUtil.downloadFile(request, response, new File(zipPath), true); // 更新下载结果 - tempFileRecord.setFileStatus(FINISH_DOWNLOAD_FILE_STATUS_CODE); +// tempFileRecord.setFileStatus(FINISH_DOWNLOAD_FILE_STATUS_CODE); + tempFileRecord.setFileStatus(fileStatus + 1); tempFileRecordService.update(tempFileRecord); } } @@ -195,6 +202,8 @@ public class MailTaskServiceImpl implements MailTaskService { public String buildOnceLinkFromServer(String filePath) { // 任务记录 TempFileRecord tempFileRecord = new TempFileRecord(); + // 增加生成时间字段 + tempFileRecord.setGmtCreate(new Timestamp(System.currentTimeMillis())); // 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔 tempFileRecord.setFilePaths(filePath); // 默认保存7天 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/repository/TempFileRecordRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/repository/TempFileRecordRepository.java index 06d5fc6..8ea0d6c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/repository/TempFileRecordRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/repository/TempFileRecordRepository.java @@ -26,5 +26,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; **/ public interface TempFileRecordRepository extends JpaRepository, JpaSpecificationExecutor { + TempFileRecord findByVerificationCodeAndFileStatus(String verificationCode, Integer fileStatus); + + TempFileRecord findByVerificationCode(String verificationCode); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/TempFileRecordService.java b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/TempFileRecordService.java index 184ca08..baf28b5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/TempFileRecordService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/TempFileRecordService.java @@ -94,10 +94,15 @@ public interface TempFileRecordService { /** - * 根据文件访问验证码进行访问 + * 根据文件访问验证码, 和文件状态 进行访问 */ TempFileRecord findByVerificationCode(String verificationCode, Integer fileStatus); + /** + * 仅 根据文件访问验证码 进行查询 + */ + TempFileRecord findByVerificationCode(String verificationCode); + /** * 批量更新 * diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/impl/TempFileRecordServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/impl/TempFileRecordServiceImpl.java index 7a7e35c..03dc987 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/impl/TempFileRecordServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/tmpfilerecord/service/impl/TempFileRecordServiceImpl.java @@ -132,6 +132,11 @@ public class TempFileRecordServiceImpl implements TempFileRecordService { return tempFileRecordRepository.findByVerificationCodeAndFileStatus(verificationCode, fileStatus); } + @Override + public TempFileRecord findByVerificationCode(String verificationCode) { + return tempFileRecordRepository.findByVerificationCode(verificationCode); + } + @Override public long batchUpdate(List TempFileRecordDto) {