Explorar el Código

fix

release_toaliyun_real
winter hace 4 meses
padre
commit
52d0ef2236
Se han modificado 2 ficheros con 101 adiciones y 148 borrados
  1. +2
    -2
      mallinkService/pom.xml
  2. +99
    -146
      mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java

+ 2
- 2
mallinkService/pom.xml Ver fichero

@@ -42,8 +42,8 @@
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-dysmsapi20170525</artifactId>
<version>4.0.7</version>
<artifactId>dysmsapi20170525</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>


+ 99
- 146
mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java Ver fichero

@@ -2,42 +2,28 @@ package com.iformall.sms.aliyun;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.auth.credentials.provider.DefaultCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
import com.aliyun.sdk.service.dysmsapi20170525.models.CreateSmsSignRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.CreateSmsSignResponse;
import com.aliyun.sdk.service.dysmsapi20170525.models.CreateSmsTemplateRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.CreateSmsTemplateResponse;
import com.aliyun.sdk.service.dysmsapi20170525.models.GetSmsSignRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.GetSmsSignResponse;
import com.aliyun.sdk.service.dysmsapi20170525.models.GetSmsTemplateRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.GetSmsTemplateResponse;
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
import com.aliyun.tea.TeaException;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.*;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.google.gson.Gson;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxMsgConfig;
import com.iformall.exception.MallinkException;
import com.iformall.sms.EnumSMSChannel;
import com.iformall.sms.SMSExcutor;
import com.iformall.sms.SMSResult;
import com.iformall.sms.aliyun.bean.*;

import darabonba.core.client.ClientOverrideConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

@Component
@Slf4j
@@ -48,6 +34,21 @@ public class AliyunSMS implements SMSExcutor {
public void setSmsConfig(AliyunSMSConfig smsConfig){
this.smsConfig = smsConfig;
}
public com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
Config credentialConfig = new Config();
credentialConfig.setType("access_key");
// 必填参数,此处以从环境变量中获取AccessKey ID为例
credentialConfig.setAccessKeyId(smsConfig.getAccessKeyId());
// 必填参数,此处以从环境变量中获取AccessKey Secret为例
credentialConfig.setAccessKeySecret(smsConfig.getAccessKeySecret());
Client credentialClient = new Client(credentialConfig);
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.setCredential(credentialClient);
config.setEndpoint(smsConfig.getDomain());
return new com.aliyun.dysmsapi20170525.Client(config);
}


@Override
public String sendMsg(String secret, String bid, String publickey, String phone, String signature, String msg, String notifyUrl, String verifysms, String templateParam, String templateCode, String outId) {
@@ -87,145 +88,97 @@ public class AliyunSMS implements SMSExcutor {
return JSON.toJSONString(SMSResult);
*/
SMSResult SMSResult = new SMSResult();
DefaultCredentialProvider provider = DefaultCredentialProvider.builder().build();
AsyncClient client = AsyncClient.builder()
.region(smsConfig.getRegionId()) // Region ID
//.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
.credentialsProvider(provider)
//.serviceConfiguration(Configuration.create()) // Service-level configuration
// Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
.overrideConfiguration(
ClientOverrideConfiguration.create()
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
.setEndpointOverride(smsConfig.getDomain())
//.setConnectTimeout(Duration.ofSeconds(30))
)
.build();

CreateSmsTemplateRequest createSmsTemplateRequest = CreateSmsTemplateRequest.builder()
// Request-level configuration rewrite, can set Http request parameters, etc.
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.templateName(templateName)
.templateContent(content)
.remark(remark)
.templateType(templateType)
.build();

// Asynchronously get the return value of the API request
CompletableFuture<CreateSmsTemplateResponse> response = client.createSmsTemplate(createSmsTemplateRequest);
// Synchronously get the return value of the API request
CreateSmsTemplateResponse resp = null;
com.aliyun.dysmsapi20170525.Client client;
try {
resp = response.get();
Map<String, Object> retMap = resp.toMap();
if(retMap != null){
String code = (String) retMap.get("Code");
if (StringUtils.isNotBlank(code) && code.equalsIgnoreCase("ok")) {
SMSResult.setRet("1");
SMSResult.setAliyunModelCode((String)retMap.get("TemplateCode"));
}
}
client = this.createClient();
} catch (Exception e) {
log.error("addTemplate error",e);
return JSON.toJSONString(SMSResult);
} catch (InterruptedException | ExecutionException e) {
log.error("addTemplate error.",e);
return JSON.toJSONString(SMSResult);
}finally {
client.close();
}
// Asynchronous processing of return values
/*response.thenAccept(resp -> {
System.out.println(new Gson().toJson(resp));
}).exceptionally(throwable -> { // Handling exceptions
System.out.println(throwable.getMessage());
return null;
});*/

// Finally, close the client
//client.close();
com.aliyun.dysmsapi20170525.models.CreateSmsTemplateRequest createSmsTemplateRequest = new com.aliyun.dysmsapi20170525.models.CreateSmsTemplateRequest();
createSmsTemplateRequest.setTemplateName(templateName);
createSmsTemplateRequest.setTemplateContent(content);
createSmsTemplateRequest.setTemplateType(templateType);
createSmsTemplateRequest.setRemark(remark);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
com.aliyun.dysmsapi20170525.models.CreateSmsTemplateResponse resp = client.createSmsTemplateWithOptions(createSmsTemplateRequest, runtime);
JSONObject respo = JSON.parseObject(JSON.toJSONString(resp));
String code = respo.getString("Code");
if (StringUtils.isNotBlank(code) && code.equalsIgnoreCase("ok")) {
SMSResult.setRet("1");
SMSResult.setAliyunModelCode(respo.getString("TemplateCode"));
}
}catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
//System.out.println(error.getMessage());
// 诊断地址
//System.out.println(error.getData().get("Recommend"));
log.error("addTemplate error:"+error.getMessage()+"|recommend:"+error.getData().get("Recommend"),error);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
//System.out.println(error.getMessage());
// 诊断地址
//System.out.println(error.getData().get("Recommend"));
log.error("addTemplate error:"+error.getMessage()+"|recommend:"+error.getData().get("Recommend"),_error);
}
return JSON.toJSONString(SMSResult);
}

