mirror of
https://github.com/continew-org/continew-starter.git
synced 2025-09-08 16:57:09 +08:00
chore(storage): 优化部分代码格式和注释
This commit is contained in:
@@ -59,7 +59,7 @@ public class QueryWrapperHelper {
|
||||
* 设置排序
|
||||
*
|
||||
* @param queryWrapper 查询条件封装对象
|
||||
* @param sort 排序条件
|
||||
* @param sort 排序条件
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public static <T> void sort(QueryWrapper<T> queryWrapper, Sort sort) {
|
||||
|
@@ -17,10 +17,10 @@
|
||||
package top.continew.starter.storage.constant;
|
||||
|
||||
/**
|
||||
* 存储 常量
|
||||
* 存储常量
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 19:09
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class StorageConstant {
|
||||
|
||||
|
@@ -22,7 +22,7 @@ import top.continew.starter.storage.model.resp.UploadResp;
|
||||
* 存储记录持久层接口
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/17 16:49
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public interface StorageDao {
|
||||
|
||||
|
@@ -20,14 +20,15 @@ import top.continew.starter.storage.dao.StorageDao;
|
||||
import top.continew.starter.storage.model.resp.UploadResp;
|
||||
|
||||
/**
|
||||
* 默认记录实现,此类并不能真正保存记录,只是用来脱离数据库运行,保证文件上传功能可以正常使用
|
||||
* 存储记录持久层接口默认实现
|
||||
* <p>此类并不能真正保存记录,只是用来脱离数据库运行,保证文件上传功能可以正常使用</p>
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/18 08:48
|
||||
**/
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class StorageDaoDefaultImpl implements StorageDao {
|
||||
|
||||
@Override
|
||||
public void add(UploadResp uploadResp) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -23,10 +23,10 @@ import top.continew.starter.storage.strategy.StorageStrategy;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 装饰器基类 - 用于重写
|
||||
* 装饰器基类
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/30 19:33
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public abstract class AbstractStorageDecorator<C> implements StorageStrategy<C> {
|
||||
|
||||
|
@@ -27,9 +27,9 @@ import java.util.List;
|
||||
* 文件类型枚举
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/12/23 13:38
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public enum FileTypeEnum implements BaseEnum<Integer> {
|
||||
public enum FileType implements BaseEnum<Integer> {
|
||||
|
||||
/**
|
||||
* 其他
|
||||
@@ -67,14 +67,14 @@ public enum FileTypeEnum implements BaseEnum<Integer> {
|
||||
* @param extension 扩展名
|
||||
* @return 文件类型
|
||||
*/
|
||||
public static FileTypeEnum getByExtension(String extension) {
|
||||
return Arrays.stream(FileTypeEnum.values())
|
||||
public static FileType getByExtension(String extension) {
|
||||
return Arrays.stream(FileType.values())
|
||||
.filter(t -> t.getExtensions().contains(StrUtil.emptyIfNull(extension).toLowerCase()))
|
||||
.findFirst()
|
||||
.orElse(FileTypeEnum.UNKNOWN);
|
||||
.orElse(FileType.UNKNOWN);
|
||||
}
|
||||
|
||||
FileTypeEnum(Integer value, String description, List<String> extensions) {
|
||||
FileType(Integer value, String description, List<String> extensions) {
|
||||
this.value = value;
|
||||
this.description = description;
|
||||
this.extensions = extensions;
|
||||
@@ -98,5 +98,4 @@ public enum FileTypeEnum implements BaseEnum<Integer> {
|
||||
public String getColor() {
|
||||
return BaseEnum.super.getColor();
|
||||
}
|
||||
|
||||
}
|
@@ -28,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* 存储策略管理器
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class StorageManager {
|
||||
|
||||
@@ -64,7 +64,7 @@ public class StorageManager {
|
||||
*/
|
||||
public static StorageStrategy<?> instance(String code) {
|
||||
StorageStrategy<?> strategy = STORAGE_STRATEGY.get(code);
|
||||
ValidationUtils.throwIfEmpty(strategy, "未找到存储配置:" + code);
|
||||
ValidationUtils.throwIfEmpty(strategy, "未找到存储配置: {}", code);
|
||||
return strategy;
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ package top.continew.starter.storage.model.resp;
|
||||
* 缩略图
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/20 17:00
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class ThumbnailResp {
|
||||
|
||||
|
@@ -22,7 +22,7 @@ import java.time.LocalDateTime;
|
||||
* 上传结果
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/10
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class UploadResp {
|
||||
|
||||
|
@@ -25,7 +25,7 @@ import java.io.InputStream;
|
||||
* 存储策略接口
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 11:19
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public interface StorageStrategy<C> {
|
||||
|
||||
@@ -49,7 +49,7 @@ public interface StorageStrategy<C> {
|
||||
/**
|
||||
* 创建桶
|
||||
* <p> S3: 创建桶 </p>
|
||||
* <p> local: 创建 默认路径下 指定文件夹 </p>
|
||||
* <p> local: 在默认路径下创建指定文件夹 </p>
|
||||
*
|
||||
* @param bucketName 桶名称
|
||||
*/
|
||||
|
@@ -27,7 +27,7 @@ import java.io.OutputStream;
|
||||
* 图像缩略图工具
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/20 16:49
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class ImageThumbnailUtils {
|
||||
|
||||
|
@@ -34,7 +34,7 @@ import java.time.format.DateTimeFormatter;
|
||||
* 储存工具
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 19:55
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class StorageUtils {
|
||||
public StorageUtils() {
|
||||
|
@@ -23,18 +23,20 @@ import top.continew.starter.storage.dao.StorageDao;
|
||||
import top.continew.starter.storage.dao.impl.StorageDaoDefaultImpl;
|
||||
|
||||
/**
|
||||
* 对象存储 - 存储自动配置
|
||||
* 本地存储自动配置
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/17 20:23
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@AutoConfiguration
|
||||
public class OssStorageAutoconfigure {
|
||||
public class LocalStorageAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 存储记录持久层默认实现
|
||||
*/
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public StorageDao storageDao() {
|
||||
return new StorageDaoDefaultImpl();
|
||||
}
|
||||
|
||||
}
|
@@ -28,9 +28,10 @@ import java.nio.file.Path;
|
||||
* 本地客户端
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 19:37
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class LocalClient {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(LocalClient.class);
|
||||
|
||||
/**
|
||||
|
@@ -28,7 +28,7 @@ import top.continew.starter.core.validation.ValidationUtils;
|
||||
import top.continew.starter.storage.client.LocalClient;
|
||||
import top.continew.starter.storage.constant.StorageConstant;
|
||||
import top.continew.starter.storage.dao.StorageDao;
|
||||
import top.continew.starter.storage.enums.FileTypeEnum;
|
||||
import top.continew.starter.storage.enums.FileType;
|
||||
import top.continew.starter.storage.model.req.StorageProperties;
|
||||
import top.continew.starter.storage.model.resp.ThumbnailResp;
|
||||
import top.continew.starter.storage.model.resp.UploadResp;
|
||||
@@ -48,7 +48,7 @@ import java.util.Base64;
|
||||
* 本地存储策略
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 19:48
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class LocalStorageStrategy implements StorageStrategy<LocalClient> {
|
||||
|
||||
@@ -134,7 +134,7 @@ public class LocalStorageStrategy implements StorageStrategy<LocalClient> {
|
||||
}
|
||||
ThumbnailResp thumbnailResp = null;
|
||||
//判断是否需要上传缩略图 前置条件 文件必须为图片
|
||||
boolean contains = FileTypeEnum.IMAGE.getExtensions().contains(fileExtension);
|
||||
boolean contains = FileType.IMAGE.getExtensions().contains(fileExtension);
|
||||
if (contains && isThumbnail) {
|
||||
try (InputStream thumbnailStream = new ByteArrayInputStream(originalBytes)) {
|
||||
thumbnailResp = this.uploadThumbnail(bucketName, formatFileName, path, thumbnailStream, fileType);
|
||||
@@ -225,7 +225,7 @@ public class LocalStorageStrategy implements StorageStrategy<LocalClient> {
|
||||
return null;
|
||||
}
|
||||
String extName = FileUtil.extName(fileName);
|
||||
CheckUtils.throwIf(!FileTypeEnum.IMAGE.getExtensions().contains(extName), "{} 不是图像格式", extName);
|
||||
CheckUtils.throwIf(!FileType.IMAGE.getExtensions().contains(extName), "{} 不是图像格式", extName);
|
||||
return Base64.getEncoder().encodeToString(inputStream.readAllBytes());
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException("无法查看图片", e);
|
||||
|
@@ -26,7 +26,7 @@ import java.security.NoSuchAlgorithmException;
|
||||
* 本地存储工具
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/27 11:58
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class LocalUtils {
|
||||
public LocalUtils() {
|
||||
|
@@ -1 +1 @@
|
||||
top.continew.starter.storage.autoconfigure.LocalStorageAutoconfigure
|
||||
top.continew.starter.storage.autoconfigure.LocalStorageAutoConfiguration
|
@@ -23,14 +23,17 @@ import top.continew.starter.storage.dao.StorageDao;
|
||||
import top.continew.starter.storage.dao.impl.StorageDaoDefaultImpl;
|
||||
|
||||
/**
|
||||
* 本地存储 - 存储自动配置
|
||||
* 对象存储自动配置
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/17 20:23
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@AutoConfiguration
|
||||
public class LocalStorageAutoconfigure {
|
||||
public class OssStorageAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 存储记录持久层默认实现
|
||||
*/
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public StorageDao storageDao() {
|
@@ -39,7 +39,7 @@ import java.time.Duration;
|
||||
* S3客户端
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class OssClient {
|
||||
|
||||
|
@@ -41,7 +41,7 @@ import top.continew.starter.core.validation.ValidationUtils;
|
||||
import top.continew.starter.storage.client.OssClient;
|
||||
import top.continew.starter.storage.constant.StorageConstant;
|
||||
import top.continew.starter.storage.dao.StorageDao;
|
||||
import top.continew.starter.storage.enums.FileTypeEnum;
|
||||
import top.continew.starter.storage.enums.FileType;
|
||||
import top.continew.starter.storage.model.req.StorageProperties;
|
||||
import top.continew.starter.storage.model.resp.ThumbnailResp;
|
||||
import top.continew.starter.storage.model.resp.UploadResp;
|
||||
@@ -65,10 +65,11 @@ import java.util.concurrent.CompletionException;
|
||||
* <p><a href="https://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/home.html">...</a></p>
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/16 20:29
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class OssStorageStrategy implements StorageStrategy<OssClient> {
|
||||
private final static Logger log = LoggerFactory.getLogger(OssStorageStrategy.class);
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(OssStorageStrategy.class);
|
||||
|
||||
private final OssClient client;
|
||||
private final StorageDao storageDao;
|
||||
@@ -93,7 +94,7 @@ public class OssStorageStrategy implements StorageStrategy<OssClient> {
|
||||
try {
|
||||
// 调用 headBucket 请求,检查桶是否存在
|
||||
client.getClient().headBucket(HeadBucketRequest.builder().bucket(bucketName).build()).join();
|
||||
return true; // 桶存在
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
// 捕获异常,详细判断具体原因
|
||||
if (e.getCause() instanceof NoSuchBucketException) {
|
||||
@@ -160,7 +161,7 @@ public class OssStorageStrategy implements StorageStrategy<OssClient> {
|
||||
}
|
||||
ThumbnailResp thumbnailResp = null;
|
||||
//判断是否需要上传缩略图 前置条件 文件必须为图片
|
||||
boolean contains = FileTypeEnum.IMAGE.getExtensions().contains(fileExtension);
|
||||
boolean contains = FileType.IMAGE.getExtensions().contains(fileExtension);
|
||||
if (contains && isThumbnail) {
|
||||
try (InputStream thumbnailStream = new ByteArrayInputStream(fileBytes)) {
|
||||
thumbnailResp = this.uploadThumbnail(bucketName, formatFileName, path, thumbnailStream, fileType);
|
||||
@@ -236,9 +237,9 @@ public class OssStorageStrategy implements StorageStrategy<OssClient> {
|
||||
try {
|
||||
// 构建下载请求
|
||||
DownloadRequest<ResponseInputStream<GetObjectResponse>> downloadRequest = DownloadRequest.builder()
|
||||
.getObjectRequest(req -> req.bucket(bucketName).key(fileName).build()) // 设置桶名和对象名
|
||||
.addTransferListener(LoggingTransferListener.create()) // 添加传输监听器
|
||||
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream()) // 转换为阻塞输入流
|
||||
.getObjectRequest(req -> req.bucket(bucketName).key(fileName).build())
|
||||
.addTransferListener(LoggingTransferListener.create())
|
||||
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
|
||||
.build();
|
||||
// 执行下载操作
|
||||
Download<ResponseInputStream<GetObjectResponse>> download = client.getTransferManager()
|
||||
@@ -271,7 +272,7 @@ public class OssStorageStrategy implements StorageStrategy<OssClient> {
|
||||
return null;
|
||||
}
|
||||
String extName = FileUtil.extName(fileName);
|
||||
boolean contains = FileTypeEnum.IMAGE.getExtensions().contains(extName);
|
||||
boolean contains = FileType.IMAGE.getExtensions().contains(extName);
|
||||
CheckUtils.throwIf(!contains, "{}非图片格式,无法获取", extName);
|
||||
return Base64.getEncoder().encodeToString(inputStream.readAllBytes());
|
||||
} catch (Exception e) {
|
||||
|
@@ -25,7 +25,7 @@ import top.continew.starter.storage.constant.StorageConstant;
|
||||
* OSS 工具
|
||||
*
|
||||
* @author echo
|
||||
* @date 2024/12/17 13:48
|
||||
* @since 2.9.0
|
||||
*/
|
||||
public class OssUtils {
|
||||
public OssUtils() {
|
||||
|
@@ -1 +1 @@
|
||||
top.continew.starter.storage.autoconfigure.OssStorageAutoconfigure
|
||||
top.continew.starter.storage.autoconfigure.OssStorageAutoConfiguration
|
Reference in New Issue
Block a user