增加form表单下载和生成链接

master
wujingtao 3 years ago
parent 6be90376dd
commit 5a4bff855d

@ -15,6 +15,7 @@
*/
package me.zhengjie.modules.tmpfilerecord.rest;
import me.zhengjie.annotation.AnonymousAccess;
import me.zhengjie.annotation.Log;
import me.zhengjie.modules.tmpfilerecord.domain.TempFileRecord;
import me.zhengjie.modules.tmpfilerecord.service.TempFileRecordService;
@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
@ -59,7 +61,33 @@ public class TempFileRecordController {
public ResponseEntity<Object> query(TempFileRecordQueryCriteria criteria, Pageable pageable) {
return new ResponseEntity<>(tempFileRecordService.queryAll(criteria, pageable), HttpStatus.OK);
}
@GetMapping("/link")
@Log("获取本地链接")
@ApiOperation("获取本地链接")
public ResponseEntity<Object> getFormLink(Integer id) {
return tempFileRecordService.getFormLink(id);
}
@GetMapping("/remoterLink")
@Log("获取远程链接")
@ApiOperation("获取远程链接")
public ResponseEntity<Object> getFormRemoterLink(Integer id) {
return tempFileRecordService.getFormRemoterLink(id);
}
/**
*
*/
@Log("下载文件")
@GetMapping("downloadFile")
@ApiOperation("下载文件")
@AnonymousAccess // fixme 需要测试完成后进行去除和使用上面的权限注解
public void downLoadFormFile(HttpServletResponse response, HttpServletRequest request, @RequestParam(value = "rand") String rand) {
// 校验参数,进行下载文件
tempFileRecordService.downloadFilesByRandCode(rand, response, request);
}
@PostMapping
@Log("新增tmpfilerecord")
@ApiOperation("新增tmpfilerecord")

@ -25,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
@ -104,4 +105,26 @@ public interface TempFileRecordService {
*/
long batchUpdate(List<TempFileRecordDto> TempFileRecordDto);
/**
* id
*
* @param id
* @return
*/
ResponseEntity<Object> getFormLink(Integer id);
/**
* id
*
* @param id
* @return
*/
ResponseEntity<Object> getFormRemoterLink(Integer id);
/**
*
*
* @param rand
*/
void downloadFilesByRandCode(String rand, HttpServletResponse response, HttpServletRequest request);
}

@ -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);
}
}

@ -1,9 +1,9 @@
#配置数据源
spring:
shardingsphere:
# props:
# sql:
# show: true
# props:
# sql:
# show: true
datasource:
names: eladmin,schema
eladmin:
@ -246,3 +246,6 @@ remote:
file-base-path-linux: /home/eladmin/file/temp/
file-base-path-windows: C:\eladmin\file\temp\
file-base-path-mac: ~/file/eladmin/temp/
tempFileRecord:
link:
address: 'http://116.62.197.152:8000/api/tempFileRecord/downloadFile'

@ -25,7 +25,7 @@ spring:
order_inserts: true
order_updates: true
open-in-view: true
# show-sql: true
# show-sql: true
redis:
#数据库索引
database: 0
@ -34,7 +34,6 @@ spring:
password:
#连接超时时间
timeout: 5000
task:
pool:
# 核心线程池大小

@ -129,7 +129,6 @@
</dependency>
<!-- 生成代码时候进行注释 -->
<dependency>
<groupId>org.apache.shardingSphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>

Loading…
Cancel
Save