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)); + } + }