|
|
|
@ -18,11 +18,13 @@ package me.zhengjie.modules.tmpfilerecord.service.impl;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.ZipUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import me.zhengjie.common.http.CommonResponse;
|
|
|
|
|
import me.zhengjie.common.http.ResponseCode;
|
|
|
|
|
import me.zhengjie.common.json.OnceLinkMsgJsonContent;
|
|
|
|
|
import me.zhengjie.exception.BadRequestException;
|
|
|
|
|
import me.zhengjie.modules.mnt.util.ZipUtils;
|
|
|
|
|
import me.zhengjie.modules.tmpfilerecord.domain.TempFileRecord;
|
|
|
|
|
import me.zhengjie.utils.*;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
@ -39,8 +41,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -56,6 +60,11 @@ public class TempFileRecordServiceImpl implements TempFileRecordService {
|
|
|
|
|
|
|
|
|
|
private final TempFileRecordRepository tempFileRecordRepository;
|
|
|
|
|
private final TempFileRecordMapper tempFileRecordMapper;
|
|
|
|
|
/**
|
|
|
|
|
* 远程服务器地址
|
|
|
|
|
*/
|
|
|
|
|
@Value("${tempFileRecord.link.address}")
|
|
|
|
|
private String tempFileRecordAddress;
|
|
|
|
|
/**
|
|
|
|
|
* 远程服务器地址
|
|
|
|
|
*/
|
|
|
|
@ -135,4 +144,55 @@ public class TempFileRecordServiceImpl implements TempFileRecordService {
|
|
|
|
|
);
|
|
|
|
|
return TempFileRecordDto.size();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResponseEntity<Object> getFormLink(Integer id) {
|
|
|
|
|
TempFileRecordDto byId = findById(id);
|
|
|
|
|
long num = DateUtil.between(byId.getGmtCreate(), DateUtil.date(), DateUnit.DAY);
|
|
|
|
|
if ((int) num > byId.getDays()) {
|
|
|
|
|
throw new BadRequestException("超过有效期");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String url = tempFileRecordAddress + "?" + "rand=" + byId.getVerificationCode();
|
|
|
|
|
return getOnceLinkResponseEntity(url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResponseEntity<Object> getFormRemoterLink(Integer id) {
|
|
|
|
|
TempFileRecordDto byId = findById(id);
|
|
|
|
|
long num = DateUtil.between(byId.getGmtCreate(), DateUtil.date(), DateUnit.DAY);
|
|
|
|
|
if ((int) num > byId.getDays()) {
|
|
|
|
|
throw new BadRequestException("超过有效期");
|
|
|
|
|
}
|
|
|
|
|
String url = remoteFileServerAddress + "?" + "rand=" + byId.getVerificationCode();
|
|
|
|
|
return getOnceLinkResponseEntity(url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void downloadFilesByRandCode(String rand, HttpServletResponse response, HttpServletRequest request) {
|
|
|
|
|
// 根据验证码查出需要的信息
|
|
|
|
|
TempFileRecord tempFileRecord = findByVerificationCode(rand.trim(), 0);
|
|
|
|
|
// 切分需要的文件地址
|
|
|
|
|
if (tempFileRecord != null) {
|
|
|
|
|
String filePaths = tempFileRecord.getFilePaths();
|
|
|
|
|
if (StringUtils.isNotBlank(filePaths)) {
|
|
|
|
|
FileUtil.downloadFile(request, response, new File(filePaths), true);
|
|
|
|
|
// 更新下载结果
|
|
|
|
|
tempFileRecord.setFileStatus(1);
|
|
|
|
|
update(tempFileRecord);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ResponseEntity<Object> getOnceLinkResponseEntity(String result) {
|
|
|
|
|
OnceLinkMsgJsonContent linkUrl = new OnceLinkMsgJsonContent();
|
|
|
|
|
if (StringUtils.isNotBlank(result)) {
|
|
|
|
|
// 进行json相关的转换
|
|
|
|
|
linkUrl.setOnceLink(result);
|
|
|
|
|
} else {
|
|
|
|
|
return new ResponseEntity<>(CommonResponse.createByError(ResponseCode.NO_MATCH_ARGUMENT_SET), HttpStatus.OK);
|
|
|
|
|
}
|
|
|
|
|
return new ResponseEntity<>(CommonResponse.createBySuccess(linkUrl), HttpStatus.OK);
|
|
|
|
|
}
|
|
|
|
|
}
|