Merge remote-tracking branch '百业git1/master' into master

master
土豆兄弟 3 years ago
commit 7551fbfe4f

@ -19,14 +19,16 @@ import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author X
* @website https://el-admin.vip
* @description /
* @author X
* @date 2020-10-15
**/
@Entity
@ -63,6 +65,18 @@ public class TempFileRecord implements Serializable {
@ApiModelProperty(value = "文件保存状态")
private Integer fileStatus;
@Column(name = "origin")
@ApiModelProperty(value = "链接来源")
private Integer origin;
@Column(name = "gmt_create")
@ApiModelProperty(value = "生成日期")
private Date gmtCreate;
@Column(name = "act_name")
@ApiModelProperty(value = "业务名")
private String actName;
public void copy(TempFileRecord source) {
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
}

@ -15,18 +15,11 @@
*/
package me.zhengjie.modules.tmpfilerecord.rest;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import me.zhengjie.annotation.AnonymousAccess;
import me.zhengjie.annotation.Log;
import me.zhengjie.common.http.CommonResponse;
import me.zhengjie.common.http.ResponseCode;
import me.zhengjie.common.json.OnceLinkMsgJsonContent;
import me.zhengjie.modules.tmpfilerecord.domain.TempFileRecord;
import me.zhengjie.modules.tmpfilerecord.service.TempFileRecordService;
import me.zhengjie.modules.tmpfilerecord.service.dto.TempFileRecordQueryCriteria;
import me.zhengjie.service.EmailService;
import me.zhengjie.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
@ -35,14 +28,14 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @website https://el-admin.vip
* @author X
* @website https://el-admin.vip
* @date 2020-10-15
**/
@RestController
@ -69,6 +62,32 @@ public class TempFileRecordController {
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")
@ -94,4 +113,5 @@ public class TempFileRecordController {
tempFileRecordService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

@ -19,23 +19,26 @@ import me.zhengjie.modules.tmpfilerecord.domain.TempFileRecord;
import me.zhengjie.modules.tmpfilerecord.service.dto.TempFileRecordDto;
import me.zhengjie.modules.tmpfilerecord.service.dto.TempFileRecordQueryCriteria;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
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;
/**
* @author X
* @website https://el-admin.vip
* @description
* @author X
* @date 2020-10-15
**/
public interface TempFileRecordService {
/**
*
*
* @param criteria
* @param pageable
* @return Map<String, Object>
@ -44,6 +47,7 @@ public interface TempFileRecordService {
/**
*
*
* @param criteria
* @return List<TempFileRecordDto>
*/
@ -51,6 +55,7 @@ public interface TempFileRecordService {
/**
* ID
*
* @param id ID
* @return TempFileRecordDto
*/
@ -58,6 +63,7 @@ public interface TempFileRecordService {
/**
*
*
* @param resources /
* @return TempFileRecordDto
*/
@ -65,18 +71,21 @@ public interface TempFileRecordService {
/**
*
*
* @param resources /
*/
void update(TempFileRecord resources);
/**
*
*
* @param ids /
*/
void deleteAll(Integer[] ids);
/**
*
*
* @param all
* @param response /
* @throws IOException /
@ -96,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);
}

@ -16,32 +16,56 @@
package me.zhengjie.modules.tmpfilerecord.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author X
* @website https://el-admin.vip
* @description /
* @author X
* @date 2020-10-15
**/
@Data
public class TempFileRecordDto implements Serializable {
/** id */
/**
* id
*/
private Integer id;
/** 访问接口的ip地址记录 */
/**
* 访ip
*/
private String ipAddrs;
/** 文件生成地址 */
/**
*
*/
private String filePaths;
/** 访问文件验证码 */
/**
* 访
*/
private String verificationCode;
/** 有效保存时间 */
/**
*
*/
private Integer days;
/** 文件保存状态 */
/**
*
*/
private Integer fileStatus;
/**
* 1-formManager 2-eladmin
*/
private Integer origin;
private Date gmtCreate;
/**
*
*/
private String actName;
}

@ -16,34 +16,59 @@
package me.zhengjie.modules.tmpfilerecord.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import me.zhengjie.annotation.Query;
/**
* @website https://el-admin.vip
* @author X
* @website https://el-admin.vip
* @date 2020-10-15
**/
@Data
public class TempFileRecordQueryCriteria {
/** 精确 */
/**
*
*/
@Query
private Integer id;
/** 精确 */
/**
*
*/
@Query
private String ipAddrs;
/** 精确 */
/**
*
*/
@Query
private String verificationCode;
/** 精确 */
/**
*
*/
@Query
private Integer days;
/** 精确 */
/**
*
*/
@Query
private Integer fileStatus;
/**
*
*/
@Query
private Integer origin;
/**
* BETWEEN
*/
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> gmtCreate;
}

@ -16,10 +16,15 @@
package me.zhengjie.modules.tmpfilerecord.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.system.OsInfo;
import cn.hutool.system.SystemUtil;
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;
@ -29,24 +34,23 @@ import me.zhengjie.modules.tmpfilerecord.service.dto.TempFileRecordDto;
import me.zhengjie.modules.tmpfilerecord.service.dto.TempFileRecordQueryCriteria;
import me.zhengjie.modules.tmpfilerecord.service.mapstruct.TempFileRecordMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.io.File;
import java.util.*;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author X
* @website https://el-admin.vip
* @description
* @author X
* @date 2020-10-15
**/
@Service
@ -56,6 +60,16 @@ public class TempFileRecordServiceImpl implements TempFileRecordService {
private final TempFileRecordRepository tempFileRecordRepository;
private final TempFileRecordMapper tempFileRecordMapper;
/**
*
*/
@Value("${tempFileRecord.link.address}")
private String tempFileRecordAddress;
/**
*
*/
@Value("${remote.link.address}")
private String remoteFileServerAddress;
@Override
public Map<String, Object> queryAll(TempFileRecordQueryCriteria criteria, Pageable pageable) {
@ -130,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);
}
}

@ -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'

@ -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