From d2cdc694f1f04f5b1b9476830f4d7ef476935c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 25 Mar 2026 11:34:30 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=BC=A9?= =?UTF-8?q?=E7=9F=ADoss=E6=A8=A1=E5=9D=97=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ntImpl.java => AbstractOssClientImpl.java} | 22 ++-- ...entImpl.java => DefaultOssClientImpl.java} | 10 +- .../{S3StorageClient.java => OssClient.java} | 14 +-- ...ig.java => AccessControlPolicyConfig.java} | 10 +- ...onfig.java => OssAsyncExecutorConfig.java} | 10 +- ...ClientConfig.java => OssClientConfig.java} | 110 +++++++++--------- ...rageClientFactory.java => OssFactory.java} | 24 ++-- .../service/impl/SysOssServiceImpl.java | 3 +- 8 files changed, 102 insertions(+), 101 deletions(-) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/{AbstractS3StorageClientImpl.java => AbstractOssClientImpl.java} (96%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/{DefaultS3StorageClientImpl.java => DefaultOssClientImpl.java} (90%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/{S3StorageClient.java => OssClient.java} (97%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/{S3AccessControlPolicyConfig.java => AccessControlPolicyConfig.java} (72%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/{S3AsyncExecutorConfig.java => OssAsyncExecutorConfig.java} (79%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/{S3StorageClientConfig.java => OssClientConfig.java} (88%) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/factory/{S3StorageClientFactory.java => OssFactory.java} (76%) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractS3StorageClientImpl.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractOssClientImpl.java similarity index 96% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractS3StorageClientImpl.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractOssClientImpl.java index 8a5f4d302..f3dd981f1 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractS3StorageClientImpl.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/AbstractOssClientImpl.java @@ -4,12 +4,12 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.oss.config.S3StorageClientConfig; +import org.dromara.common.oss.config.OssClientConfig; +import org.dromara.common.oss.exception.S3StorageException; +import org.dromara.common.oss.io.OutputStreamDownloadSubscriber; import org.dromara.common.oss.model.GetObjectResult; import org.dromara.common.oss.model.HandleAsyncResult; import org.dromara.common.oss.model.PutObjectResult; -import org.dromara.common.oss.exception.S3StorageException; -import org.dromara.common.oss.io.OutputStreamDownloadSubscriber; import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.core.async.ResponsePublisher; @@ -46,7 +46,7 @@ import java.util.function.Function; * @author 秋辞未寒 */ @Slf4j -public abstract class AbstractS3StorageClientImpl implements S3StorageClient { +public abstract class AbstractOssClientImpl implements OssClient { private final AtomicBoolean initialized = new AtomicBoolean(false); @@ -60,7 +60,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient { /** * S3 存储客户端配置。 */ - protected S3StorageClientConfig config; + protected OssClientConfig config; /** * Amazon S3 异步客户端。 @@ -82,7 +82,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient { */ protected ExecutorService asyncExecutor; - public AbstractS3StorageClientImpl(String clientId, S3StorageClientConfig config) { + public AbstractOssClientImpl(String clientId, OssClientConfig config) { Assert.notNull(config, () -> S3StorageException.form("S3StorageClientConfig must not be null")); // 如果没有设置存储客户端ID,则随机生成一个 this.clientId = StringUtils.isBlank(clientId) ? IdUtil.fastSimpleUUID() : clientId; @@ -96,7 +96,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient { } @Override - public S3StorageClientConfig config() { + public OssClientConfig config() { // 仅返回copy副本,防篡改 return this.config.copy(); } @@ -127,7 +127,7 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient { abstract void doInitialize(); @Override - public void refresh(S3StorageClientConfig config) { + public void refresh(OssClientConfig config) { if (Objects.equals(this.config, config)) { return; } @@ -148,13 +148,13 @@ public abstract class AbstractS3StorageClientImpl implements S3StorageClient { } @Override - public boolean verifyConfig(Function verifyConfigAction) { - S3StorageClientConfig config = config(); + public boolean verifyConfig(Function verifyConfigAction) { + OssClientConfig config = config(); return Boolean.TRUE.equals(verifyConfigAction.apply(config)); } @Override - public boolean verifyConfig(S3StorageClientConfig verifyConfig) { + public boolean verifyConfig(OssClientConfig verifyConfig) { return verifyConfig((config) -> Objects.equals(config, verifyConfig)); } diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultS3StorageClientImpl.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultOssClientImpl.java similarity index 90% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultS3StorageClientImpl.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultOssClientImpl.java index bac2b8c22..837ec68df 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultS3StorageClientImpl.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/DefaultOssClientImpl.java @@ -1,7 +1,7 @@ package org.dromara.common.oss.client; -import org.dromara.common.oss.config.S3AsyncExecutorConfig; -import org.dromara.common.oss.config.S3StorageClientConfig; +import org.dromara.common.oss.config.OssAsyncExecutorConfig; +import org.dromara.common.oss.config.OssClientConfig; import org.dromara.common.oss.exception.S3StorageException; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; @@ -21,9 +21,9 @@ import java.util.concurrent.Executors; * * @author 秋辞未寒 */ -public class DefaultS3StorageClientImpl extends AbstractS3StorageClientImpl { +public class DefaultOssClientImpl extends AbstractOssClientImpl { - public DefaultS3StorageClientImpl(String clientId, S3StorageClientConfig config) { + public DefaultOssClientImpl(String clientId, OssClientConfig config) { super(clientId, config); } @@ -79,7 +79,7 @@ public class DefaultS3StorageClientImpl extends AbstractS3StorageClientImpl { .build(); // 创建异步调度器对象 - S3AsyncExecutorConfig asyncExecutorConfig = config.asyncExecutorConfig(); + OssAsyncExecutorConfig asyncExecutorConfig = config.asyncExecutorConfig(); // 是否使用虚拟线程 if (asyncExecutorConfig.enabledVirtualThread()) { this.asyncExecutor = Executors.newVirtualThreadPerTaskExecutor(); diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/S3StorageClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/OssClient.java similarity index 97% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/S3StorageClient.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/OssClient.java index b35c26558..bb64ca4e0 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/S3StorageClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/client/OssClient.java @@ -1,11 +1,11 @@ package org.dromara.common.oss.client; import cn.hutool.core.util.IdUtil; -import org.dromara.common.oss.config.S3StorageClientConfig; +import org.dromara.common.oss.config.OssClientConfig; +import org.dromara.common.oss.io.OutputStreamDownloadSubscriber; import org.dromara.common.oss.model.GetObjectResult; import org.dromara.common.oss.model.HandleAsyncResult; import org.dromara.common.oss.model.PutObjectResult; -import org.dromara.common.oss.io.OutputStreamDownloadSubscriber; import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.model.GetObjectRequest; @@ -39,7 +39,7 @@ import java.util.function.Function; * * @author 秋辞未寒 */ -public interface S3StorageClient extends AutoCloseable { +public interface OssClient extends AutoCloseable { /** * S3 存储客户端ID @@ -55,7 +55,7 @@ public interface S3StorageClient extends AutoCloseable { /** * 获取客户端配置copy副本 */ - S3StorageClientConfig config(); + OssClientConfig config(); /** * 是否已经初始化 @@ -72,7 +72,7 @@ public interface S3StorageClient extends AutoCloseable { * * @param config 配置项 */ - void refresh(S3StorageClientConfig config); + void refresh(OssClientConfig config); /** * 校验客户端配置 @@ -82,7 +82,7 @@ public interface S3StorageClient extends AutoCloseable { * @param verifyConfigAction 校验配置动作函数 * @return 是否一致 */ - boolean verifyConfig(Function verifyConfigAction); + boolean verifyConfig(Function verifyConfigAction); /** * 校验客户端配置与传入的待校验配置是否一致 @@ -92,7 +92,7 @@ public interface S3StorageClient extends AutoCloseable { * @param verifyConfig 待校验的配置 * @return 是否一致 */ - boolean verifyConfig(S3StorageClientConfig verifyConfig); + boolean verifyConfig(OssClientConfig verifyConfig); /** * 执行自定义上传请求。 diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AccessControlPolicyConfig.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/AccessControlPolicyConfig.java similarity index 72% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AccessControlPolicyConfig.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/AccessControlPolicyConfig.java index ad6113c8d..ab75fc734 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AccessControlPolicyConfig.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/AccessControlPolicyConfig.java @@ -16,10 +16,10 @@ import java.util.Optional; * @author 秋辞未寒 */ @Builder -public record S3AccessControlPolicyConfig( +public record AccessControlPolicyConfig( boolean enabled , AccessPolicy accessPolicy -) implements Config, Serializable { +) implements Config, Serializable { @Serial private static final long serialVersionUID = 1L; @@ -27,7 +27,7 @@ public record S3AccessControlPolicyConfig( /** * 默认访问策略配置 */ - public static final S3AccessControlPolicyConfig DEFAULT = S3AccessControlPolicyConfig.builder() + public static final AccessControlPolicyConfig DEFAULT = AccessControlPolicyConfig.builder() .enabled(false) .accessPolicy(AccessPolicy.PUBLIC_READ_WRITE) .build(); @@ -39,12 +39,12 @@ public record S3AccessControlPolicyConfig( } @Override - public S3AccessControlPolicyConfig copy() { + public AccessControlPolicyConfig copy() { return toBuilder().build(); } @Override - public S3AccessControlPolicyConfigBuilder toBuilder() { + public AccessControlPolicyConfigBuilder toBuilder() { return builder() .enabled(enabled) .accessPolicy(accessPolicy); diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AsyncExecutorConfig.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssAsyncExecutorConfig.java similarity index 79% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AsyncExecutorConfig.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssAsyncExecutorConfig.java index 2c7b86008..6fc7eeb55 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3AsyncExecutorConfig.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssAsyncExecutorConfig.java @@ -15,10 +15,10 @@ import java.io.Serializable; * @author 秋辞未寒 */ @Builder -public record S3AsyncExecutorConfig( +public record OssAsyncExecutorConfig( boolean enabledVirtualThread , int corePoolSize -) implements Config, Serializable { +) implements Config, Serializable { @Serial private static final long serialVersionUID = 1L; @@ -31,7 +31,7 @@ public record S3AsyncExecutorConfig( /** * 默认异步执行器配置 */ - public static final S3AsyncExecutorConfig DEFAULT = S3AsyncExecutorConfig.builder() + public static final OssAsyncExecutorConfig DEFAULT = OssAsyncExecutorConfig.builder() .enabledVirtualThread(false) .corePoolSize(DEFAULT_CORE_POOL_SIZE) .build(); @@ -53,12 +53,12 @@ public record S3AsyncExecutorConfig( } @Override - public S3AsyncExecutorConfig copy() { + public OssAsyncExecutorConfig copy() { return toBuilder().build(); } @Override - public S3AsyncExecutorConfigBuilder toBuilder() { + public OssAsyncExecutorConfigBuilder toBuilder() { return builder() .enabledVirtualThread(enabledVirtualThread) .corePoolSize(corePoolSize); diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3StorageClientConfig.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssClientConfig.java similarity index 88% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3StorageClientConfig.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssClientConfig.java index 76abfe5c5..2c46270f7 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/S3StorageClientConfig.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/config/OssClientConfig.java @@ -26,7 +26,7 @@ import java.util.Optional; @RequiredArgsConstructor @Builder @EqualsAndHashCode -public class S3StorageClientConfig implements Config, Serializable { +public class OssClientConfig implements Config, Serializable { @Serial private static final long serialVersionUID = 1L; @@ -79,12 +79,12 @@ public class S3StorageClientConfig implements Config CLIENT_CACHE = new ConcurrentHashMap<>(); + private static final Map CLIENT_CACHE = new ConcurrentHashMap<>(); private static final ReentrantLock LOCK = new ReentrantLock(); /** * 获取默认实例 */ - public static S3StorageClient instance() { + public static OssClient instance() { // 获取redis 默认类型 String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY); if (StringUtils.isEmpty(configKey)) { @@ -43,18 +43,18 @@ public class S3StorageClientFactory { /** * 根据类型获取实例 */ - public static S3StorageClient instance(String configKey) { + public static OssClient instance(String configKey) { String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); if (json == null) { throw S3StorageException.form("系统异常, '" + configKey + "'配置信息不存在!"); } OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); - S3StorageClientConfig config = S3StorageClientConfig.formProperties(properties); + OssClientConfig config = OssClientConfig.formProperties(properties); LOCK.lock(); try { // 如果已经存在,则校验配置一致性 if (CLIENT_CACHE.containsKey(configKey)) { - S3StorageClient client = CLIENT_CACHE.get(configKey); + OssClient client = CLIENT_CACHE.get(configKey); if (!client.verifyConfig(config)) { // 配置不一致,刷新配置 client.refresh(config); @@ -62,7 +62,7 @@ public class S3StorageClientFactory { } return client; } - DefaultS3StorageClientImpl client = new DefaultS3StorageClientImpl(configKey,config); + DefaultOssClientImpl client = new DefaultOssClientImpl(configKey, config); CLIENT_CACHE.put(configKey, client); return client; } finally { @@ -74,7 +74,7 @@ public class S3StorageClientFactory { * 移除实例 */ public static boolean remove(String configKey) { - S3StorageClient client = CLIENT_CACHE.remove(configKey); + OssClient client = CLIENT_CACHE.remove(configKey); if (client == null) { return false; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index f5b26150a..dbe7f61c6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -21,6 +21,7 @@ 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.oss.client.S3StorageClient; +import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.model.GetObjectResult; import org.dromara.common.oss.model.PutObjectResult; import org.dromara.common.oss.enums.AccessPolicy; @@ -212,7 +213,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService { } String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); - S3StorageClient instance = S3StorageClientFactory.instance(); + S3StorageClient instance = OssFactory.instance(); try { String pathKey = S3ObjectUtil.buildPathKey(originalfileName); PutObjectResult result = instance.upload(pathKey, file.getInputStream(), file.getSize());