@Override
public String querySmsTemplate(String templateCode) {
/**
SMSTemplate smsTemplate = new SMSTemplate();
smsTemplate.setTemplateCode(templateCode);
QuerySmsTemplateResponse querySmsTemplateResponse = this.querySmsTemplate(smsTemplate);
if(querySmsTemplateResponse.getCode() != null && querySmsTemplateResponse.getCode().equalsIgnoreCase("ok")){
JSONObject obj = new JSONObject();
obj.put("templateCode",querySmsTemplateResponse.getTemplateCode());
obj.put("templateStatus",querySmsTemplateResponse.getTemplateStatus());//0:审核中。1:审核通过。2:审核失败
obj.put("reason",querySmsTemplateResponse.getReason());
return obj.toJSONString();
}
return null;
*/
DefaultCredentialProvider provider = DefaultCredentialProvider.builder().build();

// Configure the Client
AsyncClient client = AsyncClient.builder()
.region(smsConfig.getRegionId()) // Region ID
//.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
.credentialsProvider(provider)
//.serviceConfiguration(Configuration.create()) // Service-level configuration
// Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
.overrideConfiguration(
ClientOverrideConfiguration.create()
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
.setEndpointOverride(smsConfig.getDomain())
//.setConnectTimeout(Duration.ofSeconds(30))
)
.build();

GetSmsTemplateRequest getSmsTemplateRequest = GetSmsTemplateRequest.builder()
// Request-level configuration rewrite, can set Http request parameters, etc.
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.build();

// Asynchronously get the return value of the API request
CompletableFuture<GetSmsTemplateResponse> response = client.getSmsTemplate(getSmsTemplateRequest);
// Synchronously get the return value of the API request
GetSmsTemplateResponse resp = null;
com.aliyun.dysmsapi20170525.Client client;
try {
resp = response.get();
Map<String, Object> retMap = resp.toMap();
if(retMap != null){
String code = (String) retMap.get("Code");
if (StringUtils.isNotBlank(code) && code.equalsIgnoreCase("ok")) {
JSONObject obj = new JSONObject();
obj.put("templateCode",retMap.get("TemplateCode"));
String templateStauts = (String) retMap.get("TemplateStatus");
obj.put("templateStatus",templateStauts);//0:审核中。1:审核通过。2:审核失败
String reason = "";
if (StringUtils.isNotBlank(templateStauts) && templateStauts.equals("2")) {
Object ajo = retMap.get("AuditInfo");
if (null != ajo) {
JSONObject ajoo = JSON.parseObject(JSON.toJSONString(ajo));
reason = ajoo.getString("RejectInfo");
}
}
obj.put("reason",reason);
return obj.toJSONString();
}
}
return null;
} catch (InterruptedException | ExecutionException e) {
log.error("querySmsTemplate error.",e);
client = this.createClient();
} catch (Exception e) {
log.error("addTemplate error",e);
return null;
}finally {
client.close();
}
// Asynchronous processing of return values
/*response.thenAccept(resp -> {
System.out.println(new Gson().toJson(resp));
}).exceptionally(throwable -> { // Handling exceptions
System.out.println(throwable.getMessage());
return null;
});*/

// Finally, close the client
//client.close();
com.aliyun.dysmsapi20170525.models.GetSmsTemplateRequest getSmsTemplateRequest = new com.aliyun.dysmsapi20170525.models.GetSmsTemplateRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
com.aliyun.dysmsapi20170525.models.GetSmsTemplateResponse resp = client.getSmsTemplateWithOptions(getSmsTemplateRequest, runtime);
JSONObject respo = JSON.parseObject(JSON.toJSONString(resp));
String code = respo.getString("Code");
if (StringUtils.isNotBlank(code) && code.equalsIgnoreCase("ok")) {
JSONObject obj = new JSONObject();
obj.put("templateCode",respo.getString("TemplateCode"));
String templateStauts = respo.getString("TemplateStatus");
obj.put("templateStatus",templateStauts);//0:审核中。1:审核通过。2:审核失败
String reason = "";
if (StringUtils.isNotBlank(templateStauts) && templateStauts.equals("2")) {
JSONObject ajo = respo.getJSONObject("AuditInfo");
if (null != ajo) {
reason = ajo.getString("RejectInfo");
}
}
obj.put("reason",reason);
return obj.toJSONString();
}
return null;
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
//System.out.println(error.getMessage());
// 诊断地址
//System.out.println(error.getData().get("Recommend"));
log.error("addTemplate error:"+error.getMessage()+"|recommend:"+error.getData().get("Recommend"),error);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
//System.out.println(error.getMessage());
// 诊断地址
//System.out.println(error.getData().get("Recommend"));
log.error("addTemplate error:"+error.getMessage()+"|recommend:"+error.getData().get("Recommend"),error);
}
return null;
}

@Override


Cargando…
Cancelar
Guardar