diff --git a/pom.xml b/pom.xml index bb0216be..b159ba0a 100644 --- a/pom.xml +++ b/pom.xml @@ -170,6 +170,11 @@ org.springframework.boot spring-boot-starter-undertow + + io.hypersistence + hypersistence-utils-hibernate-62 + 3.6.1 + org.hibernate.orm diff --git a/src/main/java/cn/lihongjie/coal/base/dto/BaseDto.java b/src/main/java/cn/lihongjie/coal/base/dto/BaseDto.java index 89ae0f06..2e02d1e9 100644 --- a/src/main/java/cn/lihongjie/coal/base/dto/BaseDto.java +++ b/src/main/java/cn/lihongjie/coal/base/dto/BaseDto.java @@ -4,6 +4,7 @@ import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; +import java.util.List; @Getter @Setter @@ -21,4 +22,5 @@ public abstract class BaseDto { private String updateUserName; private LocalDateTime updateTime; + private List fileIds; } diff --git a/src/main/java/cn/lihongjie/coal/base/entity/BaseEntity.java b/src/main/java/cn/lihongjie/coal/base/entity/BaseEntity.java index f4cfab91..843b4309 100644 --- a/src/main/java/cn/lihongjie/coal/base/entity/BaseEntity.java +++ b/src/main/java/cn/lihongjie/coal/base/entity/BaseEntity.java @@ -2,6 +2,8 @@ package cn.lihongjie.coal.base.entity; import cn.lihongjie.coal.common.Ctx; +import io.hypersistence.utils.hibernate.type.array.ListArrayType; + import jakarta.persistence.*; import lombok.Getter; @@ -11,6 +13,7 @@ import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.*; import java.time.LocalDateTime; +import java.util.List; @MappedSuperclass @Getter @@ -44,8 +47,14 @@ public class BaseEntity { @UpdateTimestamp(source = SourceType.VM) private LocalDateTime updateTime; + @Comment("关联附件") + @Column(columnDefinition = "text[]") + @Type(ListArrayType.class) + private List fileIds; + @PrePersist public void prePersist() { + if (StringUtils.isEmpty(this.createUserId)) { this.createUserId = Ctx.isLoggedIn() ? Ctx.getUserId() : ""; diff --git a/src/main/java/cn/lihongjie/coal/file/controller/FileController.java b/src/main/java/cn/lihongjie/coal/file/controller/FileController.java index e8a02c31..5bdc85f0 100644 --- a/src/main/java/cn/lihongjie/coal/file/controller/FileController.java +++ b/src/main/java/cn/lihongjie/coal/file/controller/FileController.java @@ -33,8 +33,12 @@ public class FileController { public FileDto upload( @RequestParam("file") MultipartFile file, @RequestParam("name") String name, - @RequestParam("dir") String dir) { - return this.service.upload(file, name, dir); + @RequestParam("dir") String dir, + @RequestParam(value = "sortKey", required = false) String sortKey, + @RequestParam(value = "code", required = false) String code, + @RequestParam(value = "remarks", required = false) String remarks + ) { + return this.service.upload(file, name, dir, sortKey, code, remarks); } @PostMapping("/update") diff --git a/src/main/java/cn/lihongjie/coal/file/dto/CreateFileDto.java b/src/main/java/cn/lihongjie/coal/file/dto/CreateFileDto.java index 25f20ab9..c67fe17c 100644 --- a/src/main/java/cn/lihongjie/coal/file/dto/CreateFileDto.java +++ b/src/main/java/cn/lihongjie/coal/file/dto/CreateFileDto.java @@ -25,6 +25,5 @@ public class CreateFileDto extends OrgCommonDto { @Comment("局域网访问地址") private String privateUrl; - @Comment("业务ID") - private String businessId; + } diff --git a/src/main/java/cn/lihongjie/coal/file/dto/FileDto.java b/src/main/java/cn/lihongjie/coal/file/dto/FileDto.java index 3cfdbca2..3a45344e 100644 --- a/src/main/java/cn/lihongjie/coal/file/dto/FileDto.java +++ b/src/main/java/cn/lihongjie/coal/file/dto/FileDto.java @@ -25,6 +25,5 @@ public class FileDto extends OrgCommonDto { @Comment("局域网访问地址") private String privateUrl; - @Comment("业务ID") - private String businessId; + } diff --git a/src/main/java/cn/lihongjie/coal/file/dto/UpdateFileDto.java b/src/main/java/cn/lihongjie/coal/file/dto/UpdateFileDto.java index 8c6ae12f..21695e0f 100644 --- a/src/main/java/cn/lihongjie/coal/file/dto/UpdateFileDto.java +++ b/src/main/java/cn/lihongjie/coal/file/dto/UpdateFileDto.java @@ -25,6 +25,5 @@ public class UpdateFileDto extends OrgCommonDto { @Comment("局域网访问地址") private String privateUrl; - @Comment("业务ID") - private String businessId; + } diff --git a/src/main/java/cn/lihongjie/coal/file/entity/FileEntity.java b/src/main/java/cn/lihongjie/coal/file/entity/FileEntity.java index 71e4bd01..3104b81f 100644 --- a/src/main/java/cn/lihongjie/coal/file/entity/FileEntity.java +++ b/src/main/java/cn/lihongjie/coal/file/entity/FileEntity.java @@ -33,6 +33,5 @@ public class FileEntity extends OrgCommonEntity { @Comment("对象ID") private String objectId; - @Comment("业务ID") - private String businessId; + } diff --git a/src/main/java/cn/lihongjie/coal/file/service/FileService.java b/src/main/java/cn/lihongjie/coal/file/service/FileService.java index cc4d4077..ab08f11a 100644 --- a/src/main/java/cn/lihongjie/coal/file/service/FileService.java +++ b/src/main/java/cn/lihongjie/coal/file/service/FileService.java @@ -38,14 +38,14 @@ import java.util.UUID; @Service @Slf4j @Transactional -public -class FileService extends BaseService { +public class FileService extends BaseService { @Autowired ObsClient obsClient; @Autowired HwCloudProperty hwCloudProperty; @Autowired private FileRepository repository; @Autowired private FileMapper mapper; @Autowired private ConversionService conversionService; private final Tika tika = new Tika(); + @Value("${spring.profiles.active}") private String activateProfile; @@ -88,10 +88,19 @@ class FileService extends BaseService { } @SneakyThrows - public FileDto upload(MultipartFile file, String name, String dir) { + public FileDto upload(MultipartFile file, String name, String dir, String sortKey, String code, String remarks) { FileEntity fileEntity = new FileEntity(); fileEntity.setFileName(name); fileEntity.setFileSize(file.getSize()); + fileEntity.setCode(code); + fileEntity.setRemarks(remarks); + try { + + fileEntity.setSortKey(Integer.parseInt(sortKey)); + } catch (Exception e) { + + fileEntity.setSortKey(1); + } fileEntity.setDirectory( "%s/%s/%s" .formatted( @@ -99,8 +108,7 @@ class FileService extends BaseService { Ctx.currentUser().getOrganizationId(), StringUtils.defaultIfBlank(dir, "public"))); InputStream inputStream = file.getInputStream(); - fileEntity.setObjectId( - UUID.randomUUID() + "." + FilenameUtils.getExtension(name)); + fileEntity.setObjectId(UUID.randomUUID() + "." + FilenameUtils.getExtension(name)); try (inputStream) { fileEntity.setMimeType(tika.detect(inputStream)); }