diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java index 4b50d7ee7..2d45ddc0d 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java @@ -61,7 +61,7 @@ public class OssClient { .withClientConfiguration(clientConfig) .withCredentials(credentialsProvider) .disableChunkedEncoding(); - if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)){ + if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)) { // minio 使用https限制使用域名访问 需要此配置 站点填域名 build.enablePathStyleAccess(); } @@ -142,7 +142,7 @@ public class OssClient { String endpoint = properties.getEndpoint(); String header = OssConstant.IS_HTTPS.equals(properties.getIsHttps()) ? "https://" : "http://"; // 云服务商直接返回 - if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)){ + if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)) { if (StringUtils.isNotBlank(domain)) { return header + domain; } @@ -180,6 +180,15 @@ public class OssClient { return url.toString(); } + /** + * 获取当前桶权限类型 + * + * @return 当前桶权限类型code + */ + public String getAccessPolicy() { + return properties.getAccessPolicy(); + } + private static String getPolicy(String bucketName, PolicyType policyType) { StringBuilder builder = new StringBuilder(); builder.append("{\n\"Statement\": [\n{\n\"Action\": [\n"); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index d307332b2..b5c7c9ad4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -17,6 +17,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.common.utils.redis.RedisUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.entity.UploadResult; @@ -97,7 +98,7 @@ public class SysOssServiceImpl implements ISysOssService { @Override public void download(Long ossId, HttpServletResponse response) throws IOException { - SysOssVo sysOss = this.matchingUrl(this.getById(ossId)); + SysOssVo sysOss = SpringUtils.getAopProxy(this).matchingUrl(this.getById(ossId)); if (ObjectUtil.isNull(sysOss)) { throw new ServiceException("文件数据不存在!"); } @@ -160,15 +161,11 @@ public class SysOssServiceImpl implements ISysOssService { * @return oss 匹配Url的OSS对象 */ private SysOssVo matchingUrl(SysOssVo oss) { - OssProperties properties = JsonUtils.parseObject( - CacheUtils.get(CacheNames.SYS_OSS_CONFIG, oss.getService()).toString(), - OssProperties.class - ); - if (properties == null) { - throw new OssException("系统异常, '" + oss.getService() + "'配置信息不存在!"); - } - if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), properties.getAccessPolicy())) { - OssClient storage = OssFactory.instance(oss.getService()); + OssClient storage = OssFactory.instance(oss.getService()); + /** + * 仅修改桶类型为 private 的 url + */ + if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), storage.getAccessPolicy())) { oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100)); } return oss;