diff --git a/mallinkService/pom.xml b/mallinkService/pom.xml index 587b29a7d..048c9d796 100644 --- a/mallinkService/pom.xml +++ b/mallinkService/pom.xml @@ -42,8 +42,8 @@ com.aliyun - alibabacloud-dysmsapi20170525 - 4.0.7 + dysmsapi20170525 + 4.3.1 org.jsoup diff --git a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java index f7f86a205..f30813d6f 100644 --- a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java +++ b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java @@ -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 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 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 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 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