mirror of https://gitee.com/stylefeng/roses
【file】整理file模块的字段和业务
parent
d54afecb46
commit
6f01287ce4
|
@ -21,21 +21,26 @@ public class SysFileInfoRequest extends BaseRequest {
|
||||||
/**
|
/**
|
||||||
* 主键id
|
* 主键id
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "id不能为空,请检查id参数", groups = {delete.class, detail.class})
|
@NotNull(message = "fileId不能为空", groups = {delete.class, detail.class})
|
||||||
private Long id;
|
private Long fileId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)
|
* 文件编码,解决一个文件多个版本问题,多次上传文件编码不变
|
||||||
|
*/
|
||||||
|
private Long fileCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件存储位置:1-阿里云,2-腾讯云,3-minio,4-本地
|
||||||
*/
|
*/
|
||||||
private Integer fileLocation;
|
private Integer fileLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件仓库
|
* 文件仓库(文件夹)
|
||||||
*/
|
*/
|
||||||
private String fileBucket;
|
private String fileBucket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件名称(上传时候的文件名)
|
* 文件名称(上传时候的文件全名)
|
||||||
*/
|
*/
|
||||||
private String fileOriginName;
|
private String fileOriginName;
|
||||||
|
|
||||||
|
@ -50,7 +55,7 @@ public class SysFileInfoRequest extends BaseRequest {
|
||||||
private Long fileSizeKb;
|
private Long fileSizeKb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储到bucket的名称(文件唯一标识id)
|
* 存储到bucket中的名称,主键id+.后缀
|
||||||
*/
|
*/
|
||||||
private String fileObjectName;
|
private String fileObjectName;
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,15 @@ public class SysFileInfoResponse {
|
||||||
/**
|
/**
|
||||||
* 主键id
|
* 主键id
|
||||||
*/
|
*/
|
||||||
private Long id;
|
private Long fileId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)
|
* 文件编码,解决一个文件多个版本问题,多次上传文件编码不变
|
||||||
|
*/
|
||||||
|
private Long fileCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件存储位置:1-阿里云,2-腾讯云,3-minio,4-本地
|
||||||
*/
|
*/
|
||||||
private Integer fileLocation;
|
private Integer fileLocation;
|
||||||
|
|
||||||
|
@ -32,7 +37,7 @@ public class SysFileInfoResponse {
|
||||||
private String fileOriginName;
|
private String fileOriginName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件后缀
|
* 文件后缀,例如.txt
|
||||||
*/
|
*/
|
||||||
private String fileSuffix;
|
private String fileSuffix;
|
||||||
|
|
||||||
|
@ -42,7 +47,7 @@ public class SysFileInfoResponse {
|
||||||
private Long fileSizeKb;
|
private Long fileSizeKb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储到bucket的名称(文件唯一标识id)
|
* 存储到bucket中的名称,主键id+.后缀
|
||||||
*/
|
*/
|
||||||
private String fileObjectName;
|
private String fileObjectName;
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,14 @@ package cn.stylefeng.roses.kernel.file.modular.controller;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.stylefeng.roses.kernel.file.pojo.request.SysFileInfoRequest;
|
|
||||||
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
|
||||||
import cn.stylefeng.roses.kernel.file.exception.FileException;
|
import cn.stylefeng.roses.kernel.file.exception.FileException;
|
||||||
import cn.stylefeng.roses.kernel.file.exception.enums.FileExceptionEnum;
|
import cn.stylefeng.roses.kernel.file.exception.enums.FileExceptionEnum;
|
||||||
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
|
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
|
||||||
|
import cn.stylefeng.roses.kernel.file.pojo.request.SysFileInfoRequest;
|
||||||
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
||||||
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
||||||
import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
|
import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
||||||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
@ -89,7 +89,7 @@ public class SysFileInfoController {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文件id不为空,则根据文件id预览
|
// 文件id不为空,则根据文件id预览
|
||||||
if (ObjectUtil.isNotEmpty(sysFileInfoRequest.getId())) {
|
if (ObjectUtil.isNotEmpty(sysFileInfoRequest.getFileId())) {
|
||||||
sysFileInfoService.previewByFileId(sysFileInfoRequest, response);
|
sysFileInfoService.previewByFileId(sysFileInfoRequest, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package cn.stylefeng.roses.kernel.file.modular.entity;
|
package cn.stylefeng.roses.kernel.file.modular.entity;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@ -24,47 +24,47 @@ public class SysFileInfo extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 主键id
|
* 主键id
|
||||||
*/
|
*/
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(value = "file_id", type = IdType.ASSIGN_ID)
|
||||||
private Long id;
|
private Long fileId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)
|
* 文件编码,解决一个文件多个版本问题,多次上传文件编码不变
|
||||||
|
*/
|
||||||
|
@TableField(value = "file_code")
|
||||||
|
private Long fileCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件存储位置:1-阿里云,2-腾讯云,3-minio,4-本地
|
||||||
*/
|
*/
|
||||||
@TableField("file_location")
|
@TableField("file_location")
|
||||||
private Integer fileLocation;
|
private Integer fileLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件仓库
|
* 文件仓库(文件夹)
|
||||||
*/
|
*/
|
||||||
@TableField("file_bucket")
|
@TableField("file_bucket")
|
||||||
private String fileBucket;
|
private String fileBucket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件名称(上传时候的文件名)
|
* 文件名称(上传时候的文件全名)
|
||||||
*/
|
*/
|
||||||
@TableField("file_origin_name")
|
@TableField("file_origin_name")
|
||||||
private String fileOriginName;
|
private String fileOriginName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件后缀
|
* 文件后缀,例如.txt
|
||||||
*/
|
*/
|
||||||
@TableField("file_suffix")
|
@TableField("file_suffix")
|
||||||
private String fileSuffix;
|
private String fileSuffix;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件大小kb
|
* 文件大小kb为单位
|
||||||
*/
|
*/
|
||||||
@TableField("file_size_kb")
|
@TableField("file_size_kb")
|
||||||
private Long fileSizeKb;
|
private Long fileSizeKb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件大小信息,计算后的
|
* 存储到bucket中的名称,主键id+.后缀
|
||||||
*/
|
|
||||||
@TableField("file_size_info")
|
|
||||||
private String fileSizeInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 存储到bucket的名称(文件唯一标识id)
|
|
||||||
*/
|
*/
|
||||||
@TableField("file_object_name")
|
@TableField("file_object_name")
|
||||||
private String fileObjectName;
|
private String fileObjectName;
|
||||||
|
@ -75,4 +75,10 @@ public class SysFileInfo extends BaseEntity {
|
||||||
@TableField("file_path")
|
@TableField("file_path")
|
||||||
private String filePath;
|
private String filePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除:Y-被删除,N-未删除
|
||||||
|
*/
|
||||||
|
@TableField("del_flag")
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package cn.stylefeng.roses.kernel.file.modular.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
@ -22,7 +21,9 @@ import cn.stylefeng.roses.kernel.file.pojo.request.SysFileInfoRequest;
|
||||||
import cn.stylefeng.roses.kernel.file.pojo.response.SysFileInfoResponse;
|
import cn.stylefeng.roses.kernel.file.pojo.response.SysFileInfoResponse;
|
||||||
import cn.stylefeng.roses.kernel.file.util.DownloadUtil;
|
import cn.stylefeng.roses.kernel.file.util.DownloadUtil;
|
||||||
import cn.stylefeng.roses.kernel.file.util.PicFileTypeUtil;
|
import cn.stylefeng.roses.kernel.file.util.PicFileTypeUtil;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
@ -87,19 +88,15 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
long fileSizeKb = Convert.toLong(NumberUtil.div(new BigDecimal(file.getSize()), BigDecimal.valueOf(1024))
|
long fileSizeKb = Convert.toLong(NumberUtil.div(new BigDecimal(file.getSize()), BigDecimal.valueOf(1024))
|
||||||
.setScale(0, BigDecimal.ROUND_HALF_UP));
|
.setScale(0, BigDecimal.ROUND_HALF_UP));
|
||||||
|
|
||||||
//计算文件大小信息
|
|
||||||
String fileSizeInfo = FileUtil.readableFileSize(file.getSize());
|
|
||||||
|
|
||||||
// 存储文件信息
|
// 存储文件信息
|
||||||
SysFileInfo sysFileInfo = new SysFileInfo();
|
SysFileInfo sysFileInfo = new SysFileInfo();
|
||||||
sysFileInfo.setId(fileId);
|
sysFileInfo.setFileId(fileId);
|
||||||
sysFileInfo.setFileLocation(FileLocationEnum.LOCAL.getCode());
|
sysFileInfo.setFileLocation(FileLocationEnum.LOCAL.getCode());
|
||||||
sysFileInfo.setFileBucket(DEFAULT_BUCKET_NAME);
|
sysFileInfo.setFileBucket(DEFAULT_BUCKET_NAME);
|
||||||
sysFileInfo.setFileObjectName(finalFileName);
|
sysFileInfo.setFileObjectName(finalFileName);
|
||||||
sysFileInfo.setFileOriginName(originalFilename);
|
sysFileInfo.setFileOriginName(originalFilename);
|
||||||
sysFileInfo.setFileSuffix(fileSuffix);
|
sysFileInfo.setFileSuffix(fileSuffix);
|
||||||
sysFileInfo.setFileSizeKb(fileSizeKb);
|
sysFileInfo.setFileSizeKb(fileSizeKb);
|
||||||
sysFileInfo.setFileSizeInfo(fileSizeInfo);
|
|
||||||
this.save(sysFileInfo);
|
this.save(sysFileInfo);
|
||||||
|
|
||||||
// 返回文件id
|
// 返回文件id
|
||||||
|
@ -108,7 +105,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void download(SysFileInfoRequest sysFileInfoRequest, HttpServletResponse response) {
|
public void download(SysFileInfoRequest sysFileInfoRequest, HttpServletResponse response) {
|
||||||
SysFileInfoResponse sysFileInfoResult = this.getFileInfoResult(sysFileInfoRequest.getId());
|
SysFileInfoResponse sysFileInfoResult = this.getFileInfoResult(sysFileInfoRequest.getFileId());
|
||||||
String fileName = sysFileInfoResult.getFileOriginName();
|
String fileName = sysFileInfoResult.getFileOriginName();
|
||||||
byte[] fileBytes = sysFileInfoResult.getFileBytes();
|
byte[] fileBytes = sysFileInfoResult.getFileBytes();
|
||||||
DownloadUtil.download(fileName, fileBytes, response);
|
DownloadUtil.download(fileName, fileBytes, response);
|
||||||
|
@ -117,15 +114,11 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void delete(SysFileInfoRequest sysFileInfoRequest) {
|
public void delete(SysFileInfoRequest sysFileInfoRequest) {
|
||||||
|
// 逻辑删除
|
||||||
// 查询文件的信息
|
LambdaUpdateWrapper<SysFileInfo> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
SysFileInfo sysFileInfo = this.getById(sysFileInfoRequest.getId());
|
lambdaUpdateWrapper.set(SysFileInfo::getDelFlag, YesOrNotEnum.Y.getCode());
|
||||||
|
lambdaUpdateWrapper.eq(SysFileInfo::getFileId, sysFileInfoRequest.getFileId());
|
||||||
// 删除文件记录
|
this.update(lambdaUpdateWrapper);
|
||||||
this.removeById(sysFileInfoRequest.getId());
|
|
||||||
|
|
||||||
// 删除具体文件
|
|
||||||
this.fileOperatorApi.deleteFile(sysFileInfo.getFileBucket(), sysFileInfo.getFileObjectName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -134,7 +127,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
byte[] fileBytes;
|
byte[] fileBytes;
|
||||||
|
|
||||||
// 根据文件id获取文件信息结果集
|
// 根据文件id获取文件信息结果集
|
||||||
SysFileInfoResponse sysFileInfoResult = this.getFileInfoResult(sysFileInfoRequest.getId());
|
SysFileInfoResponse sysFileInfoResult = this.getFileInfoResult(sysFileInfoRequest.getFileId());
|
||||||
|
|
||||||
// 获取文件后缀
|
// 获取文件后缀
|
||||||
String fileSuffix = sysFileInfoResult.getFileSuffix().toLowerCase();
|
String fileSuffix = sysFileInfoResult.getFileSuffix().toLowerCase();
|
||||||
|
@ -187,6 +180,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
@Override
|
@Override
|
||||||
public List<SysFileInfo> list(SysFileInfoRequest sysFileInfoRequest) {
|
public List<SysFileInfo> list(SysFileInfoRequest sysFileInfoRequest) {
|
||||||
LambdaQueryWrapper<SysFileInfo> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysFileInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(SysFileInfo::getDelFlag, YesOrNotEnum.N.getCode());
|
||||||
return this.list(queryWrapper);
|
return this.list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,7 +191,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
|
|
||||||
// 查询库中文件信息
|
// 查询库中文件信息
|
||||||
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
|
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
|
||||||
sysFileInfoRequest.setId(fileId);
|
sysFileInfoRequest.setFileId(fileId);
|
||||||
SysFileInfo sysFileInfo = this.querySysFileInfo(sysFileInfoRequest);
|
SysFileInfo sysFileInfo = this.querySysFileInfo(sysFileInfoRequest);
|
||||||
|
|
||||||
// 获取文件字节码
|
// 获取文件字节码
|
||||||
|
@ -220,7 +214,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
public SysFileInfoResponse getFileInfoWithoutContent(Long fileId) {
|
public SysFileInfoResponse getFileInfoWithoutContent(Long fileId) {
|
||||||
|
|
||||||
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
|
SysFileInfoRequest sysFileInfoRequest = new SysFileInfoRequest();
|
||||||
sysFileInfoRequest.setId(fileId);
|
sysFileInfoRequest.setFileId(fileId);
|
||||||
|
|
||||||
// 获取文件的基本信息
|
// 获取文件的基本信息
|
||||||
SysFileInfo sysFileInfo = querySysFileInfo(sysFileInfoRequest);
|
SysFileInfo sysFileInfo = querySysFileInfo(sysFileInfoRequest);
|
||||||
|
@ -239,9 +233,9 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
* @date 2020/11/29 13:40
|
* @date 2020/11/29 13:40
|
||||||
*/
|
*/
|
||||||
private SysFileInfo querySysFileInfo(SysFileInfoRequest sysFileInfoRequest) {
|
private SysFileInfo querySysFileInfo(SysFileInfoRequest sysFileInfoRequest) {
|
||||||
SysFileInfo sysFileInfo = this.getById(sysFileInfoRequest.getId());
|
SysFileInfo sysFileInfo = this.getById(sysFileInfoRequest.getFileId());
|
||||||
if (ObjectUtil.isEmpty(sysFileInfo)) {
|
if (ObjectUtil.isEmpty(sysFileInfo) || sysFileInfo.getDelFlag().equals(YesOrNotEnum.Y.getCode())) {
|
||||||
String userTip = StrUtil.format(FileExceptionEnum.NOT_EXISTED.getUserTip(), sysFileInfoRequest.getId());
|
String userTip = StrUtil.format(FileExceptionEnum.NOT_EXISTED.getUserTip(), sysFileInfoRequest.getFileId());
|
||||||
throw new FileException(FileExceptionEnum.NOT_EXISTED, userTip);
|
throw new FileException(FileExceptionEnum.NOT_EXISTED, userTip);
|
||||||
}
|
}
|
||||||
return sysFileInfo;
|
return sysFileInfo;
|
||||||
|
@ -276,9 +270,11 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
if (ObjectUtil.isNotEmpty(sysFileInfoRequest.getFileObjectName())) {
|
if (ObjectUtil.isNotEmpty(sysFileInfoRequest.getFileObjectName())) {
|
||||||
queryWrapper.like(SysFileInfo::getFileObjectName, sysFileInfoRequest.getFileObjectName());
|
queryWrapper.like(SysFileInfo::getFileObjectName, sysFileInfoRequest.getFileObjectName());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询没被删除的
|
||||||
|
queryWrapper.eq(SysFileInfo::getDelFlag, YesOrNotEnum.N.getCode());
|
||||||
|
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue