From 810e0199e63f0179c5f0b988c81ba519deb5ad9b Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Sat, 27 Dec 2025 19:04:10 +0800 Subject: [PATCH] fix --- mallinkService/pom.xml | 5 + .../com/iformall/sms/aliyun/AliyunSMS.java | 156 ++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/mallinkService/pom.xml b/mallinkService/pom.xml index a8b81e395..587b29a7d 100644 --- a/mallinkService/pom.xml +++ b/mallinkService/pom.xml @@ -40,6 +40,11 @@ alipay-easysdk 2.2.0 + + com.aliyun + alibabacloud-dysmsapi20170525 + 4.0.7 + org.jsoup 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 9e9aec629..f7f86a205 100644 --- a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java +++ b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java @@ -2,12 +2,23 @@ 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.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; @@ -15,6 +26,8 @@ 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; @@ -23,6 +36,8 @@ 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 @@ -57,6 +72,7 @@ public class AliyunSMS implements SMSExcutor { @Override public String addTemplate(String secret, String bid, String publickey, String signature, String content, String notifyUrl, String verifysms, String templateName, Integer templateType, String remark) { + /** SMSResult SMSResult = new SMSResult(); SMSTemplate smsTemplate = new SMSTemplate(); smsTemplate.setTemplateName(templateName); @@ -69,10 +85,70 @@ public class AliyunSMS implements SMSExcutor { SMSResult.setAliyunModelCode(addSmsTemplateResponse.getTemplateCode()); } 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; + 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")); + } + + } + 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(); } @Override public String querySmsTemplate(String templateCode) { + /** SMSTemplate smsTemplate = new SMSTemplate(); smsTemplate.setTemplateCode(templateCode); QuerySmsTemplateResponse querySmsTemplateResponse = this.querySmsTemplate(smsTemplate); @@ -84,6 +160,72 @@ public class AliyunSMS implements SMSExcutor { 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; + 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); + 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(); } @Override @@ -167,9 +309,12 @@ public class AliyunSMS implements SMSExcutor { /** * 添加签名 + * 新版本需要对接 + * https://api.aliyun.com/document/Dysmsapi/2017-05-25/CreateSmsSign?spm=5176.25163407.overview-index-9c3d4_4cfbe_0.12.51a72ec8oDkBre * @param smsSign */ public AddSmsSignResponse addSmsSign(SMSSign smsSign){ + /** IAcsClient acsClient = getClient(); AddSmsSignRequest request = new AddSmsSignRequest(); request.setSignName(smsSign.getSignName()); @@ -184,6 +329,8 @@ public class AliyunSMS implements SMSExcutor { } log.info("添加签名-----" + response.getCode() + "----" + response.getMessage()); return response; + */ + return null; } /** @@ -191,6 +338,7 @@ public class AliyunSMS implements SMSExcutor { * @param smsSign */ public DeleteSmsSignResponse deleteSmsSign(SMSSign smsSign){ + /** IAcsClient acsClient = getClient(); DeleteSmsSignRequest request = new DeleteSmsSignRequest(); request.setSignName(smsSign.getSignName()); @@ -203,6 +351,8 @@ public class AliyunSMS implements SMSExcutor { } log.info("删除签名-----" + response.getCode() + "----" + response.getMessage()); return response; + */ + return null; } /** @@ -210,6 +360,7 @@ public class AliyunSMS implements SMSExcutor { * @param smsSign */ public ModifySmsSignResponse modifySmsSign(SMSSign smsSign){ + /** IAcsClient acsClient = getClient(); ModifySmsSignRequest request = new ModifySmsSignRequest(); request.setSignName(smsSign.getSignName()); @@ -224,6 +375,8 @@ public class AliyunSMS implements SMSExcutor { } log.info("修改签名----" + response.getCode() + "----" + response.getMessage()); return response; + */ + return null; } /** @@ -231,6 +384,7 @@ public class AliyunSMS implements SMSExcutor { * @param smsSign */ public QuerySmsSignResponse querySmsSign(SMSSign smsSign){ + /** IAcsClient acsClient = getClient(); QuerySmsSignRequest request = new QuerySmsSignRequest(); request.setSignName(smsSign.getSignName()); @@ -243,6 +397,8 @@ public class AliyunSMS implements SMSExcutor { } log.info("查询签名----" + response.getCode() + "----" + response.getMessage()); return response; + */ + return null; } /**