From 5e24f258cc049ff38b2bd76aa27b3fd353e4eb70 Mon Sep 17 00:00:00 2001
From: landaiqing <3517283258@qq.com>
Date: Mon, 24 Jun 2024 23:21:22 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E8=B1=A1=E5=AD=98=E5=82=A8oss?=
=?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pom.xml | 29 ---
.../oss/core/ali/AliOssConfiguration.java | 6 +-
.../oss/core/aws/AwsOssClient.java | 2 +-
.../oss/core/aws/AwsOssConfiguration.java | 2 +-
.../oss/core/aws/constant/AwsRegion.java | 2 +-
.../core/aws/model/AwsOssClientConfig.java | 2 +-
.../oss/core/aws/model/AwsOssConfig.java | 2 +-
.../oss/core/baidu/BaiduOssConfiguration.java | 63 ------
.../core/baidu/constant/BaiduOssConstant.java | 10 -
.../baidu/model/BaiduOssClientConfig.java | 140 ------------
.../oss/core/ftp/FtpOssClient.java | 3 +-
.../oss/core/ftp/FtpOssConfiguration.java | 3 +-
.../core/ftp/model/FtpOssClientConfig.java | 2 +-
.../oss/core/ftp/model/FtpOssConfig.java | 2 +-
.../oss/core/huawei/HuaWeiOssClient.java | 210 ++++++++++++++++++
.../core/huawei/HuaWeiOssConfiguration.java | 58 +++++
.../huawei/model/HuaweiOssClientConfig.java | 158 +++++++++++++
.../core/huawei/model/HuaweiOssConfig.java | 41 ++++
.../JdOssClient.java} | 168 ++++++--------
.../oss/core/jd/JdOssConfiguration.java | 100 +++++++++
.../oss/core/jd/model/JdOssClientConfig.java | 181 +++++++++++++++
.../model/JdOssConfig.java} | 22 +-
.../oss/core/minio/MinioOssClient.java | 3 -
.../oss/core/minio/MinioOssConfiguration.java | 3 -
.../pom.xml | 39 ++++
.../oss/common/redis/RedisUtil.java | 2 +-
.../oss/common/utils/ImageUtil.java | 194 ----------------
.../SchisandraOssHuaweiDomainService.java | 1 +
.../service/SchisandraOssJdDomainService.java | 1 +
.../SchisandraOssJdbcDomainService.java | 1 +
.../SchisandraOssHuaweiDomainServiceImpl.java | 9 +-
.../SchisandraOssJdDomainServiceImpl.java | 9 +-
.../SchisandraOssJdbcDomainServiceImpl.java | 9 +-
.../infra/basic/dao/SchisandraOssAliDao.java | 9 +-
.../service/SchisandraOssHuaweiService.java | 1 +
.../basic/service/SchisandraOssJdService.java | 1 +
.../service/SchisandraOssJdbcService.java | 1 +
.../impl/SchisandraOssHuaweiServiceImpl.java | 12 +-
.../impl/SchisandraOssJdServiceImpl.java | 12 +-
.../impl/SchisandraOssJdbcServiceImpl.java | 12 +-
40 files changed, 941 insertions(+), 584 deletions(-)
delete mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssConfiguration.java
delete mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/constant/BaiduOssConstant.java
delete mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssClientConfig.java
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssClient.java
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssConfiguration.java
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssClientConfig.java
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssConfig.java
rename schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/{baidu/BaiduOssClient.java => jd/JdOssClient.java} (55%)
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssConfiguration.java
create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssClientConfig.java
rename schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/{baidu/model/BaiduOssConfig.java => jd/model/JdOssConfig.java} (57%)
delete mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/utils/ImageUtil.java
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/pom.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/pom.xml
index 820c8e8..82cbaea 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/pom.xml
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/pom.xml
@@ -74,34 +74,5 @@
schisandra-cloud-storage-oss-api
1.0-SNAPSHOT
-
-
-
- io.minio
- minio
- 8.2.1
- provided
-
-
-
- com.aliyun.oss
- aliyun-sdk-oss
- provided
- 3.14.0
-
-
-
- software.amazon.awssdk
- s3
- 2.17.160
- provided
-
-
-
- com.baidubce
- bce-java-sdk
- 0.10.196
- provided
-
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java
index 2d9e3ee..f66029d 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java
@@ -30,8 +30,6 @@ public class AliOssConfiguration {
@Resource
SchisandraOssAliDomainService schisandraOssAliDomainService;
- @Resource
- AliOssClient aliOssClient;
public StandardOssClient aliOssClient(String userId) {
CompletableFuture futurePrice = CompletableFuture.supplyAsync(() -> {
@@ -79,9 +77,7 @@ public class AliOssConfiguration {
}
public StandardOssClient aliOssClient(AliOssConfig aliOssConfig) {
- aliOssClient.setAliOssConfig(aliOssConfig);
- aliOssClient.setOss(ossClient(aliOssConfig));
- return aliOssClient;
+ return new AliOssClient(ossClient(aliOssConfig), aliOssConfig);
}
public OSS ossClient(AliOssConfig aliOssConfig) {
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssClient.java
index a257813..df1f15c 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssClient.java
@@ -43,7 +43,7 @@ import java.util.Map;
/**
* https://docs.aws.amazon.com/s3/
- * @author 陈敏
+ * @author landaiqing
* @version AwsOssClient.java, v 1.0 2022/4/1 18:05 chenmin Exp $
* Created on 2022/4/1
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssConfiguration.java
index 1f7a930..9824173 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssConfiguration.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/AwsOssConfiguration.java
@@ -18,7 +18,7 @@ import software.amazon.awssdk.services.s3.S3Client;
import javax.annotation.Resource;
/**
- * @author 陈敏
+ * @author landaiqing
* @version AwsOssConfiguration.java, v 1.0 2022/4/1 18:02 chenmin Exp $
* Created on 2022/4/1
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/constant/AwsRegion.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/constant/AwsRegion.java
index c1a26f5..f2e2aef 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/constant/AwsRegion.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/constant/AwsRegion.java
@@ -3,7 +3,7 @@ package com.schisandra.oss.application.oss.core.aws.constant;
import software.amazon.awssdk.regions.Region;
/**
- * @author 陈敏
+ * @author landaiqing
* @version Region.java, v 1.0 2022/4/1 23:05 chenmin Exp $
* Created on 2022/4/1
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssClientConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssClientConfig.java
index a37e506..313cd02 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssClientConfig.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssClientConfig.java
@@ -3,7 +3,7 @@ package com.schisandra.oss.application.oss.core.aws.model;
import lombok.Data;
/**
- * @author 陈敏
+ * @author landaiqing
* @version AwsOssClientConfig.java, v 1.0 2022/4/2 16:05 chenmin Exp $
* Created on 2022/4/2
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssConfig.java
index 79e8fd4..ce271ee 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssConfig.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/aws/model/AwsOssConfig.java
@@ -8,7 +8,7 @@ import lombok.Data;
import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode;
/**
- * @author 陈敏
+ * @author landaiqing
* @version AwsOssConfig.java, v 1.0 2022/4/1 18:05 chenmin Exp $
* Created on 2022/4/1
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssConfiguration.java
deleted file mode 100644
index 4eaf343..0000000
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssConfiguration.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.schisandra.oss.application.oss.core.baidu;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.baidubce.auth.DefaultBceCredentials;
-import com.baidubce.services.bos.BosClient;
-import com.baidubce.services.bos.BosClientConfiguration;
-import com.schisandra.oss.application.convert.SchisandraOssBaiduDTOConverter;
-import com.schisandra.oss.application.dto.SchisandraOssBaiduDTO;
-import com.schisandra.oss.application.oss.core.StandardOssClient;
-import com.schisandra.oss.application.oss.core.baidu.model.BaiduOssClientConfig;
-import com.schisandra.oss.application.oss.core.baidu.model.BaiduOssConfig;
-import com.schisandra.oss.domain.bo.SchisandraOssBaiduBO;
-import com.schisandra.oss.domain.service.SchisandraOssBaiduDomainService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.Optional;
-
-/**
- * @author 陈敏
- * @version BaiduConfiguration.java, v 1.1 2021/11/24 15:26 chenmin Exp $
- * Created on 2021/11/24
- */
-@Component
-@Slf4j
-public class BaiduOssConfiguration {
-
- @Resource
- private SchisandraOssBaiduDomainService schisandraOssBaiduDomainService;
-
-
- public StandardOssClient baiduOssClient(String userId) {
- SchisandraOssBaiduBO schisandraOssBaiduBO = schisandraOssBaiduDomainService.getBaiduOssConfig(userId);
- SchisandraOssBaiduDTO schisandraOssBaiduDTO = SchisandraOssBaiduDTOConverter.INSTANCE.convertBOToDTO(schisandraOssBaiduBO);
- if (ObjectUtil.isEmpty(schisandraOssBaiduDTO)) {
- log.error("Baidu oss配置信息获取失败");
- return null;
- }
- String accessKeyId = schisandraOssBaiduDTO.getAccessKeyId();
- String secretAccessKey = schisandraOssBaiduDTO.getSecretAccessKey();
- BaiduOssConfig baiduOssConfig = new BaiduOssConfig();
- baiduOssConfig.setAccessKeyId(accessKeyId);
- baiduOssConfig.setSecretAccessKey(secretAccessKey);
- return baiduOssClient(baiduOssConfig);
- }
-
- public StandardOssClient baiduOssClient(BaiduOssConfig baiduOssConfig) {
- return new BaiduOssClient(bosClient(bosClientConfiguration(baiduOssConfig)), baiduOssConfig);
- }
-
- public BosClientConfiguration bosClientConfiguration(BaiduOssConfig baiduOssConfig) {
- BaiduOssClientConfig clientConfig = Optional.ofNullable(baiduOssConfig.getClientConfig()).orElse(new BaiduOssClientConfig());
- BosClientConfiguration bosClientConfiguration = clientConfig.toClientConfig();
- bosClientConfiguration.setCredentials(new DefaultBceCredentials(baiduOssConfig.getAccessKeyId(), baiduOssConfig.getSecretAccessKey()));
- return bosClientConfiguration;
- }
-
- public BosClient bosClient(BosClientConfiguration config) {
- return new BosClient(config);
- }
-
-}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/constant/BaiduOssConstant.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/constant/BaiduOssConstant.java
deleted file mode 100644
index 12e23fb..0000000
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/constant/BaiduOssConstant.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.schisandra.oss.application.oss.core.baidu.constant;
-
-/**
- * @author 陈敏
- * @version BaiduOssConstant.java, v 1.0 2022/4/20 16:19 chenmin Exp $
- * Created on 2022/4/20
- */
-public class BaiduOssConstant {
- public static final String DEFAULT_ENDPOINT = "bj.bcebos.com";
-}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssClientConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssClientConfig.java
deleted file mode 100644
index 4b8ceae..0000000
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssClientConfig.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package com.schisandra.oss.application.oss.core.baidu.model;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baidubce.BceClientConfiguration;
-import com.baidubce.Protocol;
-import com.baidubce.Region;
-import com.baidubce.http.DefaultRetryPolicy;
-import com.baidubce.http.RetryPolicy;
-import com.baidubce.services.bos.BosClientConfiguration;
-import com.schisandra.oss.application.oss.core.baidu.constant.BaiduOssConstant;
-import lombok.Data;
-import lombok.experimental.Accessors;
-import lombok.extern.slf4j.Slf4j;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import static com.baidubce.BceClientConfiguration.*;
-import static com.baidubce.services.bos.BosClientConfiguration.DEFAULT_STREAM_BUFFER_SIZE;
-
-/**
- * @author 陈敏
- * @version BaiduOssClientConfig.java, v 1.0 2022/4/20 16:19 chenmin Exp $
- * Created on 2022/4/20
- */
-@Slf4j
-@Data
-@Accessors(chain = true)
-public class BaiduOssClientConfig {
- /**
- * 使用cname访问BOS资源
- */
- private boolean cnameEnabled;
- /**
- * 异步put
- */
- private boolean enableHttpAsyncPut = true;
- /**
- * 建立连接的超时时间(单位:毫秒)
- */
- private int connectionTimeoutInMillis = DEFAULT_CONNECTION_TIMEOUT_IN_MILLIS;
- /**
- * 允许打开的最大HTTP连接数
- */
- private int maxConnections = DEFAULT_MAX_CONNECTIONS;
- /**
- * 连接协议类型
- */
- private Protocol protocol = DEFAULT_PROTOCOL;
- /**
- * 访问NTLM验证的代理服务器的Windows域名
- */
- private String proxyDomain;
- /**
- * 代理服务器主机地址
- */
- private String proxyHost;
- /**
- * 代理服务器验证的密码
- */
- private String proxyPassword;
- /**
- * 代理服务器端口
- */
- private int proxyPort = -1;
- /**
- * 代理服务器验证的用户名
- */
- private String proxyUsername;
- /**
- * NTLM代理服务器的Windows工作站名称
- */
- private String proxyWorkstation;
- /**
- * 是否设置用户代理认证
- */
- private boolean proxyPreemptiveAuthenticationEnabled;
- /**
- * 通过打开的连接传输数据的超时时间(单位:毫秒)
- */
- private int socketTimeoutInMillis = DEFAULT_SOCKET_TIMEOUT_IN_MILLIS;
- /**
- * Socket缓冲区大小
- */
- private int socketBufferSizeInBytes = 0;
- /**
- * 访问域名
- */
- private String endpoint = BaiduOssConstant.DEFAULT_ENDPOINT;
- /**
- * 地域
- */
- private Region region = DEFAULT_REGION;
- /**
- * 是否开启HTTP重定向。默认开启
- */
- private boolean redirectsEnabled = true;
- /**
- * 本地地址
- */
- private String localAddress;
- /**
- * 请求失败最大重试次数
- */
- private int maxErrorRetry = RetryPolicy.DEFAULT_MAX_ERROR_RETRY;
- /**
- * 最大延迟时间,单位:毫秒
- */
- private long maxDelayInMillis = RetryPolicy.DEFAULT_MAX_DELAY_IN_MILLIS;
- /**
- * 流文件缓冲区大小
- */
- private int streamBufferSize = DEFAULT_STREAM_BUFFER_SIZE;
- /**
- * 用户代理,指HTTP的User-Agent头
- */
- private String userAgent = BceClientConfiguration.DEFAULT_USER_AGENT;
-
- public BosClientConfiguration toClientConfig() {
- BosClientConfiguration clientConfig = new BosClientConfiguration();
- BeanUtil.copyProperties(this, clientConfig, "proxyPort", "socketBufferSizeInBytes",
- "localAddress", "maxErrorRetry", "maxDelayInMillis");
- if (this.proxyPort != -1) {
- clientConfig.setProxyPort(this.proxyPort);
- }
- if (this.socketBufferSizeInBytes != 0) {
- clientConfig.setSocketBufferSizeInBytes(this.socketBufferSizeInBytes);
- }
- if (ObjectUtil.isNotEmpty(this.localAddress)) {
- try {
- clientConfig.setLocalAddress(InetAddress.getByName(this.localAddress));
- } catch (UnknownHostException e) {
- log.error("localAddress配置有误,请检查!", e);
- }
- }
- clientConfig.setRetryPolicy(new DefaultRetryPolicy(maxErrorRetry, maxDelayInMillis));
- return clientConfig;
- }
-}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssClient.java
index 3866da1..7395165 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssClient.java
@@ -1,5 +1,6 @@
package com.schisandra.oss.application.oss.core.ftp;
+
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
@@ -36,7 +37,7 @@ import java.util.List;
import java.util.Map;
/**
- * @author 陈敏
+ * @author landaiqing
* @version FtpOssClient.java, v 1.1 2021/11/15 11:11 chenmin Exp $
* Created on 2021/11/15
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssConfiguration.java
index 5482722..a458555 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssConfiguration.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/FtpOssConfiguration.java
@@ -10,14 +10,13 @@ import com.schisandra.oss.application.oss.core.ftp.model.FtpOssConfig;
import com.schisandra.oss.domain.bo.SchisandraOssFtpBO;
import com.schisandra.oss.domain.service.SchisandraOssFtpDomainService;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Optional;
/**
- * @author 陈敏
+ * @author landaiqing
* @version FtpOssConfiguration.java, v 1.1 2021/11/16 15:29 chenmin Exp $
* Created on 2021/11/16
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssClientConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssClientConfig.java
index 59d266f..0b03b81 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssClientConfig.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssClientConfig.java
@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.experimental.Accessors;
/**
- * @author 陈敏
+ * @author landaiqing
* @version FtpOssClientConfig.java, v 1.0 2022/4/25 17:26 chenmin Exp $
* Created on 2022/4/25
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssConfig.java
index ab74bae..1f8241f 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssConfig.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ftp/model/FtpOssConfig.java
@@ -10,7 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import java.nio.charset.Charset;
/**
- * @author 陈敏
+ * @author landaiqing
* @version FtpOssConfig.java, v 1.1 2022/2/19 18:29 chenmin Exp $
* Created on 2022/2/19
*/
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssClient.java
new file mode 100644
index 0000000..16f82b6
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssClient.java
@@ -0,0 +1,210 @@
+package com.schisandra.oss.application.oss.core.huawei;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.io.file.FileNameUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.obs.services.ObsClient;
+import com.obs.services.model.*;
+import com.schisandra.oss.application.oss.constant.OssConstant;
+import com.schisandra.oss.application.oss.core.StandardOssClient;
+import com.schisandra.oss.application.oss.core.huawei.model.HuaweiOssConfig;
+import com.schisandra.oss.application.oss.model.DirectoryOssInfo;
+import com.schisandra.oss.application.oss.model.FileOssInfo;
+import com.schisandra.oss.application.oss.model.OssInfo;
+import com.schisandra.oss.application.oss.model.SliceConfig;
+import com.schisandra.oss.application.oss.utils.OssPathUtil;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * https://support.huaweicloud.com/obs/index.html
+ *
+ * @author landaiqing
+ * @version HuaWeiOssClient.java, v 1.1 2021/11/25 10:01 chenmin Exp $
+ * Created on 2021/11/25
+ */
+@Slf4j
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HuaWeiOssClient implements StandardOssClient {
+
+ public static final String OBS_OBJECT_NAME = "obsClient";
+
+ private ObsClient obsClient;
+ private HuaweiOssConfig huaweiOssConfig;
+
+ @Override
+ public OssInfo upLoad(InputStream is, String targetName, Boolean isOverride) {
+ String bucket = getBucket();
+ String key = getKey(targetName, false);
+ if (isOverride || !obsClient.doesObjectExist(bucket, key)) {
+ obsClient.putObject(bucket, key, is);
+ }
+ return getInfo(targetName);
+ }
+
+ @Override
+ public OssInfo upLoadCheckPoint(File file, String targetName) {
+ String bucket = getBucket();
+ String key = getKey(targetName, false);
+ UploadFileRequest request = new UploadFileRequest(bucket, key);
+ String upLoadFile = file.getPath();
+ request.setUploadFile(upLoadFile);
+
+ SliceConfig slice = huaweiOssConfig.getSliceConfig();
+
+ request.setTaskNum(slice.getTaskNum());
+ request.setPartSize(slice.getPartSize());
+ request.setEnableCheckpoint(true);
+
+ String checkpointFile = upLoadFile + StrUtil.DOT + OssConstant.OssType.HUAWEI;
+
+ request.setCheckpointFile(checkpointFile);
+ obsClient.uploadFile(request);
+ return getInfo(targetName);
+ }
+
+ @Override
+ public void downLoad(OutputStream os, String targetName) {
+ ObsObject obsObject = obsClient.getObject(getBucket(), getKey(targetName, false));
+ IoUtil.copy(obsObject.getObjectContent(), os);
+ }
+
+ @Override
+ public void downLoadCheckPoint(File localFile, String targetName) {
+ String downloadFile = localFile.getPath();
+ DownloadFileRequest request = new DownloadFileRequest(getBucket(), getKey(targetName, false));
+ request.setEnableCheckpoint(true);
+ SliceConfig sliceConfig = huaweiOssConfig.getSliceConfig();
+ request.setTaskNum(sliceConfig.getTaskNum());
+ request.setPartSize(sliceConfig.getPartSize());
+
+ String checkpointFile = downloadFile + StrUtil.DOT + OssConstant.OssType.HUAWEI;
+ request.setCheckpointFile(checkpointFile);
+ request.setDownloadFile(downloadFile);
+ obsClient.downloadFile(request);
+ }
+
+ @Override
+ public void delete(String targetName) {
+ obsClient.deleteObject(getBucket(), getKey(targetName, false));
+ }
+
+ @Override
+ public void copy(String sourceName, String targetName, Boolean isOverride) {
+ String bucket = getBucket();
+ String newTargetName = getKey(targetName, false);
+ if (isOverride || !obsClient.doesObjectExist(bucket, newTargetName)) {
+ obsClient.copyObject(bucket, getKey(sourceName, false), bucket, newTargetName);
+ }
+ }
+
+ @Override
+ public OssInfo getInfo(String targetName, Boolean isRecursion) {
+ String key = getKey(targetName, false);
+
+ OssInfo ossInfo = getBaseInfo(key);
+ ossInfo.setName(StrUtil.equals(targetName, StrUtil.SLASH) ? targetName : FileNameUtil.getName(targetName));
+ ossInfo.setPath(OssPathUtil.replaceKey(targetName, ossInfo.getName(), true));
+
+ if (isRecursion && isDirectory(key)) {
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest(getBucket());
+ listObjectsRequest.setDelimiter(StrUtil.SLASH);
+ String prefix = OssPathUtil.convertPath(key, false);
+ listObjectsRequest.setPrefix(prefix.endsWith(StrUtil.SLASH) ? prefix : prefix + StrUtil.SLASH);
+
+ ObjectListing listObjects = obsClient.listObjects(listObjectsRequest);
+
+ List fileOssInfos = new ArrayList<>();
+ List directoryInfos = new ArrayList<>();
+ for (ObsObject obsObject : listObjects.getObjects()) {
+ if (FileNameUtil.getName(obsObject.getObjectKey()).equals(FileNameUtil.getName(key))) {
+ ossInfo.setLastUpdateTime(DateUtil.date(obsObject.getMetadata().getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setCreateTime(DateUtil.date(obsObject.getMetadata().getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setLength(Convert.toStr(obsObject.getMetadata().getContentLength()));
+ } else {
+ fileOssInfos.add(getInfo(OssPathUtil.replaceKey(obsObject.getObjectKey(), getBasePath(), false), false));
+ }
+ }
+
+ for (String commonPrefix : listObjects.getCommonPrefixes()) {
+ String target = OssPathUtil.replaceKey(commonPrefix, getBasePath(), false);
+ if (isDirectory(commonPrefix)) {
+ directoryInfos.add(getInfo(target, true));
+ } else {
+ fileOssInfos.add(getInfo(target, false));
+ }
+ }
+ if (ObjectUtil.isNotEmpty(fileOssInfos) && fileOssInfos.get(0) instanceof FileOssInfo) {
+ ReflectUtil.setFieldValue(ossInfo, "fileInfos", fileOssInfos);
+ }
+ if (ObjectUtil.isNotEmpty(directoryInfos) && directoryInfos.get(0) instanceof DirectoryOssInfo) {
+ ReflectUtil.setFieldValue(ossInfo, "directoryInfos", directoryInfos);
+ }
+ }
+
+ return ossInfo;
+ }
+
+ @Override
+ public Boolean isExist(String targetName) {
+ return obsClient.doesObjectExist(getBucket(), getKey(targetName, false));
+ }
+
+ @Override
+ public String getBasePath() {
+ return huaweiOssConfig.getBasePath();
+ }
+
+ @Override
+ public Map getClientObject() {
+ return new HashMap() {
+ {
+ put(OBS_OBJECT_NAME, getObsClient());
+ }
+ };
+ }
+
+ private String getBucket() {
+ String bucketName = huaweiOssConfig.getBucketName();
+ if (!obsClient.headBucket(bucketName)) {
+ obsClient.createBucket(bucketName);
+ }
+ return bucketName;
+ }
+
+ public OssInfo getBaseInfo(String key) {
+ OssInfo ossInfo;
+
+ if (isFile(key)) {
+ ossInfo = new FileOssInfo();
+ try {
+ ObjectMetadata objectMetadata = obsClient.getObjectMetadata(getBucket(), key);
+ ossInfo.setLastUpdateTime(DateUtil.date(objectMetadata.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setCreateTime(DateUtil.date(objectMetadata.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setLength(Convert.toStr(objectMetadata.getContentLength()));
+ } catch (Exception e) {
+ log.error("获取{}文件属性失败", key, e);
+ }
+ } else {
+ ossInfo = new DirectoryOssInfo();
+ }
+ return ossInfo;
+ }
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssConfiguration.java
new file mode 100644
index 0000000..d2d4994
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/HuaWeiOssConfiguration.java
@@ -0,0 +1,58 @@
+package com.schisandra.oss.application.oss.core.huawei;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.obs.services.ObsClient;
+import com.obs.services.ObsConfiguration;
+import com.schisandra.oss.application.convert.SchisandraOssHuaweiDTOConverter;
+import com.schisandra.oss.application.dto.SchisandraOssHuaweiDTO;
+import com.schisandra.oss.application.oss.core.StandardOssClient;
+import com.schisandra.oss.application.oss.core.huawei.model.HuaweiOssClientConfig;
+import com.schisandra.oss.application.oss.core.huawei.model.HuaweiOssConfig;
+import com.schisandra.oss.domain.bo.SchisandraOssHuaweiBO;
+import com.schisandra.oss.domain.service.SchisandraOssHuaweiDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Optional;
+
+/**
+ * @author landaiqing
+ * @version HuaWeiOssConfiguration.java, v 1.1 2021/11/25 9:58 chenmin Exp $
+ * Created on 2021/11/25
+ */
+@Component
+@Slf4j
+public class HuaWeiOssConfiguration {
+
+ @Resource
+ private SchisandraOssHuaweiDomainService schisandraOssHuaweiDomainService;
+
+ public StandardOssClient huaWeiOssClient(String userId) {
+ SchisandraOssHuaweiBO schisandraOssHuaweiBO = schisandraOssHuaweiDomainService.getHuaweiOssConfig(userId);
+ SchisandraOssHuaweiDTO schisandraOssHuaweiDTO = SchisandraOssHuaweiDTOConverter.INSTANCE.convertBOToDTO(schisandraOssHuaweiBO);
+ if (ObjectUtil.isEmpty(schisandraOssHuaweiDTO)) {
+ log.error("huawei oss配置信息获取失败");
+ return null;
+ }
+ String accessKey = schisandraOssHuaweiDTO.getAccessKey();
+ String secretKey = schisandraOssHuaweiDTO.getSecretKey();
+ String endPoint = schisandraOssHuaweiDTO.getEndPoint();
+ HuaweiOssConfig huaweiOssConfig = new HuaweiOssConfig();
+ huaweiOssConfig.setAccessKey(accessKey);
+ huaweiOssConfig.setSecretKey(secretKey);
+ huaweiOssConfig.setEndPoint(endPoint);
+ return huaWeiOssClient(huaweiOssConfig);
+ }
+
+ public StandardOssClient huaWeiOssClient(HuaweiOssConfig huaweiOssConfig) {
+ return new HuaWeiOssClient(obsClient(huaweiOssConfig), huaweiOssConfig);
+ }
+
+ public ObsClient obsClient(HuaweiOssConfig huaweiOssConfig) {
+ HuaweiOssClientConfig clientConfig = Optional.ofNullable(huaweiOssConfig.getClientConfig()).orElse(new HuaweiOssClientConfig());
+ ObsConfiguration obsConfiguration = clientConfig.toClientConfig();
+ obsConfiguration.setEndPoint(huaweiOssConfig.getEndPoint());
+ return new ObsClient(huaweiOssConfig.getAccessKey(), huaweiOssConfig.getSecretKey(), obsConfiguration);
+ }
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssClientConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssClientConfig.java
new file mode 100644
index 0000000..b688ad1
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssClientConfig.java
@@ -0,0 +1,158 @@
+package com.schisandra.oss.application.oss.core.huawei.model;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.obs.services.HttpProxyConfiguration;
+import com.obs.services.ObsConfiguration;
+import com.obs.services.internal.ext.ExtObsConfiguration;
+import com.obs.services.model.AuthTypeEnum;
+import com.obs.services.model.HttpProtocolTypeEnum;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import static com.obs.services.internal.ObsConstraint.*;
+import static com.obs.services.internal.ext.ExtObsConstraint.DEFAULT_MAX_RETRY_ON_UNEXPECTED_END_EXCEPTION;
+import static com.obs.services.internal.ext.ExtObsConstraint.DEFAULT_RETRY_ON_CONNECTION_FAILURE_IN_OKHTTP;
+
+/**
+ * @author landaiqing
+ * @version HuaweiOssClientConfig.java, v 1.0 2022/4/20 16:48 chenmin Exp $
+ * Created on 2022/4/20
+ */
+@Data
+@Accessors(chain = true)
+public class HuaweiOssClientConfig {
+ /**
+ * 建立HTTP/HTTPS连接的超时时间(单位:毫秒)。默认为60000毫秒。
+ */
+ private int connectionTimeout = HTTP_CONNECT_TIMEOUT_VALUE;
+ /**
+ * 如果空闲时间超过此参数的设定值,则关闭连接(单位:毫秒)。默认为30000毫秒。
+ */
+ private int idleConnectionTime = DEFAULT_IDLE_CONNECTION_TIME;
+ /**
+ * 连接池中最大空闲连接数,默认值:1000。
+ */
+ private int maxIdleConnections = DEFAULT_MAX_IDLE_CONNECTIONS;
+ /**
+ * 最大允许的HTTP并发请求数。默认为1000。
+ */
+ private int maxConnections = HTTP_MAX_CONNECT_VALUE;
+ /**
+ * 请求失败(请求异常、服务端报500或503错误等)后最大的重试次数。默认3次。
+ */
+ private int maxErrorRetry = HTTP_RETRY_MAX_VALUE;
+ /**
+ * Socket层传输数据的超时时间(单位:毫秒)。默认为60000毫秒。
+ */
+ private int socketTimeout = HTTP_SOCKET_TIMEOUT_VALUE;
+ /**
+ * 设置HTTP请求的端口号 (默认为80)。
+ */
+ private int endpointHttpPort = HTTP_PORT_VALUE;
+ /**
+ * 设置HTTPS请求的端口号 (默认443)。
+ */
+ private int endpointHttpsPort = HTTPS_PORT_VALUE;
+ /**
+ * 指定是否使用HTTPS连接OBS (默认为 “true”)。
+ */
+ private boolean httpsOnly = true;
+ /**
+ * 指定是否启用对OBS的路径样式访问。“true” 表示启用了路径样式的访问,而 “false” (默认) 表示启用了虚拟托管样式的访问。
+ * 注意: 如果启用了路径样式访问,则不支持OBS 3.0的新bucket功能。
+ */
+ private boolean pathStyle = false;
+ /**
+ * HTTP代理配置。默认为空。
+ */
+ private HttpProxyConfiguration httpProxy;
+ /**
+ * 上传流对象时使用的缓存大小(单位:字节)。默认为512KB。
+ */
+ private int uploadStreamRetryBufferSize;
+ /**
+ * 是否验证服务端证书。默认为false。
+ */
+ private boolean validateCertificate = false;
+ /**
+ * 是否验证响应头信息的ContentType。默认为true。
+ */
+ private boolean verifyResponseContentType = true;
+ /**
+ * 从Socket流下载对象的缓存大小(单位:字节),-1表示不设置缓存。默认为-1。
+ */
+ private int readBufferSize = -1;
+ /**
+ * 上传对象到Socket流时的缓存大小(单位:字节),-1表示不设置缓存。默认为-1。
+ */
+ private int writeBufferSize = -1;
+ /**
+ * 是否严格验证服务端主机名。默认为false。
+ */
+ private boolean isStrictHostnameVerification = false;
+ /**
+ * 设置身份验证类型。
+ */
+ private AuthTypeEnum authType = AuthTypeEnum.OBS;
+ /**
+ * Socket发送缓冲区大小(单位:字节),对应java.net.SocketOptions.SO_SNDBUF参数。默认为-1表示不设置。
+ */
+ private int socketWriteBufferSize = -1;
+ /**
+ * Socket接收缓冲区大小(单位:字节),对应java.net.SocketOptions.SO_RCVBUF参数。默认为-1表示不设置。
+ */
+ private int socketReadBufferSize = -1;
+ /**
+ * 是否使用长连接访问OBS服务。默认为true。
+ */
+ private boolean keepAlive = true;
+ /**
+ * 指定是否使用协议协商。
+ */
+ private boolean authTypeNegotiation = true;
+ /**
+ * 是否通过自定义域名访问OBS服务。默认为false。
+ */
+ private boolean cname = false;
+ /**
+ * 将文件夹隔离器设置为斜线。
+ */
+ private String delimiter = StrUtil.SLASH;
+ /**
+ * SSLContext的Provider,默认使用JDK提供的SSLContext。
+ */
+ private String sslProvider;
+ /**
+ * 访问OBS服务端时使用的HTTP协议类型。默认为HTTP1.1协议。
+ */
+ private HttpProtocolTypeEnum httpProtocolType = HttpProtocolTypeEnum.HTTP1_1;
+
+ /**
+ * 是否开启Okhttp中的连接失败重试,默认关闭
+ */
+ private boolean retryOnConnectionFailureInOkhttp = DEFAULT_RETRY_ON_CONNECTION_FAILURE_IN_OKHTTP;
+ /**
+ * 发生异常时最大重试次数
+ */
+ private int maxRetryOnUnexpectedEndException = DEFAULT_MAX_RETRY_ON_UNEXPECTED_END_EXCEPTION;
+
+ public ObsConfiguration toClientConfig() {
+ ExtObsConfiguration obsConfiguration = new ExtObsConfiguration();
+ BeanUtil.copyProperties(this, obsConfiguration,
+ "readBufferSize", "writeBufferSize", "socketWriteBufferSize", "socketReadBufferSize");
+ if (this.readBufferSize != -1) {
+ obsConfiguration.setReadBufferSize(this.readBufferSize);
+ }
+ if (this.writeBufferSize != -1) {
+ obsConfiguration.setWriteBufferSize(this.writeBufferSize);
+ }
+ if (this.socketWriteBufferSize != -1) {
+ obsConfiguration.setSocketReadBufferSize(this.socketWriteBufferSize);
+ }
+ if (this.socketReadBufferSize != -1) {
+ obsConfiguration.setSocketReadBufferSize(this.socketReadBufferSize);
+ }
+ return obsConfiguration;
+ }
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssConfig.java
new file mode 100644
index 0000000..10174ca
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/huawei/model/HuaweiOssConfig.java
@@ -0,0 +1,41 @@
+package com.schisandra.oss.application.oss.core.huawei.model;
+
+
+import com.schisandra.oss.application.oss.model.SliceConfig;
+import com.schisandra.oss.application.oss.utils.OssPathUtil;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author landaiqing
+ * @version HuaweiOssConfig.java, v 1.1 2022/2/19 18:33 chenmin Exp $
+ * Created on 2022/2/19
+ */
+@Slf4j
+@Data
+public class HuaweiOssConfig {
+
+ private String basePath;
+
+ private String accessKey;
+ private String secretKey;
+ /**
+ * 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。
+ * (出于安全性考虑,建议使用https协议)
+ */
+ private String endPoint;
+ private String bucketName;
+
+ private HuaweiOssClientConfig clientConfig;
+
+ /**
+ * 断点续传参数
+ */
+ private SliceConfig sliceConfig = new SliceConfig();
+
+ public void init() {
+ this.sliceConfig.init();
+ basePath = OssPathUtil.valid(basePath);
+ }
+
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssClient.java
similarity index 55%
rename from schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssClient.java
rename to schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssClient.java
index 4a51eec..506acb1 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/BaiduOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssClient.java
@@ -1,4 +1,4 @@
-package com.schisandra.oss.application.oss.core.baidu;
+package com.schisandra.oss.application.oss.core.jd;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DatePattern;
@@ -10,18 +10,21 @@ import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
-import com.baidubce.services.bos.BosClient;
-import com.baidubce.services.bos.model.*;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.model.*;
+import com.amazonaws.services.s3.transfer.TransferManager;
import com.schisandra.oss.application.oss.constant.OssConstant;
import com.schisandra.oss.application.oss.core.StandardOssClient;
-import com.schisandra.oss.application.oss.core.baidu.model.BaiduOssConfig;
+import com.schisandra.oss.application.oss.core.jd.model.JdOssConfig;
import com.schisandra.oss.application.oss.model.DirectoryOssInfo;
import com.schisandra.oss.application.oss.model.FileOssInfo;
import com.schisandra.oss.application.oss.model.OssInfo;
-import com.schisandra.oss.application.oss.model.SliceConfig;
import com.schisandra.oss.application.oss.model.download.DownloadCheckPoint;
import com.schisandra.oss.application.oss.model.download.DownloadObjectStat;
-import com.schisandra.oss.application.oss.model.upload.*;
+import com.schisandra.oss.application.oss.model.upload.UpLoadCheckPoint;
+import com.schisandra.oss.application.oss.model.upload.UpLoadPartEntityTag;
+import com.schisandra.oss.application.oss.model.upload.UpLoadPartResult;
+import com.schisandra.oss.application.oss.model.upload.UploadPart;
import com.schisandra.oss.application.oss.utils.OssPathUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -35,89 +38,59 @@ import java.util.*;
import java.util.stream.Collectors;
/**
- * https://cloud.baidu.com/doc/BOS/index.html
+ * https://docs.jdcloud.com/cn/object-storage-service/product-overview
*
- * @author 陈敏
- * @version BaiduOssClient.java, v 1.1 2021/11/24 15:34 chenmin Exp $
- * Created on 2021/11/24
+ * @author landaiqing
+ * @version JdOssClient.java, v 1.1 2021/11/25 10:44 chenmin Exp $
+ * Created on 2021/11/25
*/
@Slf4j
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class BaiduOssClient implements StandardOssClient {
+public class JdOssClient implements StandardOssClient {
- public static final String BOS_OBJECT_NAME = "bosClient";
+ public static final String AMAZONS3_OBJECT_NAME = "amazonS3";
+ public static final String TRANSFER_OBJECT_NAME = "transferManager";
- private BosClient bosClient;
- private BaiduOssConfig baiduOssConfig;
+ private AmazonS3 amazonS3;
+ private TransferManager transferManager;
+ private JdOssConfig jdOssConfig;
@Override
public OssInfo upLoad(InputStream is, String targetName, Boolean isOverride) {
- String bucket = getBucket();
+ String bucketName = getBucket();
String key = getKey(targetName, false);
- if (isOverride || !bosClient.doesObjectExist(bucket, key)) {
- bosClient.putObject(bucket, key, is);
+
+ if (isOverride || !amazonS3.doesObjectExist(bucketName, key)) {
+ amazonS3.putObject(bucketName, key, is, new ObjectMetadata());
}
return getInfo(targetName);
}
@Override
public OssInfo upLoadCheckPoint(File file, String targetName) {
- return uploadFile(file, targetName, baiduOssConfig.getSliceConfig(), OssConstant.OssType.BAIDU);
+ return uploadFile(file, targetName, jdOssConfig.getSliceConfig(), OssConstant.OssType.JD);
}
@Override
public void completeUpload(UpLoadCheckPoint upLoadCheckPoint, List partEntityTags) {
List eTags = partEntityTags.stream().sorted(Comparator.comparingInt(UpLoadPartEntityTag::getPartNumber))
- .map(partEntityTag -> {
- PartETag p = new PartETag();
- p.setETag(partEntityTag.getETag());
- p.setPartNumber(partEntityTag.getPartNumber());
- return p;
- }).collect(Collectors.toList());
+ .map(partEntityTag -> new PartETag(partEntityTag.getPartNumber(), partEntityTag.getETag())).collect(Collectors.toList());
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(upLoadCheckPoint.getBucket(), upLoadCheckPoint.getKey(), upLoadCheckPoint.getUploadId(), eTags);
- bosClient.completeMultipartUpload(completeMultipartUploadRequest);
+ amazonS3.completeMultipartUpload(completeMultipartUploadRequest);
+
FileUtil.del(upLoadCheckPoint.getCheckpointFile());
}
- @Override
- public void prepareUpload(UpLoadCheckPoint uploadCheckPoint, File upLoadFile, String targetName, String checkpointFile, SliceConfig slice) {
- String bucket = getBucket();
- String key = getKey(targetName, false);
-
- uploadCheckPoint.setMagic(UpLoadCheckPoint.UPLOAD_MAGIC);
- uploadCheckPoint.setUploadFile(upLoadFile.getPath());
- uploadCheckPoint.setKey(key);
- uploadCheckPoint.setBucket(bucket);
- uploadCheckPoint.setCheckpointFile(checkpointFile);
- uploadCheckPoint.setUploadFileStat(UpLoadFileStat.getFileStat(uploadCheckPoint.getUploadFile()));
-
- long partSize = slice.getPartSize();
- long fileLength = upLoadFile.length();
- int parts = (int) (fileLength / partSize);
- if (fileLength % partSize > 0) {
- parts++;
- }
-
- uploadCheckPoint.setUploadParts(splitUploadFile(uploadCheckPoint.getUploadFileStat().getSize(), partSize));
- uploadCheckPoint.setPartEntityTags(new ArrayList<>());
- uploadCheckPoint.setOriginPartSize(parts);
-
- InitiateMultipartUploadResponse initiateMultipartUploadResponse =
- bosClient.initiateMultipartUpload(new InitiateMultipartUploadRequest(bucket, key));
-
- uploadCheckPoint.setUploadId(initiateMultipartUploadResponse.getUploadId());
- }
-
@Override
public UpLoadPartResult uploadPart(UpLoadCheckPoint upLoadCheckPoint, int partNum, InputStream inputStream) {
+ UpLoadPartResult partResult = null;
UploadPart uploadPart = upLoadCheckPoint.getUploadParts().get(partNum);
long partSize = uploadPart.getSize();
- UpLoadPartResult partResult = new UpLoadPartResult(partNum + 1, uploadPart.getOffset(), partSize);
-
+ partResult = new UpLoadPartResult(partNum + 1, uploadPart.getOffset(), partSize);
try {
inputStream.skip(uploadPart.getOffset());
@@ -127,12 +100,13 @@ public class BaiduOssClient implements StandardOssClient {
uploadPartRequest.setUploadId(upLoadCheckPoint.getUploadId());
uploadPartRequest.setInputStream(inputStream);
uploadPartRequest.setPartSize(partSize);
- uploadPartRequest.setPartNumber(partNum + 1);
- UploadPartResponse uploadPartResponse = bosClient.uploadPart(uploadPartRequest);
+ uploadPartRequest.setPartNumber(uploadPart.getNumber());
+
+ UploadPartResult uploadPartResponse = amazonS3.uploadPart(uploadPartRequest);
partResult.setNumber(uploadPartResponse.getPartNumber());
- PartETag eTag = uploadPartResponse.getPartETag();
- partResult.setEntityTag(new UpLoadPartEntityTag().setETag(eTag.getETag()).setPartNumber(eTag.getPartNumber()));
+ partResult.setEntityTag(new UpLoadPartEntityTag().setETag(uploadPartResponse.getETag())
+ .setPartNumber(uploadPartResponse.getPartNumber()));
} catch (Exception e) {
partResult.setFailed(true);
partResult.setException(e);
@@ -145,18 +119,18 @@ public class BaiduOssClient implements StandardOssClient {
@Override
public void downLoad(OutputStream os, String targetName) {
- BosObject bosObject = bosClient.getObject(getBucket(), getKey(targetName, false));
- IoUtil.copy(bosObject.getObjectContent(), os);
+ S3Object s3Object = amazonS3.getObject(getBucket(), getKey(targetName, false));
+ IoUtil.copy(s3Object.getObjectContent(), os);
}
@Override
public void downLoadCheckPoint(File localFile, String targetName) {
- downLoadFile(localFile, targetName, baiduOssConfig.getSliceConfig(), OssConstant.OssType.BAIDU);
+ downLoadFile(localFile, targetName, jdOssConfig.getSliceConfig(), OssConstant.OssType.BAIDU);
}
@Override
public DownloadObjectStat getDownloadObjectStat(String targetName) {
- ObjectMetadata objectMetadata = bosClient.getObjectMetadata(getBucket(), getKey(targetName, false));
+ ObjectMetadata objectMetadata = amazonS3.getObjectMetadata(getBucket(), getKey(targetName, false));
DateTime date = DateUtil.date(objectMetadata.getLastModified());
long contentLength = objectMetadata.getContentLength();
String eTag = objectMetadata.getETag();
@@ -175,11 +149,12 @@ public class BaiduOssClient implements StandardOssClient {
long downloadSize;
if (downloadCheckPoint.getObjectStat().getSize() > 0) {
- Long partSize = baiduOssConfig.getSliceConfig().getPartSize();
+ Long partSize = jdOssConfig.getSliceConfig().getPartSize();
long[] slice = getDownloadSlice(new long[0], downloadCheckPoint.getObjectStat().getSize());
downloadCheckPoint.setDownloadParts(splitDownloadFile(slice[0], slice[1], partSize));
downloadSize = slice[1];
} else {
+ //download whole file
downloadSize = 0;
downloadCheckPoint.setDownloadParts(splitDownloadOneFile());
}
@@ -189,25 +164,23 @@ public class BaiduOssClient implements StandardOssClient {
@Override
public InputStream downloadPart(String key, long start, long end) {
- GetObjectRequest request = new GetObjectRequest();
- request.setKey(key);
- request.setBucketName(getBucket());
+ GetObjectRequest request = new GetObjectRequest(getBucket(), key);
request.setRange(start, end);
- BosObject object = bosClient.getObject(request);
+ S3Object object = amazonS3.getObject(request);
return object.getObjectContent();
}
@Override
public void delete(String targetName) {
- bosClient.deleteObject(getBucket(), getKey(targetName, false));
+ amazonS3.deleteObject(getBucket(), getKey(targetName, false));
}
@Override
public void copy(String sourceName, String targetName, Boolean isOverride) {
- String bucket = getBucket();
- String newTargetName = getKey(targetName, false);
- if (isOverride || !bosClient.doesObjectExist(bucket, newTargetName)) {
- bosClient.copyObject(bucket, getKey(sourceName, false), bucket, newTargetName);
+ String bucketName = getBucket();
+ String targetKey = getKey(targetName, false);
+ if (isOverride || !amazonS3.doesObjectExist(bucketName, targetKey)) {
+ amazonS3.copyObject(getBucket(), getKey(sourceName, false), getBucket(), targetKey);
}
}
@@ -221,30 +194,26 @@ public class BaiduOssClient implements StandardOssClient {
if (isRecursion && isDirectory(key)) {
String prefix = OssPathUtil.convertPath(key, false);
- ListObjectsResponse listObjects = bosClient.listObjects(getBucket(), prefix.endsWith(StrUtil.SLASH) ? prefix : prefix + StrUtil.SLASH);
+ ObjectListing listObjects = amazonS3.listObjects(getBucket(), prefix.endsWith(StrUtil.SLASH) ? prefix : prefix + StrUtil.SLASH);
List fileOssInfos = new ArrayList<>();
List directoryInfos = new ArrayList<>();
- if (ObjectUtil.isNotEmpty(listObjects.getContents())) {
- for (BosObjectSummary bosObjectSummary : listObjects.getContents()) {
- if (FileNameUtil.getName(bosObjectSummary.getKey()).equals(FileNameUtil.getName(key))) {
- ossInfo.setLastUpdateTime(DateUtil.date(bosObjectSummary.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
- ossInfo.setCreateTime(DateUtil.date(bosObjectSummary.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
- ossInfo.setLength(Convert.toStr(bosObjectSummary.getSize()));
- } else {
- fileOssInfos.add(getInfo(OssPathUtil.replaceKey(bosObjectSummary.getKey(), getBasePath(), false), false));
- }
+ for (S3ObjectSummary s3ObjectSummary : listObjects.getObjectSummaries()) {
+ if (FileNameUtil.getName(s3ObjectSummary.getKey()).equals(FileNameUtil.getName(key))) {
+ ossInfo.setLastUpdateTime(DateUtil.date(s3ObjectSummary.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setCreateTime(DateUtil.date(s3ObjectSummary.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
+ ossInfo.setLength(Convert.toStr(s3ObjectSummary.getSize()));
+ } else {
+ fileOssInfos.add(getInfo(OssPathUtil.replaceKey(s3ObjectSummary.getKey(), getBasePath(), false), false));
}
}
- if (ObjectUtil.isNotEmpty(listObjects.getCommonPrefixes())) {
- for (String commonPrefix : listObjects.getCommonPrefixes()) {
- String target = OssPathUtil.replaceKey(commonPrefix, getBasePath(), false);
- if (isDirectory(commonPrefix)) {
- directoryInfos.add(getInfo(target, true));
- } else {
- fileOssInfos.add(getInfo(target, false));
- }
+ for (String commonPrefix : listObjects.getCommonPrefixes()) {
+ String target = OssPathUtil.replaceKey(commonPrefix, getBasePath(), false);
+ if (isDirectory(commonPrefix)) {
+ directoryInfos.add(getInfo(target, true));
+ } else {
+ fileOssInfos.add(getInfo(target, false));
}
}
if (ObjectUtil.isNotEmpty(fileOssInfos) && fileOssInfos.get(0) instanceof FileOssInfo) {
@@ -260,27 +229,28 @@ public class BaiduOssClient implements StandardOssClient {
@Override
public Boolean isExist(String targetName) {
- return bosClient.doesObjectExist(getBucket(), getKey(targetName, false));
+ return amazonS3.doesObjectExist(getBucket(), getKey(targetName, false));
}
@Override
public String getBasePath() {
- return baiduOssConfig.getBasePath();
+ return jdOssConfig.getBasePath();
}
@Override
public Map getClientObject() {
return new HashMap() {
{
- put(BOS_OBJECT_NAME, getBosClient());
+ put(AMAZONS3_OBJECT_NAME, getAmazonS3());
+ put(TRANSFER_OBJECT_NAME, getTransferManager());
}
};
}
private String getBucket() {
- String bucketName = baiduOssConfig.getBucketName();
- if (!bosClient.doesBucketExist(bucketName)) {
- bosClient.createBucket(bucketName);
+ String bucketName = jdOssConfig.getBucketName();
+ if (!amazonS3.doesBucketExistV2(bucketName)) {
+ amazonS3.createBucket(bucketName);
}
return bucketName;
}
@@ -291,7 +261,7 @@ public class BaiduOssClient implements StandardOssClient {
if (isFile(key)) {
ossInfo = new FileOssInfo();
try {
- ObjectMetadata objectMetadata = bosClient.getObjectMetadata(getBucket(), key);
+ ObjectMetadata objectMetadata = amazonS3.getObjectMetadata(getBucket(), OssPathUtil.replaceKey(key, "", false));
ossInfo.setLastUpdateTime(DateUtil.date(objectMetadata.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
ossInfo.setCreateTime(DateUtil.date(objectMetadata.getLastModified()).toString(DatePattern.NORM_DATETIME_PATTERN));
ossInfo.setLength(Convert.toStr(objectMetadata.getContentLength()));
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssConfiguration.java
new file mode 100644
index 0000000..840bcec
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/JdOssConfiguration.java
@@ -0,0 +1,100 @@
+package com.schisandra.oss.application.oss.core.jd;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.amazonaws.ClientConfiguration;
+import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.AWSCredentialsProvider;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.client.builder.AwsClientBuilder;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3Client;
+import com.amazonaws.services.s3.transfer.TransferManager;
+import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
+import com.schisandra.oss.application.convert.SchisandraOssJdDTOConverter;
+import com.schisandra.oss.application.dto.SchisandraOssJdDTO;
+import com.schisandra.oss.application.oss.core.StandardOssClient;
+import com.schisandra.oss.application.oss.core.jd.model.JdOssClientConfig;
+import com.schisandra.oss.application.oss.core.jd.model.JdOssConfig;
+import com.schisandra.oss.domain.bo.SchisandraOssJdBO;
+import com.schisandra.oss.domain.service.SchisandraOssJdDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Optional;
+
+/**
+ * @author landaiqing
+ * @version JdOssConfiguration.java, v 1.1 2021/11/25 10:44 chenmin Exp $
+ * Created on 2021/11/25
+ */
+@Component
+@Slf4j
+public class JdOssConfiguration {
+
+
+ @Resource
+ private SchisandraOssJdDomainService schisandraOssJdDomainService;
+
+ public StandardOssClient jdOssClient(String userId) {
+ SchisandraOssJdBO schisandraOssJdBO = schisandraOssJdDomainService.getJdOssConfig(userId);
+ SchisandraOssJdDTO schisandraOssJdDTO = SchisandraOssJdDTOConverter.INSTANCE.convertBOToDTO(schisandraOssJdBO);
+ if (ObjectUtil.isEmpty(schisandraOssJdDTO)) {
+ log.error("jd oss配置信息获取失败");
+ return null;
+ }
+ String endpoint = schisandraOssJdDTO.getEndpoint();
+ String accessKey = schisandraOssJdDTO.getAccessKey();
+ String secretKey = schisandraOssJdDTO.getSecretKey();
+ String region = schisandraOssJdDTO.getRegion();
+ JdOssConfig jdOssConfig = new JdOssConfig();
+ jdOssConfig.setEndpoint(endpoint);
+ jdOssConfig.setAccessKey(accessKey);
+ jdOssConfig.setSecretKey(secretKey);
+ jdOssConfig.setRegion(region);
+ return jdOssClient(jdOssConfig);
+ }
+
+ private StandardOssClient jdOssClient(JdOssConfig jdOssConfig) {
+ JdOssClientConfig clientConfig = Optional.ofNullable(jdOssConfig.getClientConfig()).orElse(new JdOssClientConfig());
+ AwsClientBuilder.EndpointConfiguration endpointConfig = endpointConfig(jdOssConfig);
+ AWSCredentials awsCredentials = awsCredentials(jdOssConfig);
+ AWSCredentialsProvider awsCredentialsProvider = awsCredentialsProvider(awsCredentials);
+ AmazonS3 amazonS3 = amazonS3(endpointConfig, clientConfig.toClientConfig(), awsCredentialsProvider);
+ TransferManager transferManager = transferManager(amazonS3);
+ return jdOssClient(amazonS3, transferManager, jdOssConfig);
+ }
+
+ public StandardOssClient jdOssClient(AmazonS3 amazonS3, TransferManager transferManager, JdOssConfig jdOssConfig) {
+ return new JdOssClient(amazonS3, transferManager, jdOssConfig);
+ }
+
+ public AwsClientBuilder.EndpointConfiguration endpointConfig(JdOssConfig jdOssConfig) {
+ return new AwsClientBuilder.EndpointConfiguration(jdOssConfig.getEndpoint(), jdOssConfig.getRegion());
+ }
+
+ public AWSCredentials awsCredentials(JdOssConfig jdOssConfig) {
+ return new BasicAWSCredentials(jdOssConfig.getAccessKey(), jdOssConfig.getSecretKey());
+ }
+
+ public AWSCredentialsProvider awsCredentialsProvider(AWSCredentials awsCredentials) {
+ return new AWSStaticCredentialsProvider(awsCredentials);
+ }
+
+ public AmazonS3 amazonS3(AwsClientBuilder.EndpointConfiguration endpointConfig, ClientConfiguration clientConfig,
+ AWSCredentialsProvider awsCredentialsProvider) {
+ return AmazonS3Client.builder()
+ .withEndpointConfiguration(endpointConfig)
+ .withClientConfiguration(clientConfig)
+ .withCredentials(awsCredentialsProvider)
+ .disableChunkedEncoding()
+ .build();
+ }
+
+ public TransferManager transferManager(AmazonS3 amazonS3) {
+ return TransferManagerBuilder.standard()
+ .withS3Client(amazonS3)
+ .build();
+ }
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssClientConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssClientConfig.java
new file mode 100644
index 0000000..5843222
--- /dev/null
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssClientConfig.java
@@ -0,0 +1,181 @@
+package com.schisandra.oss.application.oss.core.jd.model;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.amazonaws.ClientConfiguration;
+import com.amazonaws.Protocol;
+import com.amazonaws.retry.RetryMode;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.amazonaws.ClientConfiguration.*;
+
+/**
+ * @author landaiqing
+ * @version JdOssClientConfig.java, v 1.0 2022/4/20 17:19 chenmin Exp $
+ * Created on 2022/4/20
+ */
+@Data
+@Accessors(chain = true)
+public class JdOssClientConfig {
+ /**
+ * 建立连接的超时时间(单位:毫秒)。默认为50000毫秒
+ */
+ private int connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
+ /**
+ * 允许打开的最大HTTP连接数。默认为1024
+ */
+ private int maxConnections = DEFAULT_MAX_CONNECTIONS;
+ /**
+ * 请求失败后最大的重试次数
+ */
+ private int maxErrorRetry = -1;
+ /**
+ * 是否限制重试的默认值。
+ */
+ private boolean throttleRetries = DEFAULT_THROTTLE_RETRIES;
+ /**
+ * 连接协议类型
+ */
+ private Protocol protocol = Protocol.HTTPS;
+ /**
+ * 连接到HTTP代理时要使用的协议。
+ */
+ private Protocol proxyProtocol = Protocol.HTTP;
+ /**
+ * 访问NTLM验证的代理服务器的Windows域名
+ */
+ private String proxyDomain;
+ /**
+ * 代理服务器主机地址
+ */
+ private String proxyHost;
+ /**
+ * 代理服务器验证的密码
+ */
+ private String proxyPassword;
+ /**
+ * 代理服务器端口
+ */
+ private int proxyPort = -1;
+ /**
+ * 代理服务器验证的用户名
+ */
+ private String proxyUsername;
+ /**
+ * NTLM代理服务器的Windows工作站名称
+ */
+ private String proxyWorkstation;
+ /**
+ * 指定不通过代理应访问的主机。
+ */
+ private String nonProxyHosts;
+ /**
+ * 是否禁用Socket代理
+ */
+ private boolean disableSocketProxy = DEFAULT_DISABLE_SOCKET_PROXY;
+ /**
+ * 是否使用基本身份验证对代理服务器进行抢先身份验证
+ */
+ private boolean preemptiveBasicProxyAuth;
+ /**
+ * Socket层传输数据的超时时间(单位:毫秒)。默认为50000毫秒
+ */
+ private int socketTimeout = DEFAULT_SOCKET_TIMEOUT;
+ /**
+ * 请求的默认超时时间。默认为0,禁用的。
+ */
+ private int requestTimeout = DEFAULT_REQUEST_TIMEOUT;
+ /**
+ * 请求的默认超时时间。默认为0,禁用的。
+ */
+ private int clientExecutionTimeout = DEFAULT_CLIENT_EXECUTION_TIMEOUT;
+ /**
+ * 公共HTTP请求头前缀。
+ */
+ private String userAgentPrefix = DEFAULT_USER_AGENT;
+ /**
+ * 公共HTTP请求头后缀。
+ */
+ private String userAgentSuffix;
+ /**
+ * 是否使用com.amazonaws.http.IdleConnectionReaper管理旧连接
+ */
+ private boolean useReaper = DEFAULT_USE_REAPER;
+ /**
+ * 是否使用gzip解压缩
+ */
+ private boolean useGzip = DEFAULT_USE_GZIP;
+ /**
+ * Socket发送缓冲区的大小提示(以字节为单位)。
+ */
+ private int socketSendBufferSizeHint = 0;
+ /**
+ * Socket接收缓冲区的大小提示(以字节为单位)。
+ */
+ private int socketReceiveBufferSizeHint = 0;
+ /**
+ * 设置签名算法对请求进行签名。如果未明确设置,客户端将通过提取SDK中的配置文件来确定要使用的算法
+ */
+ private String signerOverride;
+ /**
+ * 响应元数据缓存大小
+ */
+ private int responseMetadataCacheSize = DEFAULT_RESPONSE_METADATA_CACHE_SIZE;
+ /**
+ * 是否使用USE_EXPECT_CONTINUE作为期望值
+ */
+ private boolean useExpectContinue = DEFAULT_USE_EXPECT_CONTINUE;
+ /**
+ * 是否缓存响应元数据
+ */
+ private boolean cacheResponseMetadata = DEFAULT_CACHE_RESPONSE_METADATA;
+ /**
+ * 连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。
+ */
+ private long connectionTTL = DEFAULT_CONNECTION_TTL;
+ /**
+ * 连接池中连接的最大空闲时间 (以毫秒为单位)。
+ */
+ private long connectionMaxIdleMillis = DEFAULT_CONNECTION_MAX_IDLE_MILLIS;
+ /**
+ * 在必须验证连接是否仍处于打开状态之前,连接可以在连接池中处于空闲状态。
+ */
+ private int validateAfterInactivityMillis = DEFAULT_VALIDATE_AFTER_INACTIVITY_MILLIS;
+ /**
+ * 是否使用TCP KeepAlive的默认值。
+ */
+ private boolean tcpKeepAlive = DEFAULT_TCP_KEEP_ALIVE;
+ /**
+ * 所有请求的公共请求头
+ */
+ private Map headers = new HashMap<>();
+ /**
+ * 请求失败最大重试次数
+ */
+ private int maxConsecutiveRetriesBeforeThrottling = DEFAULT_MAX_CONSECUTIVE_RETRIES_BEFORE_THROTTLING;
+ /**
+ * 是否禁用主机前缀
+ */
+ private boolean disableHostPrefixInjection;
+ /**
+ * 重试模式
+ */
+ private RetryMode retryMode;
+
+ public ClientConfiguration toClientConfig() {
+ ClientConfiguration clientConfiguration = new ClientConfiguration();
+ BeanUtil.copyProperties(this, clientConfiguration,
+ "maxErrorRetry", "proxyPort");
+ if (this.maxErrorRetry != -1) {
+ clientConfiguration.setMaxErrorRetry(this.maxErrorRetry);
+ }
+ if (this.proxyPort != -1) {
+ clientConfiguration.setProxyPort(this.proxyPort);
+ }
+ return clientConfiguration;
+ }
+
+}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssConfig.java
similarity index 57%
rename from schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssConfig.java
rename to schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssConfig.java
index d012d2a..ed000a0 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/baidu/model/BaiduOssConfig.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/jd/model/JdOssConfig.java
@@ -1,26 +1,28 @@
-package com.schisandra.oss.application.oss.core.baidu.model;
+package com.schisandra.oss.application.oss.core.jd.model;
import com.schisandra.oss.application.oss.model.SliceConfig;
import com.schisandra.oss.application.oss.utils.OssPathUtil;
import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
/**
- * @author 陈敏
- * @version BaiduOssConfig.java, v 1.1 2022/2/19 18:25 chenmin Exp $
+ * @author landaiqing
+ * @version JdOssConfig.java, v 1.1 2022/2/19 18:36 chenmin Exp $
* Created on 2022/2/19
*/
-@Slf4j
@Data
-public class BaiduOssConfig {
+public class JdOssConfig {
private String basePath;
- private String bucketName;
- private String accessKeyId;
- private String secretAccessKey;
- private BaiduOssClientConfig clientConfig;
+ private String bucketName;
+ private String endpoint;
+ private String accessKey;
+ private String secretKey;
+
+ private String region;
+
+ private JdOssClientConfig clientConfig;
/**
* 断点续传参数
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
index 1aacc77..79371c5 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
@@ -28,9 +28,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Headers;
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.springframework.context.annotation.Scope;
-import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import java.io.File;
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java
index e64035a..7d276a7 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java
@@ -8,7 +8,6 @@ import com.schisandra.oss.application.oss.core.StandardOssClient;
import com.schisandra.oss.application.oss.core.minio.model.MinioOssClientConfig;
import com.schisandra.oss.application.oss.core.minio.model.MinioOssConfig;
import com.schisandra.oss.common.entity.Result;
-import com.schisandra.oss.common.redis.RedisUtil;
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
import io.minio.MinioClient;
@@ -29,8 +28,6 @@ import java.util.concurrent.TimeUnit;
@Slf4j
public class MinioOssConfiguration {
- @Resource
- private RedisUtil redisUtil;
@Resource
MinioOssConfiguration minioOssConfiguration;
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/pom.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/pom.xml
index 727f363..5f31090 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/pom.xml
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/pom.xml
@@ -111,5 +111,44 @@
thumbnailator
0.4.8
+
+ commons-net
+ commons-net
+ 3.8.0
+
+
+
+ io.minio
+ minio
+ 8.2.1
+
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ 3.14.0
+
+
+
+
+ software.amazon.awssdk
+ s3
+ 2.17.160
+
+
+
+
+ com.huaweicloud
+ esdk-obs-java-bundle
+ 3.21.11
+
+
+
+
+ com.amazonaws
+ aws-java-sdk-s3
+ 1.12.167
+
+
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/redis/RedisUtil.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/redis/RedisUtil.java
index 357110d..f8b46cb 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/redis/RedisUtil.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/redis/RedisUtil.java
@@ -1,6 +1,5 @@
package com.schisandra.oss.common.redis;
-import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@@ -58,6 +57,7 @@ public class RedisUtil {
public void setJson(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
+
public HashMap getJson(String key) {
return (HashMap) redisTemplate.opsForValue().get(key);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/utils/ImageUtil.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/utils/ImageUtil.java
deleted file mode 100644
index b1a9563..0000000
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-common/src/main/java/com/schisandra/oss/common/utils/ImageUtil.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package com.schisandra.oss.common.utils;
-
-import net.coobird.thumbnailator.Thumbnails;
-import net.coobird.thumbnailator.geometry.Positions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.font.FontRenderContext;
-import java.awt.font.TextAttribute;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.AttributedCharacterIterator;
-import java.text.AttributedString;
-
-/**
- * 图像工具类
- */
-public class ImageUtil {
- private static final Logger log = LoggerFactory.getLogger(ImageUtil.class);
- //压缩率
- private static final transient float IMAGE_RATIO = 0.1f;
- //压缩最大宽度
- private static final transient int IMAGE_WIDTH = 800;
- // 水印透明度
- private static float alpha = 0.3f;
- // 水印文字字体
- private static Font font = new Font("PingFang SC Regular", Font.PLAIN, 36);
- // 水印文字颜色
- private static Color color = new Color(111, 111, 111);
- //水印文字内容
- private static final String text = "这是一个水印文本";
- // 水印之间的间隔
- private static final int XMOVE = 80;
- // 水印之间的间隔
- private static final int YMOVE = 80;
-
- /**
- * 压缩图像
- *
- * @param image
- * @return
- * @throws IOException
- */
- public static BufferedImage compress(BufferedImage image) throws IOException {
- Thumbnails.Builder imageBuilder = Thumbnails.of(image).outputQuality(IMAGE_RATIO);
- if (image.getWidth() > IMAGE_WIDTH) {
- return imageBuilder.width(IMAGE_WIDTH).asBufferedImage();
- } else {
- return imageBuilder.scale(1).asBufferedImage();
- }
- }
-
- /**
- * 图像添加水印
- *
- * @param
- * @return
- */
- public static BufferedImage setWatermark(BufferedImage image) throws IOException {
- return Thumbnails.of(image)
- .outputQuality(IMAGE_RATIO)
- .scale(1)
- .watermark(Positions.BOTTOM_RIGHT
- , createWatermark(text
- , image.getWidth()
- , image.getHeight()
- )
- , alpha)
- .asBufferedImage();
- }
-
- /**
- * 根据文件扩展名判断文件是否图片格式
- *
- * @return
- */
- public static boolean isImage(String fileName) {
- String[] imageExtension = new String[]{"jpeg", "jpg", "gif", "bmp", "png"};
-
- for (String e : imageExtension) if (getFileExtention(fileName).toLowerCase().equals(e)) return true;
-
- return false;
- }
-
- /**
- * 获取文件后缀名称
- *
- * @param fileName
- * @return
- */
- public static String getFileExtention(String fileName) {
- String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
- return extension;
- }
-
- /**
- * 根据图片对象获取对应InputStream
- *
- * @param image
- * @param readImageFormat
- * @return
- * @throws IOException
- */
- public static InputStream getInputStream(BufferedImage image, String readImageFormat) throws IOException {
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- ImageIO.write(image, readImageFormat, os);
- InputStream is = new ByteArrayInputStream(os.toByteArray());
- os.close();
- return is;
- }
-
- /**
- * 创建水印图片
- *
- * @param text 水印文字
- * @param width 图片宽
- * @param height 图片高
- * @return
- */
- public static BufferedImage createWatermark(String text, int width, int height) {
- BufferedImage image = new BufferedImage(width
- , height, BufferedImage.TYPE_INT_RGB);
- // 2.获取图片画笔
- Graphics2D g = image.createGraphics();
- // ---------- 增加下面的代码使得背景透明 -----------------
- image = g.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
- g.dispose();
- g = image.createGraphics();
- // ---------- 背景透明代码结束 -----------------
- // 6、处理文字
- AttributedString ats = new AttributedString(text);
- ats.addAttribute(TextAttribute.FONT, font, 0, text.length());
- AttributedCharacterIterator iter = ats.getIterator();
- // 7、设置对线段的锯齿状边缘处理
- g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- // 8、设置水印旋转
- g.rotate(Math.toRadians(-30));
- // 9、设置水印文字颜色
- g.setColor(color);
- // 10、设置水印文字Font
- g.setFont(font);
- // 11、设置水印文字透明度
- g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
- g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
- /**
- * 水印铺满图片
- * 计算水印位置
- */
- int x = -width / 2;
- int y = -height / 2;
- int[] arr = getWidthAndHeight(text, font);
- int markWidth = arr[0];// 字体长度
- int markHeight = arr[1];// 字体高度
- // 循环添加水印
- while (x < width * 1.5) {
- y = -height / 2;
- while (y < height * 1.5) {
- g.drawString(text, x, y);
-
- y += markHeight + YMOVE;
- }
- x += markWidth + XMOVE;
- }
- // 13、释放资源
- g.dispose();
- return image;
- }
-
- /**
- * 计算字体宽度及高度
- *
- * @param text
- * @param font
- * @return
- */
- private static int[] getWidthAndHeight(String text, Font font) {
- Rectangle2D r = font.getStringBounds(text, new FontRenderContext(
- AffineTransform.getScaleInstance(1, 1), false, false));
- int unitHeight = (int) Math.floor(r.getHeight());//
- // 获取整个str用了font样式的宽度这里用四舍五入后+1保证宽度绝对能容纳这个字符串作为图片的宽度
- int width = (int) Math.round(r.getWidth()) + 1;
- // 把单个字符的高度+3保证高度绝对能容纳字符串作为图片的高度
- int height = unitHeight + 3;
- return new int[]{width, height};
- }
-}
\ No newline at end of file
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssHuaweiDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssHuaweiDomainService.java
index da2d39f..a3758b0 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssHuaweiDomainService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssHuaweiDomainService.java
@@ -25,4 +25,5 @@ public interface SchisandraOssHuaweiDomainService {
*/
Boolean delete(SchisandraOssHuaweiBO schisandraOssHuaweiBO);
+ SchisandraOssHuaweiBO getHuaweiOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdDomainService.java
index e65db13..a41c534 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdDomainService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdDomainService.java
@@ -25,4 +25,5 @@ public interface SchisandraOssJdDomainService {
*/
Boolean delete(SchisandraOssJdBO schisandraOssJdBO);
+ SchisandraOssJdBO getJdOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdbcDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdbcDomainService.java
index ea8d42a..63d4993 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdbcDomainService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssJdbcDomainService.java
@@ -25,4 +25,5 @@ public interface SchisandraOssJdbcDomainService {
*/
Boolean delete(SchisandraOssJdbcBO schisandraOssJdbcBO);
+ SchisandraOssJdbcBO getJdbcOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssHuaweiDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssHuaweiDomainServiceImpl.java
index c661f66..40c6ed7 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssHuaweiDomainServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssHuaweiDomainServiceImpl.java
@@ -1,8 +1,8 @@
package com.schisandra.oss.domain.service.impl;
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
-import com.schisandra.oss.domain.convert.SchisandraOssHuaweiBOConverter;
import com.schisandra.oss.domain.bo.SchisandraOssHuaweiBO;
+import com.schisandra.oss.domain.convert.SchisandraOssHuaweiBOConverter;
import com.schisandra.oss.domain.service.SchisandraOssHuaweiDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraOssHuawei;
import com.schisandra.oss.infra.basic.service.SchisandraOssHuaweiService;
@@ -45,4 +45,11 @@ public class SchisandraOssHuaweiDomainServiceImpl implements SchisandraOssHuawei
return schisandraOssHuaweiService.update(schisandraOssHuawei) > 0;
}
+ @Override
+ public SchisandraOssHuaweiBO getHuaweiOssConfig(String userId) {
+ SchisandraOssHuawei schisandraOssHuawei = schisandraOssHuaweiService.getHuaweiOssConfig(userId);
+ SchisandraOssHuaweiBO schisandraOssHuaweiBO = SchisandraOssHuaweiBOConverter.INSTANCE.convertEntityToBO(schisandraOssHuawei);
+ return schisandraOssHuaweiBO;
+ }
+
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdDomainServiceImpl.java
index 06e4a9a..c7c79b1 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdDomainServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdDomainServiceImpl.java
@@ -1,8 +1,8 @@
package com.schisandra.oss.domain.service.impl;
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
-import com.schisandra.oss.domain.convert.SchisandraOssJdBOConverter;
import com.schisandra.oss.domain.bo.SchisandraOssJdBO;
+import com.schisandra.oss.domain.convert.SchisandraOssJdBOConverter;
import com.schisandra.oss.domain.service.SchisandraOssJdDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraOssJd;
import com.schisandra.oss.infra.basic.service.SchisandraOssJdService;
@@ -45,4 +45,11 @@ public class SchisandraOssJdDomainServiceImpl implements SchisandraOssJdDomainSe
return schisandraOssJdService.update(schisandraOssJd) > 0;
}
+ @Override
+ public SchisandraOssJdBO getJdOssConfig(String userId) {
+ SchisandraOssJd schisandraOssJd = schisandraOssJdService.getJdOssConfig(userId);
+ SchisandraOssJdBO schisandraOssJdBO = SchisandraOssJdBOConverter.INSTANCE.convertEntityToBO(schisandraOssJd);
+ return schisandraOssJdBO;
+ }
+
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdbcDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdbcDomainServiceImpl.java
index c563dc7..ef78712 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdbcDomainServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssJdbcDomainServiceImpl.java
@@ -1,8 +1,8 @@
package com.schisandra.oss.domain.service.impl;
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
-import com.schisandra.oss.domain.convert.SchisandraOssJdbcBOConverter;
import com.schisandra.oss.domain.bo.SchisandraOssJdbcBO;
+import com.schisandra.oss.domain.convert.SchisandraOssJdbcBOConverter;
import com.schisandra.oss.domain.service.SchisandraOssJdbcDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraOssJdbc;
import com.schisandra.oss.infra.basic.service.SchisandraOssJdbcService;
@@ -45,4 +45,11 @@ public class SchisandraOssJdbcDomainServiceImpl implements SchisandraOssJdbcDoma
return schisandraOssJdbcService.update(schisandraOssJdbc) > 0;
}
+ @Override
+ public SchisandraOssJdbcBO getJdbcOssConfig(String userId) {
+ SchisandraOssJdbc schisandraOssJdbc = schisandraOssJdbcService.getJdbcOssConfig(userId);
+ SchisandraOssJdbcBO schisandraOssJdbcBO = SchisandraOssJdbcBOConverter.INSTANCE.convertEntityToBO(schisandraOssJdbc);
+ return schisandraOssJdbcBO;
+ }
+
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/dao/SchisandraOssAliDao.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/dao/SchisandraOssAliDao.java
index ce28ae1..444c3c0 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/dao/SchisandraOssAliDao.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/dao/SchisandraOssAliDao.java
@@ -1,13 +1,12 @@
package com.schisandra.oss.infra.basic.dao;
-
- import com.mybatisflex.core.BaseMapper;
- import com.schisandra.oss.infra.basic.entity.SchisandraOssAli;
- import org.springframework.stereotype.Repository;
+import com.mybatisflex.core.BaseMapper;
+import com.schisandra.oss.infra.basic.entity.SchisandraOssAli;
+import org.springframework.stereotype.Repository;
/**
- * 表数据库访问层
+ * 表数据库访问层
*
* @author landaiqing
* @since 2024-05-14 20:10:20
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssHuaweiService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssHuaweiService.java
index 708a0ab..f148aab 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssHuaweiService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssHuaweiService.java
@@ -43,4 +43,5 @@ public interface SchisandraOssHuaweiService {
boolean deleteById(Long id);
+ SchisandraOssHuawei getHuaweiOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdService.java
index 2ab913f..3bd7516 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdService.java
@@ -43,4 +43,5 @@ public interface SchisandraOssJdService {
boolean deleteById(Long id);
+ SchisandraOssJd getJdOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdbcService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdbcService.java
index cc5e88f..df06566 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdbcService.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssJdbcService.java
@@ -43,4 +43,5 @@ public interface SchisandraOssJdbcService {
boolean deleteById(Long id);
+ SchisandraOssJdbc getJdbcOssConfig(String userId);
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssHuaweiServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssHuaweiServiceImpl.java
index b244f5d..fae5c2f 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssHuaweiServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssHuaweiServiceImpl.java
@@ -1,7 +1,8 @@
package com.schisandra.oss.infra.basic.service.impl;
-import com.schisandra.oss.infra.basic.entity.SchisandraOssHuawei;
import com.schisandra.oss.infra.basic.dao.SchisandraOssHuaweiDao;
+import com.schisandra.oss.infra.basic.entity.SchisandraOssHuawei;
+import com.schisandra.oss.infra.basic.entity.table.SchisandraOssHuaweiTableDef;
import com.schisandra.oss.infra.basic.service.SchisandraOssHuaweiService;
import org.springframework.stereotype.Service;
@@ -38,7 +39,7 @@ public class SchisandraOssHuaweiServiceImpl implements SchisandraOssHuaweiServic
*/
@Override
public int insert(SchisandraOssHuawei schisandraOssHuawei) {
- return this.schisandraOssHuaweiDao.insert(schisandraOssHuawei,true);
+ return this.schisandraOssHuaweiDao.insert(schisandraOssHuawei, true);
}
/**
@@ -49,7 +50,7 @@ public class SchisandraOssHuaweiServiceImpl implements SchisandraOssHuaweiServic
*/
@Override
public int update(SchisandraOssHuawei schisandraOssHuawei) {
- return this.schisandraOssHuaweiDao.update(schisandraOssHuawei,true);
+ return this.schisandraOssHuaweiDao.update(schisandraOssHuawei, true);
}
/**
@@ -63,5 +64,10 @@ public class SchisandraOssHuaweiServiceImpl implements SchisandraOssHuaweiServic
return this.schisandraOssHuaweiDao.deleteById(id) > 0;
}
+ @Override
+ public SchisandraOssHuawei getHuaweiOssConfig(String userId) {
+ return schisandraOssHuaweiDao.selectOneByCondition(SchisandraOssHuaweiTableDef.SCHISANDRA_OSS_HUAWEI.USER_ID.eq(userId));
+ }
+
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdServiceImpl.java
index e817ebf..82d2561 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdServiceImpl.java
@@ -1,7 +1,8 @@
package com.schisandra.oss.infra.basic.service.impl;
-import com.schisandra.oss.infra.basic.entity.SchisandraOssJd;
import com.schisandra.oss.infra.basic.dao.SchisandraOssJdDao;
+import com.schisandra.oss.infra.basic.entity.SchisandraOssJd;
+import com.schisandra.oss.infra.basic.entity.table.SchisandraOssJdTableDef;
import com.schisandra.oss.infra.basic.service.SchisandraOssJdService;
import org.springframework.stereotype.Service;
@@ -38,7 +39,7 @@ public class SchisandraOssJdServiceImpl implements SchisandraOssJdService {
*/
@Override
public int insert(SchisandraOssJd schisandraOssJd) {
- return this.schisandraOssJdDao.insert(schisandraOssJd,true);
+ return this.schisandraOssJdDao.insert(schisandraOssJd, true);
}
/**
@@ -49,7 +50,7 @@ public class SchisandraOssJdServiceImpl implements SchisandraOssJdService {
*/
@Override
public int update(SchisandraOssJd schisandraOssJd) {
- return this.schisandraOssJdDao.update(schisandraOssJd,true);
+ return this.schisandraOssJdDao.update(schisandraOssJd, true);
}
/**
@@ -63,5 +64,10 @@ public class SchisandraOssJdServiceImpl implements SchisandraOssJdService {
return this.schisandraOssJdDao.deleteById(id) > 0;
}
+ @Override
+ public SchisandraOssJd getJdOssConfig(String userId) {
+ return schisandraOssJdDao.selectOneByCondition(SchisandraOssJdTableDef.SCHISANDRA_OSS_JD.USER_ID.eq(userId));
+ }
+
}
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdbcServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdbcServiceImpl.java
index 4ab8774..71ea7e6 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdbcServiceImpl.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssJdbcServiceImpl.java
@@ -1,7 +1,8 @@
package com.schisandra.oss.infra.basic.service.impl;
-import com.schisandra.oss.infra.basic.entity.SchisandraOssJdbc;
import com.schisandra.oss.infra.basic.dao.SchisandraOssJdbcDao;
+import com.schisandra.oss.infra.basic.entity.SchisandraOssJdbc;
+import com.schisandra.oss.infra.basic.entity.table.SchisandraOssJdbcTableDef;
import com.schisandra.oss.infra.basic.service.SchisandraOssJdbcService;
import org.springframework.stereotype.Service;
@@ -38,7 +39,7 @@ public class SchisandraOssJdbcServiceImpl implements SchisandraOssJdbcService {
*/
@Override
public int insert(SchisandraOssJdbc schisandraOssJdbc) {
- return this.schisandraOssJdbcDao.insert(schisandraOssJdbc,true);
+ return this.schisandraOssJdbcDao.insert(schisandraOssJdbc, true);
}
/**
@@ -49,7 +50,7 @@ public class SchisandraOssJdbcServiceImpl implements SchisandraOssJdbcService {
*/
@Override
public int update(SchisandraOssJdbc schisandraOssJdbc) {
- return this.schisandraOssJdbcDao.update(schisandraOssJdbc,true);
+ return this.schisandraOssJdbcDao.update(schisandraOssJdbc, true);
}
/**
@@ -63,5 +64,10 @@ public class SchisandraOssJdbcServiceImpl implements SchisandraOssJdbcService {
return this.schisandraOssJdbcDao.deleteById(id) > 0;
}
+ @Override
+ public SchisandraOssJdbc getJdbcOssConfig(String userId) {
+ return schisandraOssJdbcDao.selectOneByCondition(SchisandraOssJdbcTableDef.SCHISANDRA_OSS_JDBC.USER_ID.eq(userId));
+ }
+
}