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