!711 update 优化附件扩展字段对象(存储在 SysOss.ext1 的 JSON 字符串中)

* update 优化文件上传附件扩展字段对象
* update 优化保存文件的大小,方便前端进行分片下载
This commit is contained in:
AprilWind 2025-07-03 02:20:53 +00:00 committed by 疯狂的狮子Li
parent e2200bac71
commit b421c8d017
2 changed files with 85 additions and 3 deletions

View File

@ -0,0 +1,75 @@
package org.dromara.system.domain;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 附件扩展字段对象存储在 SysOss.ext1 JSON 字符串中
*
* @author AprilWind
*/
@Data
public class SysOssExt implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 所属业务类型 avatarreportcontract
*/
private String bizType;
/**
* 文件大小单位字节
*/
private Long fileSize;
/**
* 文件类型MIME类型 image/png
*/
private String contentType;
/**
* 来源标识 userUploadsystemImport
*/
private String source;
/**
* 上传 IP 地址便于审计和追踪
*/
private String uploadIp;
/**
* 附件说明或备注
*/
private String remark;
/**
* 附件标签 ["图片", "证件"]
*/
private List<String> tags;
/**
* 业务绑定ID如某业务记录ID
*/
private String refId;
/**
* 绑定业务类型
*/
private String refType;
/**
* 是否为临时文件用于区分正式或待清理
*/
private Boolean isTemp;
/**
* 文件MD5值可用于去重或校验
*/
private String md5;
}

View File

@ -17,6 +17,7 @@ import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.core.utils.file.FileUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.core.OssClient;
@ -24,6 +25,7 @@ import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.enums.AccessPolicyType;
import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.factory.OssFactory;
import org.dromara.system.domain.SysOss; import org.dromara.system.domain.SysOss;
import org.dromara.system.domain.SysOssExt;
import org.dromara.system.domain.bo.SysOssBo; import org.dromara.system.domain.bo.SysOssBo;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.mapper.SysOssMapper;
@ -199,8 +201,10 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
} catch (IOException e) { } catch (IOException e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
} }
SysOssExt ext1 = new SysOssExt();
ext1.setFileSize(file.getSize());
// 保存文件信息 // 保存文件信息
return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, ext1);
} }
/** /**
@ -215,18 +219,21 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
OssClient storage = OssFactory.instance(); OssClient storage = OssFactory.instance();
UploadResult uploadResult = storage.uploadSuffix(file, suffix); UploadResult uploadResult = storage.uploadSuffix(file, suffix);
SysOssExt ext1 = new SysOssExt();
ext1.setFileSize(file.length());
// 保存文件信息 // 保存文件信息
return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, ext1);
} }
@NotNull @NotNull
private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) { private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, SysOssExt ext1) {
SysOss oss = new SysOss(); SysOss oss = new SysOss();
oss.setUrl(uploadResult.getUrl()); oss.setUrl(uploadResult.getUrl());
oss.setFileSuffix(suffix); oss.setFileSuffix(suffix);
oss.setFileName(uploadResult.getFilename()); oss.setFileName(uploadResult.getFilename());
oss.setOriginalName(originalfileName); oss.setOriginalName(originalfileName);
oss.setService(configKey); oss.setService(configKey);
oss.setExt1(JsonUtils.toJsonString(ext1));
baseMapper.insert(oss); baseMapper.insert(oss);
SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
return this.matchingUrl(sysOssVo); return this.matchingUrl(sysOssVo);