diff --git a/minio-plus-common/pom.xml b/minio-plus-common/pom.xml
index 3ff20fd..2d64f1c 100644
--- a/minio-plus-common/pom.xml
+++ b/minio-plus-common/pom.xml
@@ -11,4 +11,11 @@
minio-plus-common
+
+
+ cn.hutool
+ hutool-all
+
+
+
\ No newline at end of file
diff --git a/minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/MinioPlusErrorCode.java b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/MinioPlusErrorCode.java
new file mode 100644
index 0000000..d575d28
--- /dev/null
+++ b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/MinioPlusErrorCode.java
@@ -0,0 +1,67 @@
+package org.liuxp.minioplus.common.enums;
+
+/**
+ * MinIO Plus 错误码
+ * @author contact@liuxp.me
+ * @since 2024/05/26
+ */
+public enum MinioPlusErrorCode {
+
+
+ FAIL(1000, "操作失败"),
+
+ FILE_EXIST_FAILED(1001,"文件不存在"),
+ FILE_PERMISSION_CHECK_FAILED(1002,"没有访问权限"),
+ FILE_PART_NUM_CHECK_FAILED(1003,"文件分块MD5校验码数量与实际分块不一致"),
+ FILE_SUFFIX_GET_FAILED(1004,"无法获取文件的拓展名"),
+ FILE_BYTES_FAILED(1005,"文件流不能为空"),
+ FILE_UPLOAD_FAILED(1006,"文件上传失败"),
+ FILE_PREVIEW_WRITE_FAILED(1007,"缩略图写入失败"),
+
+ CREATE_MULTIPART_UPLOAD_FAILED(2001, "获取上传编号失败"),
+ COMPLETE_MULTIPART_FAILED(2002, "合并分片失败"),
+ LIST_PARTS_FAILED(2003, "查询分片失败"),
+ CREATE_UPLOAD_URL_FAILED(2004, "获取对象上传URL失败"),
+ CREATE_DOWNLOAD_URL_FAILED(2005, "获取对象下载URL失败"),
+ CREATE_PREVIEW_URL_FAILED(2006, "获取预对象预览URL失败"),
+ WRITE_FAILED(2007, "文件写入失败"),
+ READ_FAILED(2008, "文件读取失败"),
+ DELETE_FAILED(2009, "删除失败");
+
+ /**
+ * 错误编码
+ */
+ private final Integer code;
+ /**
+ * 错误提示信息
+ */
+ private final String message;
+
+ /**
+ * 构造方法
+ *
+ * @param code 错误编码
+ * @param message 错误提示信息
+ */
+ MinioPlusErrorCode(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ /**
+ * 取得错误编码
+ * @return 错误编码
+ */
+ public Integer getCode() {
+ return code;
+ }
+
+ /**
+ * 取得错误提示信息
+ * @return 错误提示信息
+ */
+ public String getMessage() {
+ return message;
+ }
+
+}
diff --git a/minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/StorageBucketEnums.java b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/StorageBucketEnums.java
similarity index 93%
rename from minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/StorageBucketEnums.java
rename to minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/StorageBucketEnums.java
index b36e9e8..c506a97 100644
--- a/minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/StorageBucketEnums.java
+++ b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/enums/StorageBucketEnums.java
@@ -1,7 +1,6 @@
-package org.liuxp.minioplus.model.enums;
+package org.liuxp.minioplus.common.enums;
import cn.hutool.core.util.ArrayUtil;
-import lombok.Getter;
import java.util.Arrays;
@@ -11,7 +10,6 @@ import java.util.Arrays;
* @author contact@liuxp.me
* @since 2023/06/26
*/
-@Getter
public enum StorageBucketEnums {
/**
@@ -40,6 +38,18 @@ public enum StorageBucketEnums {
private final String[] types;
+ public String getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String[] getTypes() {
+ return types;
+ }
+
/**
* 构造方法
*
diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/exception/MinioPlusBusinessException.java b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/exception/MinioPlusException.java
similarity index 55%
rename from minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/exception/MinioPlusBusinessException.java
rename to minio-plus-common/src/main/java/org/liuxp/minioplus/common/exception/MinioPlusException.java
index e8604a1..75fafb8 100644
--- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/exception/MinioPlusBusinessException.java
+++ b/minio-plus-common/src/main/java/org/liuxp/minioplus/common/exception/MinioPlusException.java
@@ -1,11 +1,13 @@
-package org.liuxp.minioplus.core.common.exception;
+package org.liuxp.minioplus.common.exception;
+
+import org.liuxp.minioplus.common.enums.MinioPlusErrorCode;
/**
* MinioPlus专用异常定义
* @author contact@liuxp.me
- * @since 2023/08/14
+ * @since 2024/05/26
*/
-public class MinioPlusBusinessException extends RuntimeException {
+public class MinioPlusException extends RuntimeException {
private static final long serialVersionUID = 772046747932011086L;
@@ -21,14 +23,19 @@ public class MinioPlusBusinessException extends RuntimeException {
this.errorCode = errorCode;
}
- public MinioPlusBusinessException() {
+ public MinioPlusException() {
super();
}
- public MinioPlusBusinessException(String message) {
+ public MinioPlusException(String message) {
super(message);
}
+ public MinioPlusException(MinioPlusErrorCode minioPlusErrorCode){
+ this.errorCode = minioPlusErrorCode.getCode();
+ this.errorMessage = minioPlusErrorCode.getMessage();
+ }
+
public String getErrorMessage() {
return errorMessage;
}
@@ -37,7 +44,7 @@ public class MinioPlusBusinessException extends RuntimeException {
this.errorMessage = errorMessage;
}
- public MinioPlusBusinessException(int errorCode, String errorMessage) {
+ public MinioPlusException(int errorCode, String errorMessage) {
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
diff --git a/minio-plus-core/pom.xml b/minio-plus-core/pom.xml
index 4b3a339..ab8e983 100644
--- a/minio-plus-core/pom.xml
+++ b/minio-plus-core/pom.xml
@@ -32,6 +32,10 @@
okhttp
4.11.0
+
+ org.liuxp
+ minio-plus-common
+
org.liuxp
minio-plus-config
diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java
index bf200c8..1780949 100644
--- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java
+++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java
@@ -19,9 +19,9 @@ import org.liuxp.minioplus.model.dto.FileMetadataInfoDTO;
import org.liuxp.minioplus.model.dto.FileMetadataInfoSaveDTO;
import org.liuxp.minioplus.model.dto.FileMetadataInfoUpdateDTO;
import org.liuxp.minioplus.core.common.context.MultipartUploadCreateDTO;
-import org.liuxp.minioplus.model.enums.ResponseCodeEnum;
-import org.liuxp.minioplus.model.enums.StorageBucketEnums;
-import org.liuxp.minioplus.core.common.exception.MinioPlusBusinessException;
+import org.liuxp.minioplus.common.enums.MinioPlusErrorCode;
+import org.liuxp.minioplus.common.enums.StorageBucketEnums;
+import org.liuxp.minioplus.common.exception.MinioPlusException;
import org.liuxp.minioplus.core.common.utils.MinioPlusCommonUtil;
import org.liuxp.minioplus.model.vo.CompleteResultVo;
import org.liuxp.minioplus.model.vo.FileCheckResultVo;
@@ -278,8 +278,8 @@ public class StorageEngineServiceImpl implements StorageEngineService {
FileMetadataInfoVo metadata = metadataRepository.one(searchDto);
if(metadata == null){
- log.error(fileKey+"不存在");
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),fileKey+"不存在");
+ log.error(fileKey+MinioPlusErrorCode.FILE_EXIST_FAILED.getMessage());
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_EXIST_FAILED.getCode(),fileKey+MinioPlusErrorCode.FILE_EXIST_FAILED.getMessage());
}
if(Boolean.TRUE.equals(metadata.getIsFinished())){
@@ -371,8 +371,8 @@ public class StorageEngineServiceImpl implements StorageEngineService {
return isCreateFile;
}catch(Exception e){
- log.error("文件上传失败",e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"文件上传失败");
+ log.error(MinioPlusErrorCode.FILE_UPLOAD_FAILED.getMessage(),e);
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_UPLOAD_FAILED);
}
}
@@ -452,8 +452,8 @@ public class StorageEngineServiceImpl implements StorageEngineService {
byte[] largeImageBytes = largeImage.toByteArray();
minioRepository.write(StorageBucketEnums.IMAGE_PREVIEW.getCode(), MinioPlusCommonUtil.getObjectName(saveDTO.getFileMd5()), new ByteArrayInputStream(largeImageBytes), largeImageBytes.length, saveDTO.getFileMimeType());
}catch(Exception e){
- log.error("缩略图写入失败",e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"缩略图写入失败");
+ log.error(MinioPlusErrorCode.FILE_PREVIEW_WRITE_FAILED.getMessage(),e);
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_PREVIEW_WRITE_FAILED);
}
}
@@ -561,12 +561,12 @@ public class StorageEngineServiceImpl implements StorageEngineService {
*/
private void authentication(FileMetadataInfoVo metadata, String fileKey, String userId){
if (null == metadata) {
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), fileKey + "不存在!");
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_EXIST_FAILED.getCode(), fileKey + MinioPlusErrorCode.FILE_EXIST_FAILED.getMessage());
}
// 元数据信息存在,判断权限
if(Boolean.TRUE.equals(metadata.getIsPrivate()) && !userId.equals(metadata.getCreateUser())){
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), fileKey + "用户userId="+userId+"没有访问权限!");
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_PERMISSION_CHECK_FAILED.getCode(), fileKey + "用户"+userId+MinioPlusErrorCode.FILE_PERMISSION_CHECK_FAILED.getMessage());
}
}
@@ -688,7 +688,7 @@ public class StorageEngineServiceImpl implements StorageEngineService {
Integer chunkNum = meteData.getPartNumber();
if(partMd5List==null || chunkNum != partMd5List.size()){
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"文件分块MD5校验码数量与实际分块不一致");
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_PART_NUM_CHECK_FAILED);
}
// 校验文件完整性
@@ -764,7 +764,7 @@ public class StorageEngineServiceImpl implements StorageEngineService {
.uploadId(meteData.getUploadTaskId())
.partNumberMarker(0)
.build());
- }catch (MinioPlusBusinessException e){
+ }catch (MinioPlusException e){
log.error("获取分片信息失败,partList返回空",e);
MultipartUploadCreateDTO multipartUploadCreateDTO = MultipartUploadCreateDTO.builder()
.bucketName(meteData.getStorageBucket())
@@ -821,7 +821,7 @@ public class StorageEngineServiceImpl implements StorageEngineService {
// 获取文件后缀
String suffix = FileUtil.getSuffix(bo.getFullFileName());
if (CharSequenceUtil.isBlank(suffix)) {
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "无法获取文件的拓展名");
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_SUFFIX_GET_FAILED);
}
// 文件key
fileKey = IdUtil.fastSimpleUUID();
diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/repository/impl/MinioRepositoryImpl.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/repository/impl/MinioRepositoryImpl.java
index ff31e10..7f25824 100644
--- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/repository/impl/MinioRepositoryImpl.java
+++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/repository/impl/MinioRepositoryImpl.java
@@ -7,8 +7,8 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.liuxp.minioplus.config.MinioPlusProperties;
import org.liuxp.minioplus.core.common.context.MultipartUploadCreateDTO;
-import org.liuxp.minioplus.model.enums.ResponseCodeEnum;
-import org.liuxp.minioplus.core.common.exception.MinioPlusBusinessException;
+import org.liuxp.minioplus.common.enums.MinioPlusErrorCode;
+import org.liuxp.minioplus.common.exception.MinioPlusException;
import org.liuxp.minioplus.core.repository.MinioRepository;
import org.springframework.stereotype.Repository;
@@ -71,8 +71,8 @@ public class MinioRepositoryImpl implements MinioRepository {
try {
return this.getClient().createMultipartUpload(multipartUploadCreate.getBucketName(), multipartUploadCreate.getRegion(), multipartUploadCreate.getObjectName(), multipartUploadCreate.getHeaders(), multipartUploadCreate.getExtraQueryParams());
} catch (Exception e) {
- log.error("文件分片获取上传编号失败:{}", e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "获取上传编号失败");
+ log.error(MinioPlusErrorCode.CREATE_MULTIPART_UPLOAD_FAILED.getMessage()+":{}", e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.CREATE_MULTIPART_UPLOAD_FAILED);
}
}
@@ -87,8 +87,8 @@ public class MinioRepositoryImpl implements MinioRepository {
try {
return this.getClient().completeMultipartUpload(multipartUploadCreate.getBucketName(), multipartUploadCreate.getRegion(), multipartUploadCreate.getObjectName(), multipartUploadCreate.getUploadId(), multipartUploadCreate.getParts(), multipartUploadCreate.getHeaders(), multipartUploadCreate.getExtraQueryParams());
} catch (Exception e) {
- log.error("合并分片失败,uploadId:{},ObjectName:{},失败原因:{},", multipartUploadCreate.getUploadId(), multipartUploadCreate.getObjectName(), e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "合并分片失败");
+ log.error(MinioPlusErrorCode.COMPLETE_MULTIPART_FAILED.getMessage()+",uploadId:{},ObjectName:{},失败原因:{},", multipartUploadCreate.getUploadId(), multipartUploadCreate.getObjectName(), e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.COMPLETE_MULTIPART_FAILED);
}
}
@@ -104,8 +104,8 @@ public class MinioRepositoryImpl implements MinioRepository {
try {
return this.getClient().listParts(multipartUploadCreate.getBucketName(), multipartUploadCreate.getRegion(), multipartUploadCreate.getObjectName(), multipartUploadCreate.getMaxParts(), multipartUploadCreate.getPartNumberMarker(), multipartUploadCreate.getUploadId(), multipartUploadCreate.getHeaders(), multipartUploadCreate.getExtraQueryParams());
} catch (Exception e) {
- log.error("查询分片失败:{}", e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "查询分片失败");
+ log.error(MinioPlusErrorCode.LIST_PARTS_FAILED.getMessage()+":{}", e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.LIST_PARTS_FAILED);
}
}
@@ -130,8 +130,8 @@ public class MinioRepositoryImpl implements MinioRepository {
.extraQueryParams(queryParams)
.build());
} catch (Exception e) {
- log.error("获取预签名URL失败:{}", e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "获取预签名URL失败");
+ log.error(MinioPlusErrorCode.CREATE_UPLOAD_URL_FAILED.getMessage()+":{}", e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.CREATE_UPLOAD_URL_FAILED);
}
}
@@ -160,8 +160,8 @@ public class MinioRepositoryImpl implements MinioRepository {
.extraQueryParams(reqParams)
.build());
} catch (Exception e) {
- log.error("获取预签名下载URL失败:{}", e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "获取预签名下载URL失败");
+ log.error(MinioPlusErrorCode.CREATE_DOWNLOAD_URL_FAILED.getMessage()+":{}", e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.CREATE_DOWNLOAD_URL_FAILED);
}
}
@@ -182,8 +182,8 @@ public class MinioRepositoryImpl implements MinioRepository {
.extraQueryParams(reqParams)
.build());
} catch (Exception e) {
- log.error("获取预签名预览URL失败:{}", e.getMessage(), e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(), "获取预签名预览URL失败");
+ log.error(MinioPlusErrorCode.CREATE_PREVIEW_URL_FAILED.getMessage()+":{}", e.getMessage(), e);
+ throw new MinioPlusException(MinioPlusErrorCode.CREATE_PREVIEW_URL_FAILED);
}
}
@@ -209,8 +209,8 @@ public class MinioRepositoryImpl implements MinioRepository {
.build());
} catch (Exception e) {
- log.error("文件写入失败",e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"文件写入失败");
+ log.error(MinioPlusErrorCode.WRITE_FAILED.getMessage(),e);
+ throw new MinioPlusException(MinioPlusErrorCode.WRITE_FAILED);
}
return true;
@@ -224,8 +224,8 @@ public class MinioRepositoryImpl implements MinioRepository {
// 文件流转换为字节码
return IoUtil.readBytes(inputStream);
} catch (Exception e) {
- log.error("文件读取失败",e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"文件读取失败");
+ log.error(MinioPlusErrorCode.READ_FAILED.getMessage(),e);
+ throw new MinioPlusException(MinioPlusErrorCode.READ_FAILED);
}
}
@@ -235,8 +235,8 @@ public class MinioRepositoryImpl implements MinioRepository {
try {
this.getClient().removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
} catch (Exception e) {
- log.error("删除失败",e);
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"删除失败");
+ log.error(MinioPlusErrorCode.DELETE_FAILED.getMessage(),e);
+ throw new MinioPlusException(MinioPlusErrorCode.DELETE_FAILED);
}
}
diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java
index 66d9604..4d94deb 100644
--- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java
+++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java
@@ -12,9 +12,9 @@ import org.liuxp.minioplus.config.MinioPlusProperties;
import org.liuxp.minioplus.model.dto.FileMetadataInfoDTO;
import org.liuxp.minioplus.model.dto.FileMetadataInfoSaveDTO;
import org.liuxp.minioplus.model.dto.FileSaveDTO;
-import org.liuxp.minioplus.model.enums.ResponseCodeEnum;
-import org.liuxp.minioplus.model.enums.StorageBucketEnums;
-import org.liuxp.minioplus.core.common.exception.MinioPlusBusinessException;
+import org.liuxp.minioplus.common.enums.MinioPlusErrorCode;
+import org.liuxp.minioplus.common.enums.StorageBucketEnums;
+import org.liuxp.minioplus.common.exception.MinioPlusException;
import org.liuxp.minioplus.core.common.utils.ContentTypeUtil;
import org.liuxp.minioplus.core.common.utils.MinioPlusCommonUtil;
import org.liuxp.minioplus.model.vo.FileMetadataInfoVo;
@@ -144,7 +144,7 @@ public class StorageServiceImpl implements StorageService {
FileMetadataInfoSaveDTO buildSaveDto(FileSaveDTO fileSaveDTO, byte[] fileBytes){
if(null==fileBytes){
- throw new MinioPlusBusinessException(ResponseCodeEnum.FAIL.getCode(),"文件流不能为空");
+ throw new MinioPlusException(MinioPlusErrorCode.FILE_BYTES_FAILED);
}
// 计算文件MD5值
String md5 = SecureUtil.md5().digestHex(fileBytes);
diff --git a/minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/ResponseCodeEnum.java b/minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/ResponseCodeEnum.java
deleted file mode 100644
index 5880135..0000000
--- a/minio-plus-model/src/main/java/org/liuxp/minioplus/model/enums/ResponseCodeEnum.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.liuxp.minioplus.model.enums;
-
-/**
- * 返回给前端的code编码对应内容的枚举
- */
-public enum ResponseCodeEnum {
-
- /**
- * 调用成功
- */
- SUCCESS(0, "调用成功"),
- /**
- * 调用失败
- */
- FAIL(-1, "调用失败");
-
- /**
- * 返回给前端的状态编码 0表示成功
- */
- private final Integer code;
- /**
- * 编码对应的解释
- */
- private final String message;
-
- /**
- * 构造方法
- *
- * @param code
- * @param message
- */
- ResponseCodeEnum(Integer code, String message) {
- this.code = code;
- this.message = message;
- }
-
- public Integer getCode() {
- return code;
- }
-
- public String getMessage() {
- return message;
- }
-
-}
diff --git a/pom.xml b/pom.xml
index 902d6ce..b4d055a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,11 +166,6 @@
minio-plus-spring-boot-starter
${revision}
-
- org.liuxp
- minio-plus-spring-mvc
- ${revision}
-