feat: 存储微服务优化
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package com.schisandra.oss.application.config;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Classname GlobalConfig
|
||||
* @BelongsProject: schisandra-cloud-storage
|
||||
* @BelongsPackage: com.schisandra.auth.application.config
|
||||
* @Author: schisandra
|
||||
* @CreateTime: 2024-02-16 15:57
|
||||
* @Description: MVC全局处理
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Configuration
|
||||
public class GlobalConfig extends WebMvcConfigurationSupport {
|
||||
@Override
|
||||
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
super.configureMessageConverters(converters);
|
||||
converters.add(mappingJackson2HttpMessageConverter());
|
||||
}
|
||||
|
||||
private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
|
||||
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
||||
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
|
||||
return converter;
|
||||
}
|
||||
}
|
@@ -5,13 +5,12 @@ import com.google.common.base.Preconditions;
|
||||
|
||||
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
||||
import com.schisandra.oss.application.oss.core.ali.AliOssConfiguration;
|
||||
import com.schisandra.oss.common.entity.Result;
|
||||
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@@ -22,12 +21,28 @@ import javax.annotation.Resource;
|
||||
* @since 2024-05-14 20:45:32
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/oss/")
|
||||
@RequestMapping("/oss/ali/")
|
||||
@Slf4j
|
||||
public class SchisandraOssAliController {
|
||||
|
||||
@Resource
|
||||
private SchisandraOssAliDomainService schisandraOssAliDomainService;
|
||||
@Resource
|
||||
private AliOssConfiguration aliOssConfiguration;
|
||||
|
||||
@GetMapping("init")
|
||||
public void init(@RequestParam String userId){
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssAliController.init.userId:{}", userId);
|
||||
}
|
||||
Preconditions.checkNotNull(userId, "用户id不能为空!");
|
||||
try {
|
||||
aliOssConfiguration.aliOssClient(userId);
|
||||
log.info("用户: " + userId + "-> ali oss 初始化完成!");
|
||||
} catch (Exception e) {
|
||||
log.error("用户: " + userId + "-> ali oss 初始化失败!", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
@@ -39,56 +54,7 @@ public class SchisandraOssAliController {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssAliController.add.dto:{}", JSON.toJSONString(schisandraOssAliDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getEndpoint(), "OSS地址不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeyId(), "AccessKey ID不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeySecret(), "AccessKey Secret不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSecurityToken(), "security Token不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBucketName(), "Bucket名称不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBasePath(), "数据存储路径不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserAgent(), "用户代理,指HTTP的User-Agent头。默认为aliyun-sdk-java。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxErrorRetry(), "请求失败后最大的重试次数。默认3次。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionRequestTimeout(), "从连接池中获取连接的超时时间(单位:毫秒)。默认不超时。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTimeout(), "建立连接的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSocketTimeout(), "Socket层传输数据的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxConnections(), "允许打开的最大HTTP连接数。默认为1024不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTTL(), "连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseReaper(), "是否使用com.aliyun.oss.common.comm.IdleConnectionReaper管理过期连接,默认开启不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIdleConnectionTime(), "连接空闲超时时间,超时则关闭连接(单位:毫秒)。默认为60000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProtocol(), "连接OSS所采用的协议(HTTP或HTTPS),默认为HTTP。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyHost(), "代理服务器主机地址。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPort(), "代理服务器端口。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyUsername(), "代理服务器验证的用户名。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPassword(), "代理服务器验证的密码。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyDomain(), "代理服务器的域,该域可以执行NTLM认证不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyWorkstation(), "代理主机的NTLM身份验证服务器不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSupportCname(), "是否支持CNAME作为Endpoint,默认支持CNAME。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCnameExcludeList(), "设置不可变排除的CName列表 ---- 任何以该列表中的项目结尾的域都不会进行Cname解析。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSldEnabled(), "是否开启二级域名(Second Level Domain)的访问方式,默认不开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeout(), "请求超时时间,单位:毫秒。默认情况下是5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeoutEnabled(), "是否启用请求超时校验。默认情况下,它是禁用的。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSlowRequestsThreshold(), "设置慢请求的延迟阈值。如果请求的延迟大于延迟,则将记录该请求。默认情况下,阈值为5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getDefaultHeaders(), "设置默认的http头。所有请求头将自动添加到每个请求中。如果在请求中也指定了相同的请求头,则默认的标头将被覆盖。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCrcCheckEnabled(), "是否在上传和下载时启用CRC校验,默认启用不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSignatureVersion(), "所有请求设置签名版本不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTickOffset(), "设置OSS服务端时间和本地时间之间的差异,以毫秒为单位。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRedirectEnable(), "是否开启HTTP重定向。 说明: Java SDK 3.10.1及以上版本支持设置是否开启HTTP重定向,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getVerifySSLEnable(), "是否开启SSL证书校验。 * 说明: Java SDK 3.10.1及以上版本支持设置是否开启SSL证书校验,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getLogConnectionPoolStats(), "是否开启日志记录连接池统计信息不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseSystemPropertyValues(), "是否使用系统属性值不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
parameterCheck(schisandraOssAliDTO);
|
||||
SchisandraOssAliBO SchisandraOssAliBO = SchisandraOssAliDTOConverter.INSTANCE.convertDTOToBO(schisandraOssAliDTO);
|
||||
return Result.ok(schisandraOssAliDomainService.add(SchisandraOssAliBO));
|
||||
} catch (Exception e) {
|
||||
@@ -98,6 +64,8 @@ public class SchisandraOssAliController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@@ -108,56 +76,7 @@ public class SchisandraOssAliController {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssAliController.update.dto:{}", JSON.toJSONString(schisandraOssAliDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getEndpoint(), "OSS地址不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeyId(), "AccessKey ID不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeySecret(), "AccessKey Secret不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSecurityToken(), "security Token不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBucketName(), "Bucket名称不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBasePath(), "数据存储路径不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserAgent(), "用户代理,指HTTP的User-Agent头。默认为aliyun-sdk-java。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxErrorRetry(), "请求失败后最大的重试次数。默认3次。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionRequestTimeout(), "从连接池中获取连接的超时时间(单位:毫秒)。默认不超时。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTimeout(), "建立连接的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSocketTimeout(), "Socket层传输数据的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxConnections(), "允许打开的最大HTTP连接数。默认为1024不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTTL(), "连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseReaper(), "是否使用com.aliyun.oss.common.comm.IdleConnectionReaper管理过期连接,默认开启不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIdleConnectionTime(), "连接空闲超时时间,超时则关闭连接(单位:毫秒)。默认为60000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProtocol(), "连接OSS所采用的协议(HTTP或HTTPS),默认为HTTP。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyHost(), "代理服务器主机地址。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPort(), "代理服务器端口。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyUsername(), "代理服务器验证的用户名。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPassword(), "代理服务器验证的密码。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyDomain(), "代理服务器的域,该域可以执行NTLM认证不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyWorkstation(), "代理主机的NTLM身份验证服务器不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSupportCname(), "是否支持CNAME作为Endpoint,默认支持CNAME。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCnameExcludeList(), "设置不可变排除的CName列表 ---- 任何以该列表中的项目结尾的域都不会进行Cname解析。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSldEnabled(), "是否开启二级域名(Second Level Domain)的访问方式,默认不开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeout(), "请求超时时间,单位:毫秒。默认情况下是5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeoutEnabled(), "是否启用请求超时校验。默认情况下,它是禁用的。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSlowRequestsThreshold(), "设置慢请求的延迟阈值。如果请求的延迟大于延迟,则将记录该请求。默认情况下,阈值为5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getDefaultHeaders(), "设置默认的http头。所有请求头将自动添加到每个请求中。如果在请求中也指定了相同的请求头,则默认的标头将被覆盖。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCrcCheckEnabled(), "是否在上传和下载时启用CRC校验,默认启用不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSignatureVersion(), "所有请求设置签名版本不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTickOffset(), "设置OSS服务端时间和本地时间之间的差异,以毫秒为单位。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRedirectEnable(), "是否开启HTTP重定向。 说明: Java SDK 3.10.1及以上版本支持设置是否开启HTTP重定向,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getVerifySSLEnable(), "是否开启SSL证书校验。 说明: Java SDK 3.10.1及以上版本支持设置是否开启SSL证书校验,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getLogConnectionPoolStats(), "是否开启日志记录连接池统计信息不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseSystemPropertyValues(), "是否使用系统属性值不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
parameterCheck(schisandraOssAliDTO);
|
||||
SchisandraOssAliBO schisandraOssAliBO = SchisandraOssAliDTOConverter.INSTANCE.convertDTOToBO(schisandraOssAliDTO);
|
||||
return Result.ok(schisandraOssAliDomainService.update(schisandraOssAliBO));
|
||||
} catch (Exception e) {
|
||||
@@ -177,56 +96,7 @@ public class SchisandraOssAliController {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssAliController.delete.dto:{}", JSON.toJSONString(schisandraOssAliDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getEndpoint(), "OSS地址不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeyId(), "AccessKey ID不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeySecret(), "AccessKey Secret不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSecurityToken(), "security Token不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBucketName(), "Bucket名称不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBasePath(), "数据存储路径不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserAgent(), "用户代理,指HTTP的User-Agent头。默认为aliyun-sdk-java。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxErrorRetry(), "请求失败后最大的重试次数。默认3次。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionRequestTimeout(), "从连接池中获取连接的超时时间(单位:毫秒)。默认不超时。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTimeout(), "建立连接的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSocketTimeout(), "Socket层传输数据的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxConnections(), "允许打开的最大HTTP连接数。默认为1024不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTTL(), "连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseReaper(), "是否使用com.aliyun.oss.common.comm.IdleConnectionReaper管理过期连接,默认开启不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIdleConnectionTime(), "连接空闲超时时间,超时则关闭连接(单位:毫秒)。默认为60000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProtocol(), "连接OSS所采用的协议(HTTP或HTTPS),默认为HTTP。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyHost(), "代理服务器主机地址。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPort(), "代理服务器端口。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyUsername(), "代理服务器验证的用户名。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPassword(), "代理服务器验证的密码。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyDomain(), "代理服务器的域,该域可以执行NTLM认证不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyWorkstation(), "代理主机的NTLM身份验证服务器不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSupportCname(), "是否支持CNAME作为Endpoint,默认支持CNAME。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCnameExcludeList(), "设置不可变排除的CName列表 ---- 任何以该列表中的项目结尾的域都不会进行Cname解析。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSldEnabled(), "是否开启二级域名(Second Level Domain)的访问方式,默认不开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeout(), "请求超时时间,单位:毫秒。默认情况下是5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeoutEnabled(), "是否启用请求超时校验。默认情况下,它是禁用的。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSlowRequestsThreshold(), "设置慢请求的延迟阈值。如果请求的延迟大于延迟,则将记录该请求。默认情况下,阈值为5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getDefaultHeaders(), "设置默认的http头。所有请求头将自动添加到每个请求中。如果在请求中也指定了相同的请求头,则默认的标头将被覆盖。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCrcCheckEnabled(), "是否在上传和下载时启用CRC校验,默认启用不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSignatureVersion(), "所有请求设置签名版本不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTickOffset(), "设置OSS服务端时间和本地时间之间的差异,以毫秒为单位。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRedirectEnable(), "是否开启HTTP重定向。 说明: Java SDK 3.10.1及以上版本支持设置是否开启HTTP重定向,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getVerifySSLEnable(), "是否开启SSL证书校验。 说明: Java SDK 3.10.1及以上版本支持设置是否开启SSL证书校验,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getLogConnectionPoolStats(), "是否开启日志记录连接池统计信息不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseSystemPropertyValues(), "是否使用系统属性值不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
parameterCheck(schisandraOssAliDTO);
|
||||
SchisandraOssAliBO schisandraOssAliBO = SchisandraOssAliDTOConverter.INSTANCE.convertDTOToBO(schisandraOssAliDTO);
|
||||
return Result.ok(schisandraOssAliDomainService.delete(schisandraOssAliBO));
|
||||
} catch (Exception e) {
|
||||
@@ -236,4 +106,57 @@ public class SchisandraOssAliController {
|
||||
|
||||
}
|
||||
|
||||
private void parameterCheck(SchisandraOssAliDTO schisandraOssAliDTO) {
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getEndpoint(), "OSS地址不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeyId(), "AccessKey ID不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getAccessKeySecret(), "AccessKey Secret不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSecurityToken(), "security Token不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBucketName(), "Bucket名称不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getBasePath(), "数据存储路径不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUserAgent(), "用户代理,指HTTP的User-Agent头。默认为aliyun-sdk-java。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxErrorRetry(), "请求失败后最大的重试次数。默认3次。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionRequestTimeout(), "从连接池中获取连接的超时时间(单位:毫秒)。默认不超时。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTimeout(), "建立连接的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSocketTimeout(), "Socket层传输数据的超时时间(单位:毫秒)。默认为50000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getMaxConnections(), "允许打开的最大HTTP连接数。默认为1024不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getConnectionTTL(), "连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseReaper(), "是否使用com.aliyun.oss.common.comm.IdleConnectionReaper管理过期连接,默认开启不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIdleConnectionTime(), "连接空闲超时时间,超时则关闭连接(单位:毫秒)。默认为60000毫秒。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProtocol(), "连接OSS所采用的协议(HTTP或HTTPS),默认为HTTP。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyHost(), "代理服务器主机地址。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPort(), "代理服务器端口。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyUsername(), "代理服务器验证的用户名。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyPassword(), "代理服务器验证的密码。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyDomain(), "代理服务器的域,该域可以执行NTLM认证不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getProxyWorkstation(), "代理主机的NTLM身份验证服务器不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSupportCname(), "是否支持CNAME作为Endpoint,默认支持CNAME。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCnameExcludeList(), "设置不可变排除的CName列表 ---- 任何以该列表中的项目结尾的域都不会进行Cname解析。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSldEnabled(), "是否开启二级域名(Second Level Domain)的访问方式,默认不开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeout(), "请求超时时间,单位:毫秒。默认情况下是5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRequestTimeoutEnabled(), "是否启用请求超时校验。默认情况下,它是禁用的。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSlowRequestsThreshold(), "设置慢请求的延迟阈值。如果请求的延迟大于延迟,则将记录该请求。默认情况下,阈值为5分钟。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getDefaultHeaders(), "设置默认的http头。所有请求头将自动添加到每个请求中。如果在请求中也指定了相同的请求头,则默认的标头将被覆盖。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCrcCheckEnabled(), "是否在上传和下载时启用CRC校验,默认启用不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getSignatureVersion(), "所有请求设置签名版本不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTickOffset(), "设置OSS服务端时间和本地时间之间的差异,以毫秒为单位。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getRedirectEnable(), "是否开启HTTP重定向。 说明: Java SDK 3.10.1及以上版本支持设置是否开启HTTP重定向,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getVerifySSLEnable(), "是否开启SSL证书校验。 * 说明: Java SDK 3.10.1及以上版本支持设置是否开启SSL证书校验,默认开启。不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getLogConnectionPoolStats(), "是否开启日志记录连接池统计信息不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUseSystemPropertyValues(), "是否使用系统属性值不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssAliDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -4,26 +4,15 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssMinioDTO;
|
||||
import com.schisandra.oss.application.oss.core.StandardOssClient;
|
||||
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
|
||||
import com.schisandra.oss.application.oss.core.minio.MinioOssConfiguration;
|
||||
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.domain.bo.SchisandraOssMinioBO;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
|
||||
import io.minio.MinioClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* controller
|
||||
@@ -32,10 +21,10 @@ import java.util.concurrent.TimeUnit;
|
||||
* @since 2024-05-14 19:47:04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/oss/")
|
||||
@RequestMapping("/oss/minio/")
|
||||
@Slf4j
|
||||
public class SchisandraOssMinioController {
|
||||
@Autowired
|
||||
@Resource
|
||||
MinioOssClient minioOssClient;
|
||||
|
||||
@Resource
|
||||
@@ -43,16 +32,32 @@ public class SchisandraOssMinioController {
|
||||
@Resource
|
||||
MinioOssConfiguration minioOssConfiguration;
|
||||
|
||||
@PostMapping("initMinio")
|
||||
public void initMinio() {
|
||||
minioOssConfiguration.minioOssClient();
|
||||
/**
|
||||
* @description: minio 初始化
|
||||
* @param: []
|
||||
* @return: void
|
||||
* @author: landaiqing
|
||||
* @date: 2024/5/15 13:34
|
||||
*/
|
||||
@GetMapping("init")
|
||||
public void initMinio(@RequestParam String userId) {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssMinioController.init.userId:{}", userId);
|
||||
}
|
||||
Preconditions.checkNotNull(userId, "用户id不能为空!");
|
||||
try {
|
||||
minioOssConfiguration.minioOssClient(userId);
|
||||
log.info("用户: " + userId + "-> minio 初始化完成!");
|
||||
} catch (Exception e) {
|
||||
log.error("用户: " + userId + "-> minio 初始化失败!", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@RequestMapping("addMinio")
|
||||
@RequestMapping("add")
|
||||
public Result<Boolean> addMinioOss(@RequestBody SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
||||
|
||||
try {
|
||||
@@ -72,7 +77,7 @@ public class SchisandraOssMinioController {
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@RequestMapping("updateMinio")
|
||||
@RequestMapping("update")
|
||||
public Result<Boolean> updateMinioOss(@RequestBody SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
||||
|
||||
try {
|
||||
@@ -92,7 +97,7 @@ public class SchisandraOssMinioController {
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@RequestMapping("deleteMinio")
|
||||
@RequestMapping("delete")
|
||||
public Result<Boolean> deleteMinioOss(@RequestBody SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
||||
|
||||
try {
|
||||
@@ -109,8 +114,9 @@ public class SchisandraOssMinioController {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("testMinio")
|
||||
@RequestMapping("test")
|
||||
public void test() {
|
||||
System.out.println(minioOssClient);
|
||||
System.out.println(minioOssClient.getBasePath());
|
||||
}
|
||||
|
||||
|
@@ -26,6 +26,7 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
@@ -43,6 +44,7 @@ import java.util.*;
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Component
|
||||
public class AliOssClient implements StandardOssClient {
|
||||
|
||||
public static final String OSS_OBJECT_NAME = "oss";
|
||||
|
@@ -10,10 +10,12 @@ import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.common.comm.Protocol;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssMinioDTO;
|
||||
import com.schisandra.oss.application.oss.constant.OssConstant;
|
||||
import com.schisandra.oss.application.oss.core.StandardOssClient;
|
||||
import com.schisandra.oss.application.oss.core.ali.model.AliOssClientConfig;
|
||||
import com.schisandra.oss.application.oss.core.ali.model.AliOssConfig;
|
||||
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
|
||||
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,68 +27,77 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* @author landaiqing
|
||||
* @version AliOssConfiguration.java, v 1.1 2021/11/16 15:25 chenmin Exp $
|
||||
* Created on 2021/11/16
|
||||
*/
|
||||
@Configuration
|
||||
@Component
|
||||
@Slf4j
|
||||
public class AliOssConfiguration {
|
||||
|
||||
@Resource
|
||||
SchisandraOssAliDomainService schisandraOssAliDomainService;
|
||||
@Resource
|
||||
AliOssClient aliOssClient;
|
||||
|
||||
@Bean
|
||||
public StandardOssClient aliOssClient() {
|
||||
SchisandraOssAliBO schisandraOssAliBO = schisandraOssAliDomainService.getAliOssConfig(1L);
|
||||
SchisandraOssAliDTO schisandraOssAliDTO = SchisandraOssAliDTOConverter.INSTANCE.convertBOToDTO(schisandraOssAliBO);
|
||||
if (ObjectUtils.isEmpty(schisandraOssAliDTO)) {
|
||||
public StandardOssClient aliOssClient(String userId) {
|
||||
CompletableFuture<SchisandraOssAliDTO> futurePrice = CompletableFuture.supplyAsync(() -> {
|
||||
SchisandraOssAliBO schisandraOssAliBO = schisandraOssAliDomainService.getAliOssConfig(Long.valueOf(userId));
|
||||
SchisandraOssAliDTO schisandraOssAliDTO = SchisandraOssAliDTOConverter.INSTANCE.convertBOToDTO(schisandraOssAliBO);
|
||||
return schisandraOssAliDTO;
|
||||
});
|
||||
SchisandraOssAliDTO ali = futurePrice.join();
|
||||
if (ObjectUtils.isEmpty(ali)) {
|
||||
log.error("ali oss配置信息获取失败");
|
||||
return null;
|
||||
}
|
||||
AliOssConfig aliOssConfig = new AliOssConfig();
|
||||
aliOssConfig.setEndpoint(schisandraOssAliDTO.getEndpoint());
|
||||
aliOssConfig.setAccessKeyId(schisandraOssAliDTO.getAccessKeyId());
|
||||
aliOssConfig.setAccessKeySecret(schisandraOssAliDTO.getAccessKeySecret());
|
||||
aliOssConfig.setSecurityToken(schisandraOssAliDTO.getSecurityToken());
|
||||
if (Boolean.parseBoolean(schisandraOssAliDTO.getOpenAdvancedSetup())) {
|
||||
aliOssConfig.setEndpoint(ali.getEndpoint());
|
||||
aliOssConfig.setAccessKeyId(ali.getAccessKeyId());
|
||||
aliOssConfig.setAccessKeySecret(ali.getAccessKeySecret());
|
||||
aliOssConfig.setSecurityToken(ali.getSecurityToken());
|
||||
if (Boolean.parseBoolean(ali.getOpenAdvancedSetup())) {
|
||||
AliOssClientConfig aliOssClientConfig = new AliOssClientConfig();
|
||||
aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(schisandraOssAliDTO.getCnameExcludeList()).orElse("").split(",")));
|
||||
aliOssClientConfig.setConnectionTimeout(schisandraOssAliDTO.getConnectionTimeout());
|
||||
aliOssClientConfig.setConnectionTTL(schisandraOssAliDTO.getConnectionTTL());
|
||||
aliOssClientConfig.setProtocol(Protocol.valueOf(schisandraOssAliDTO.getProtocol()));
|
||||
aliOssClientConfig.setConnectionRequestTimeout(schisandraOssAliDTO.getConnectionRequestTimeout());
|
||||
aliOssClientConfig.setMaxConnections(schisandraOssAliDTO.getMaxConnections());
|
||||
aliOssClientConfig.setProxyPort(Integer.parseInt(schisandraOssAliDTO.getProxyPort()));
|
||||
aliOssClientConfig.setProxyDomain(schisandraOssAliDTO.getProxyDomain());
|
||||
aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(schisandraOssAliDTO.getCrcCheckEnabled()));
|
||||
aliOssClientConfig.setTickOffset(schisandraOssAliDTO.getTickOffset());
|
||||
aliOssClientConfig.setProxyHost(schisandraOssAliDTO.getProxyHost());
|
||||
aliOssClientConfig.setProxyPassword(schisandraOssAliDTO.getProxyPassword());
|
||||
aliOssClientConfig.setProxyUsername(schisandraOssAliDTO.getProxyUsername());
|
||||
aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(schisandraOssAliDTO.getVerifySSLEnable()));
|
||||
aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(schisandraOssAliDTO.getUseSystemPropertyValues()));
|
||||
aliOssClientConfig.setUseReaper(Boolean.parseBoolean(schisandraOssAliDTO.getUseReaper()));
|
||||
aliOssClientConfig.setSupportCname(Boolean.parseBoolean(schisandraOssAliDTO.getSupportCname()));
|
||||
aliOssClientConfig.setSocketTimeout(schisandraOssAliDTO.getSocketTimeout());
|
||||
aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(schisandraOssAliDTO.getSldEnabled()));
|
||||
aliOssClientConfig.setProxyWorkstation(schisandraOssAliDTO.getProxyWorkstation());
|
||||
aliOssClientConfig.setIdleConnectionTime(schisandraOssAliDTO.getIdleConnectionTime());
|
||||
aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(schisandraOssAliDTO.getLogConnectionPoolStats()));
|
||||
aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(ali.getCnameExcludeList()).orElse("").split(",")));
|
||||
aliOssClientConfig.setConnectionTimeout(ali.getConnectionTimeout());
|
||||
aliOssClientConfig.setConnectionTTL(ali.getConnectionTTL());
|
||||
aliOssClientConfig.setProtocol(Protocol.valueOf(ali.getProtocol()));
|
||||
aliOssClientConfig.setConnectionRequestTimeout(ali.getConnectionRequestTimeout());
|
||||
aliOssClientConfig.setMaxConnections(ali.getMaxConnections());
|
||||
aliOssClientConfig.setProxyPort(Integer.parseInt(ali.getProxyPort()));
|
||||
aliOssClientConfig.setProxyDomain(ali.getProxyDomain());
|
||||
aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(ali.getCrcCheckEnabled()));
|
||||
aliOssClientConfig.setTickOffset(ali.getTickOffset());
|
||||
aliOssClientConfig.setProxyHost(ali.getProxyHost());
|
||||
aliOssClientConfig.setProxyPassword(ali.getProxyPassword());
|
||||
aliOssClientConfig.setProxyUsername(ali.getProxyUsername());
|
||||
aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(ali.getVerifySSLEnable()));
|
||||
aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(ali.getUseSystemPropertyValues()));
|
||||
aliOssClientConfig.setUseReaper(Boolean.parseBoolean(ali.getUseReaper()));
|
||||
aliOssClientConfig.setSupportCname(Boolean.parseBoolean(ali.getSupportCname()));
|
||||
aliOssClientConfig.setSocketTimeout(ali.getSocketTimeout());
|
||||
aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(ali.getSldEnabled()));
|
||||
aliOssClientConfig.setProxyWorkstation(ali.getProxyWorkstation());
|
||||
aliOssClientConfig.setIdleConnectionTime(ali.getIdleConnectionTime());
|
||||
aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(ali.getLogConnectionPoolStats()));
|
||||
aliOssConfig.setClientConfig(aliOssClientConfig);
|
||||
}
|
||||
return aliOssClient(aliOssConfig);
|
||||
}
|
||||
|
||||
public StandardOssClient aliOssClient(AliOssConfig aliOssConfig) {
|
||||
return new AliOssClient(ossClient(aliOssConfig), aliOssConfig);
|
||||
aliOssClient.setAliOssConfig(aliOssConfig);
|
||||
aliOssClient.setOss(ossClient(aliOssConfig));
|
||||
return aliOssClient;
|
||||
}
|
||||
|
||||
public OSS ossClient(AliOssConfig aliOssConfig) {
|
||||
|
@@ -31,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.Headers;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.annotation.SessionScope;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
@@ -51,7 +52,6 @@ import java.util.*;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Scope("Property")
|
||||
@Component
|
||||
public class MinioOssClient implements StandardOssClient {
|
||||
|
||||
|
@@ -11,11 +11,13 @@ import io.minio.MinioClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.context.annotation.ScopedProxyMode;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
@@ -23,8 +25,8 @@ import java.util.concurrent.TimeUnit;
|
||||
* @version MinioConfiguration.java, v 1.1 2021/11/24 15:20 chenmin Exp $
|
||||
* Created on 2021/11/24
|
||||
*/
|
||||
//@Configuration
|
||||
@Component
|
||||
@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
|
||||
@Slf4j
|
||||
public class MinioOssConfiguration {
|
||||
|
||||
@@ -34,9 +36,13 @@ public class MinioOssConfiguration {
|
||||
@Resource
|
||||
private SchisandraOssMinioDomainService schisandraOssMinioDomainService;
|
||||
|
||||
public StandardOssClient minioOssClient() {
|
||||
SchisandraOssMinioBO minioBO = schisandraOssMinioDomainService.getMinioConfig(1L);
|
||||
SchisandraOssMinioDTO minio = SchisandraOssMinioDTOConverter.INSTANCE.convertBOToDTO(minioBO);
|
||||
public StandardOssClient minioOssClient(String userId) {
|
||||
CompletableFuture<SchisandraOssMinioDTO> futurePrice = CompletableFuture.supplyAsync(() -> {
|
||||
SchisandraOssMinioBO minioBO = schisandraOssMinioDomainService.getMinioConfig(Long.valueOf(userId));
|
||||
SchisandraOssMinioDTO minioDTO = SchisandraOssMinioDTOConverter.INSTANCE.convertBOToDTO(minioBO);
|
||||
return minioDTO;
|
||||
});
|
||||
SchisandraOssMinioDTO minio = futurePrice.join();
|
||||
if (ObjectUtils.isEmpty(minio)) {
|
||||
log.error("minio配置信息获取失败");
|
||||
}
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package com.schisandra.oss.infra.config;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class MybatisConfiguration {
|
||||
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor(){
|
||||
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
|
||||
mybatisPlusInterceptor.addInnerInterceptor(new MybatisPlusAllSqlLog());
|
||||
return mybatisPlusInterceptor;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,116 @@
|
||||
package com.schisandra.oss.infra.config;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
|
||||
import org.apache.ibatis.executor.Executor;
|
||||
import org.apache.ibatis.mapping.BoundSql;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.mapping.ParameterMapping;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.apache.ibatis.session.Configuration;
|
||||
import org.apache.ibatis.session.ResultHandler;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.apache.ibatis.type.TypeHandlerRegistry;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
public class MybatisPlusAllSqlLog implements InnerInterceptor {
|
||||
public static final Logger log = LoggerFactory.getLogger("sys-sql");
|
||||
|
||||
@Override
|
||||
public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
|
||||
logInfo(boundSql, ms, parameter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
|
||||
BoundSql boundSql = ms.getBoundSql(parameter);
|
||||
logInfo(boundSql, ms, parameter);
|
||||
}
|
||||
|
||||
private static void logInfo(BoundSql boundSql, MappedStatement ms, Object parameter) {
|
||||
try {
|
||||
log.info("parameter = " + parameter);
|
||||
// 获取到节点的id,即sql语句的id
|
||||
String sqlId = ms.getId();
|
||||
log.info("sqlId = " + sqlId);
|
||||
// 获取节点的配置
|
||||
Configuration configuration = ms.getConfiguration();
|
||||
// 获取到最终的sql语句
|
||||
String sql = getSql(configuration, boundSql, sqlId);
|
||||
log.info("完整的sql:{}", sql);
|
||||
} catch (Exception e) {
|
||||
log.error("异常:{}", e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
// 封装了一下sql语句,使得结果返回完整xml路径下的sql语句节点id + sql语句
|
||||
public static String getSql(Configuration configuration, BoundSql boundSql, String sqlId) {
|
||||
return sqlId + ":" + showSql(configuration, boundSql);
|
||||
}
|
||||
|
||||
// 进行?的替换
|
||||
public static String showSql(Configuration configuration, BoundSql boundSql) {
|
||||
// 获取参数
|
||||
Object parameterObject = boundSql.getParameterObject();
|
||||
List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
|
||||
// sql语句中多个空格都用一个空格代替
|
||||
String sql = boundSql.getSql().replaceAll("[\\s]+", " ");
|
||||
if (!CollectionUtils.isEmpty(parameterMappings) && parameterObject != null) {
|
||||
// 获取类型处理器注册器,类型处理器的功能是进行java类型和数据库类型的转换
|
||||
TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
|
||||
// 如果根据parameterObject.getClass()可以找到对应的类型,则替换
|
||||
if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
|
||||
sql = sql.replaceFirst("\\?",
|
||||
Matcher.quoteReplacement(getParameterValue(parameterObject)));
|
||||
} else {
|
||||
// MetaObject主要是封装了originalObject对象,提供了get和set的方法用于获取和设置originalObject的属性值,主要支持对JavaBean、Collection、Map三种类型对象的操作
|
||||
MetaObject metaObject = configuration.newMetaObject(parameterObject);
|
||||
for (ParameterMapping parameterMapping : parameterMappings) {
|
||||
String propertyName = parameterMapping.getProperty();
|
||||
if (metaObject.hasGetter(propertyName)) {
|
||||
Object obj = metaObject.getValue(propertyName);
|
||||
sql = sql.replaceFirst("\\?",
|
||||
Matcher.quoteReplacement(getParameterValue(obj)));
|
||||
} else if (boundSql.hasAdditionalParameter(propertyName)) {
|
||||
// 该分支是动态sql
|
||||
Object obj = boundSql.getAdditionalParameter(propertyName);
|
||||
sql = sql.replaceFirst("\\?",
|
||||
Matcher.quoteReplacement(getParameterValue(obj)));
|
||||
} else {
|
||||
// 打印出缺失,提醒该参数缺失并防止错位
|
||||
sql = sql.replaceFirst("\\?", "缺失");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
|
||||
// 如果参数是String,则添加单引号, 如果是日期,则转换为时间格式器并加单引号; 对参数是null和不是null的情况作了处理
|
||||
private static String getParameterValue(Object obj) {
|
||||
String value;
|
||||
if (obj instanceof String) {
|
||||
value = "'" + obj.toString() + "'";
|
||||
} else if (obj instanceof Date) {
|
||||
DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,
|
||||
DateFormat.DEFAULT, Locale.CHINA);
|
||||
value = "'" + formatter.format(new Date()) + "'";
|
||||
} else {
|
||||
if (obj != null) {
|
||||
value = obj.toString();
|
||||
} else {
|
||||
value = "";
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,52 @@
|
||||
package com.schisandra.oss.infra.config;
|
||||
|
||||
import org.apache.ibatis.cache.CacheKey;
|
||||
import org.apache.ibatis.executor.Executor;
|
||||
import org.apache.ibatis.mapping.BoundSql;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.plugin.*;
|
||||
import org.apache.ibatis.session.ResultHandler;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
@Intercepts({
|
||||
@Signature(type = Executor.class, method = "update", args = {MappedStatement.class,
|
||||
Object.class}),
|
||||
@Signature(type = Executor.class, method = "query", args = {MappedStatement.class,
|
||||
Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class})})
|
||||
public class SqlStatementInterceptor implements Interceptor {
|
||||
|
||||
public static final Logger log = LoggerFactory.getLogger("sys-sql");
|
||||
|
||||
@Override
|
||||
public Object intercept(Invocation invocation) throws Throwable {
|
||||
long startTime = System.currentTimeMillis();
|
||||
try {
|
||||
return invocation.proceed();
|
||||
} finally {
|
||||
long timeConsuming = System.currentTimeMillis() - startTime;
|
||||
log.info("执行SQL:{}ms", timeConsuming);
|
||||
if (timeConsuming > 999 && timeConsuming < 5000) {
|
||||
log.info("执行SQL大于1s:{}ms", timeConsuming);
|
||||
} else if (timeConsuming >= 5000 && timeConsuming < 10000) {
|
||||
log.info("执行SQL大于5s:{}ms", timeConsuming);
|
||||
} else if (timeConsuming >= 10000) {
|
||||
log.info("执行SQL大于10s:{}ms", timeConsuming);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object plugin(Object target) {
|
||||
return Plugin.wrap(target, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProperties(Properties properties) {
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user