Ver Fonte

新增 阿里云短信服务

wwwwwwww há 2 anos atrás
pai
commit
a67ffe874b

+ 19 - 0
tr-plugins/tr-spring-boot-starter-plugin-sms/pom.xml

@@ -37,5 +37,24 @@
             <artifactId>jackson-annotations</artifactId>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-ecs</artifactId>
+            <version>4.23.12</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.6.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>2.2.1</version>
+        </dependency>
+
     </dependencies>
 </project>

+ 38 - 4
tr-plugins/tr-spring-boot-starter-plugin-sms/src/main/java/cn/tr/plugin/sms/config/ali/AliSmsClient.java

@@ -1,8 +1,22 @@
 package cn.tr.plugin.sms.config.ali;
 
+import cn.hutool.core.util.StrUtil;
+import cn.tr.core.exception.TRExcCode;
 import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.utils.JsonUtils;
 import cn.tr.plugin.sms.bo.SmsSendRespBO;
 import cn.tr.plugin.sms.config.AbstractSmsClient;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.google.gson.Gson;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @ClassName : AliSmsClient
@@ -10,20 +24,40 @@ import cn.tr.plugin.sms.config.AbstractSmsClient;
  * @Author : LF
  * @Date: 2023年03月15日
  */
-
+@Slf4j
 public class AliSmsClient extends AbstractSmsClient<AliSmsClientConfig,AliSmsClientSendConfig> {
-
+    private IAcsClient client;
     public AliSmsClient(String id, AliSmsClientConfig clientConfig) {
         super(id, clientConfig);
     }
 
     @Override
     public void doInit(AliSmsClientConfig config) {
-
+        DefaultProfile profile = DefaultProfile.getProfile(config.getRegionId(), config.getAccessKeyId(), config.getAccessKeySecret());
+        client = new DefaultAcsClient(profile);
     }
 
     @Override
     public CommonResult<SmsSendRespBO> sendSms(AliSmsClientSendConfig sendConfig) {
-        return null;
+        SendSmsRequest sendSmsRequest =new SendSmsRequest();
+        sendSmsRequest.setPhoneNumbers(sendConfig.getPhoneNumber());
+        sendSmsRequest.setSignName(sendConfig.getSignName());
+        sendSmsRequest.setTemplateCode(sendConfig.getTemplateCode());
+        sendSmsRequest.setTemplateParam(JsonUtils.toJsonString(sendConfig.getTemplateParam()));
+        sendSmsRequest.setSmsUpExtendCode(sendConfig.getSmsUpExtendCode());
+        sendSmsRequest.setOutId(sendConfig.getOutId());
+        try {
+            SendSmsResponse sendSmsResponse = client.getAcsResponse(sendSmsRequest);
+        } catch (ClientException e) {
+            if (StrUtil.equals(e.getErrCode(),"isv.ACCOUNT_NOT_EXISTS")) {
+                return CommonResult.error(TRExcCode.USER_ERROR_A0201,e.getErrMsg());
+            }
+            if (StrUtil.equals(e.getErrCode(), "isv.AMOUNT_NOT_ENOUGH")) {
+                return CommonResult.error(TRExcCode.USER_ERROR_A0601,e.getErrMsg());
+            }
+            log.warn("[AliSms] send msg confront a error,",e);
+        }
+        return CommonResult.success();
+
     }
 }

+ 31 - 0
tr-plugins/tr-spring-boot-starter-plugin-sms/src/main/java/cn/tr/plugin/sms/config/ali/AliSmsClientConfig.java

@@ -2,6 +2,7 @@ package cn.tr.plugin.sms.config.ali;
 
 import cn.tr.plugin.sms.config.SmsClientConfig;
 import lombok.Data;
+import org.hibernate.validator.constraints.NotBlank;
 
 /**
  * @ClassName : AliSmsClientConfig
@@ -11,4 +12,34 @@ import lombok.Data;
  */
 @Data
 public class AliSmsClientConfig implements SmsClientConfig {
+
+    private String regionId;
+    private String accessKeyId;
+
+    private String accessKeySecret;
+
+    public String getRegionId() {
+        return regionId;
+    }
+
+    public void setRegionId(String regionId) {
+        this.regionId = regionId;
+    }
+
+    public String getAccessKeyId() {
+        return accessKeyId;
+    }
+
+    public void setAccessKeyId(String accessKeyId) {
+        this.accessKeyId = accessKeyId;
+    }
+
+    public String getAccessKeySecret() {
+        return accessKeySecret;
+    }
+
+    public void setAccessKeySecret(String accessKeySecret) {
+        this.accessKeySecret = accessKeySecret;
+    }
+
 }

+ 29 - 1
tr-plugins/tr-spring-boot-starter-plugin-sms/src/main/java/cn/tr/plugin/sms/config/ali/AliSmsClientSendConfig.java

@@ -2,6 +2,10 @@ package cn.tr.plugin.sms.config.ali;
 
 import cn.tr.plugin.sms.config.SmsClientSendConfig;
 import lombok.Data;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
 
 /**
  * @ClassName : AliSmsClientSendConfig
@@ -10,5 +14,29 @@ import lombok.Data;
  * @Date: 2023年03月15日
  */
 @Data
-public class AliSmsClientSendConfig implements SmsClientSendConfig {
+public class
+
+AliSmsClientSendConfig implements SmsClientSendConfig {
+
+    //接收短信的手机号码
+    @NotBlank
+    private String phoneNumber;
+    //短信签名名称
+    @NotBlank
+    private String signName;
+    //短信模板code
+    @NotBlank
+    private String templateCode;
+    //短信模板变量对应的实际值
+    @NotNull
+    private Map<String,String> templateParam;
+    @NotBlank
+    //上行短信扩展码
+    private String smsUpExtendCode;
+    // 外部流水扩展字段
+    @NotBlank
+    private String outId;
+
+
+
 }