Skip to main content

云服务集成

由于云服务厂商提供的服务很多功能类似,但是由于厂商不同,sdk也各有不同,并且还有开发时使用minio作为存储这种情况。为了满足不同厂商服务之间的切换,以及不同环境之间的切换,无需修改代码,我们提供了统一的接口,只需要引入对应的包即可。详情可以查看源码

Github

添加版本管理

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-cloud-integration-spring-boot-starters</artifactId>
<version>3.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
</exclusion>
</exclusions>
</dependency>

下面以阿里云为例

阿里云

oss 对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-aliyun-oss-spring-boot-starter</artifactId>
</dependency>

单个实例添加

配置说明
属性说明默认值
triones.aliyun.oss.enabled是否开启阿里云OSSfalse
triones.aliyun.oss.access-key-idaccess-key-id
triones.aliyun.oss.access-key-secretaccess-key-secret
triones.aliyun.oss.bucket桶名
triones.aliyun.oss.endpoint端点,根据官方的可用区进行配置
triones.aliyun.oss.url-prefixurl前缀,用于拼接

代码

在core模块中,provider.cloud package 中,添加oss package ,创建OssProvider文件

import com.trionesdev.csi.api.oss.OssTemplate;
import com.trionesdev.csi.api.oss.request.OssPutObjectRequest;
import lombok.RequiredArgsConstructor;
import ms.dubhe.foundation.core.provider.cloud.oss.pdo.PutObjectArgPDO;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
public class OssProvider {
private final OssTemplate ossTemplate; //自动注入 oss的实现类

public String putObject(PutObjectArgPDO arg){
OssPutObjectRequest ossPutObjectRequest = OssPutObjectRequest.builder().objectName(arg.getObjectName())
.inputStream(arg.getInputStream()).build();
return ossTemplate.putObject(ossPutObjectRequest).getUrl();
}

}

sms 短信服务

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-aliyun-sms-spring-boot-starter</artifactId>
</dependency>

单个实例添加

配置说明

属性说明默认值
triones.aliyun.sms.enabled开启阿里云短信服务fasle
triones.aliyun.sms.access-key-idaccess-key-id
triones.aliyun.sms.access-key-secretaccess-key-secret
triones.aliyun.sms.region-id区域ID
triones.aliyun.sms.sign-name签名
triones.aliyun.sms.template-codes模板code,

代码

在core模块中,provider.cloud package 中,添加sms package ,创建SmsProvider文件

有的厂商消息模板用占位符 有的用参数索引,所以这里统一装配成SmsVariable

public class SmsVariable {
private String key;
private String value;
private Integer index;
}



import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import com.trionesdev.csi.api.sms.SmsTemplate;
import com.trionesdev.csi.api.sms.SmsVariable;
import com.trionesdev.csi.api.sms.request.SmsSendRequest;
import com.trionesdev.bysp.core.facade.cloud.sms.dto.SendSmsCmd;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;

@RequiredArgsConstructor
@Component
public class SmsFacade {
private final SmsTemplate smsTemplate;

public void sendSms(SendSmsCmd sendSmsCmd) {
List<SmsVariable> smsParams = CollectionUtil.newArrayList();
if (MapUtil.isNotEmpty(sendSmsCmd.getParams())) {
List<Entry<String, String>> entries = new ArrayList<>(sendSmsCmd.getParams().entrySet());
for (int i = 0; i < entries.size(); i++) {
smsParams.add(SmsVariable.builder().key(entries.get(i).getKey()).value(entries.get(i).getValue()).index(i).build());
}
}
SmsSendRequest sendRequest = SmsSendRequest.builder().templateCode(smsTemplate.template(sendSmsCmd.getTemplateCode())).phoneNumbers(sendSmsCmd.getPhone()).variables(smsParams).build();
smsTemplate.send(sendRequest);
}
}

腾讯云

oss 对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-tencentcloud-cos-spring-boot-starter</artifactId>
</dependency>

具体用法,见阿里云OSS

sms 短信服务

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-tencentcloud-sms-spring-boot-starter</artifactId>
</dependency>

华为云

obs 对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-huaweicloud-obs-spring-boot-starter</artifactId>
</dependency>

sms 短信服务

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-huaweicloud-sms-spring-boot-starter</artifactId>
</dependency>

七牛云

kudo 对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-qiniu-kudo-spring-boot-starter</artifactId>
</dependency>

微软云

blob 对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-azure-blob-spring-boot-starter</artifactId>
</dependency>

自部署

minio对象存储

添加依赖

<dependency>
<groupId>com.trionesdev.csi</groupId>
<artifactId>triones-csi-minio-spring-boot-starter</artifactId>
</dependency>