From fd7b8fb7c89832c28a838b0449bbb8a392433ee2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 22 四月 2025 14:33:02 +0800 Subject: [PATCH] 将华为云短信替换成阿里云短信 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 7 ++ ruoyi-service/ruoyi-account/pom.xml | 5 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/ALiSendSms.java | 130 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+), 1 deletions(-) diff --git a/ruoyi-service/ruoyi-account/pom.xml b/ruoyi-service/ruoyi-account/pom.xml index 2da90af..76be88d 100644 --- a/ruoyi-service/ruoyi-account/pom.xml +++ b/ruoyi-service/ruoyi-account/pom.xml @@ -132,6 +132,11 @@ <artifactId>aliyun-sdk-oss</artifactId> <version>3.8.0</version> </dependency> + <dependency> + <groupId>com.aliyun</groupId> + <artifactId>aliyun-java-sdk-core</artifactId> + <version>4.4.3</version> + </dependency> </dependencies> <build> diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index abd5d56..1f418bd 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.account.api.model.*; import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.service.*; +import com.ruoyi.account.util.ALiSendSms; import com.ruoyi.account.util.GeodesyUtil; import com.ruoyi.account.util.SMSUtil; import com.ruoyi.account.util.payment.PaymentUtil; @@ -65,6 +66,9 @@ @Resource private RedisService redisService; + + @Resource + private ALiSendSms aLiSendSms; @Resource private ShopClient shopClient; @@ -260,7 +264,8 @@ for (int i = 0; i < 6; i++) { code += Double.valueOf(Math.random() * 10).intValue(); } - SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); +// SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); + aLiSendSms.sendSms(smsCode.getPhone(), "SMS_484035336", "{\"code\":\"" + code + "\"}"); redisService.setCacheObject(smsCode.getPhone(), code, 300L, TimeUnit.SECONDS); return R.ok(); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/ALiSendSms.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/ALiSendSms.java new file mode 100644 index 0000000..2ed6b86 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/ALiSendSms.java @@ -0,0 +1,130 @@ +package com.ruoyi.account.util; + + +import com.aliyuncs.CommonRequest; +import com.aliyuncs.CommonResponse; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.profile.DefaultProfile; +import com.google.gson.Gson; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 阿里云短信工具类 + */ +@Component +public class ALiSendSms { + + // 设置鉴权参数,初始化客户端 + private DefaultProfile profile = DefaultProfile.getProfile( + "cn-hangzhou",// 地域ID + "LTAI5tQ7dsq2QDaLdF2mnQKC",// 您的AccessKey ID + "ZCyM3T7Ye3TLmLGN8oFYPzuukkdWMG");// 您的AccessKey Secret + private IAcsClient client = new DefaultAcsClient(profile); + + private static void log_print(String functionName, Object result) { + Gson gson = new Gson(); + System.out.println("-------------------------------" + functionName + "-------------------------------"); + System.out.println(gson.toJson(result)); + } + + /** + * 添加短信模板 + */ + public String addSmsTemplate() throws ClientException { + CommonRequest addSmsTemplateRequest = new CommonRequest(); + addSmsTemplateRequest.setSysDomain("dysmsapi.aliyuncs.com"); + addSmsTemplateRequest.setSysAction("AddSmsTemplate"); + addSmsTemplateRequest.setSysVersion("2017-05-25"); + // 短信类型。0:验证码;1:短信通知;2:推广短信;3:国际/港澳台消息 + addSmsTemplateRequest.putQueryParameter("TemplateType", "0"); + // 模板名称,长度为1~30个字符 + addSmsTemplateRequest.putQueryParameter("TemplateName", "测试短信模板"); + // 模板内容,长度为1~500个字符 + addSmsTemplateRequest.putQueryParameter("TemplateContent", "您正在申请手机注册,验证码为:${code},5分钟内有效!"); + // 短信模板申请说明 + addSmsTemplateRequest.putQueryParameter("Remark", "测试"); + CommonResponse addSmsTemplateResponse = client.getCommonResponse(addSmsTemplateRequest); + String data = addSmsTemplateResponse.getData(); + // 消除返回文本中的反转义字符 + String sData = data.replaceAll("'\'", ""); + log_print("addSmsTemplate", sData); + Gson gson = new Gson(); + // 将字符串转换为Map类型,取TemplateCode字段值 + Map map = gson.fromJson(sData, Map.class); + Object templateCode = map.get("TemplateCode"); + return templateCode.toString(); + } + + /** + * 发送短信 + */ + public String sendSms(String phone, String templateCode, String json) { + CommonRequest request = new CommonRequest(); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + // 接收短信的手机号码 + request.putQueryParameter("PhoneNumbers", phone); + // 短信签名名称。请在控制台签名管理页面签名名称一列查看(必须是已添加、并通过审核的短信签名)。 + request.putQueryParameter("SignName", "岐济生"); + // 短信模板ID + request.putQueryParameter("TemplateCode", templateCode); + // 短信模板变量对应的实际值,JSON格式。 + request.putQueryParameter("TemplateParam", json); + CommonResponse commonResponse = null; + try { + commonResponse = client.getCommonResponse(request); + } catch (ClientException e) { + throw new RuntimeException(e); + } + String data = commonResponse.getData(); + String sData = data.replaceAll("'\'", ""); + log_print("sendSms", sData); + return sData; + } + public String sendSms1(String phone, String templateCode, String json) throws ClientException { + CommonRequest request = new CommonRequest(); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + // 接收短信的手机号码 + request.putQueryParameter("PhoneNumbers", phone); + // 短信签名名称。请在控制台签名管理页面签名名称一列查看(必须是已添加、并通过审核的短信签名)。 + request.putQueryParameter("SignName", "经纬出行"); + // 短信模板ID + request.putQueryParameter("TemplateCode", templateCode); + // 短信模板变量对应的实际值,JSON格式。 + request.putQueryParameter("TemplateParam", json); + CommonResponse commonResponse = client.getCommonResponse(request); + String data = commonResponse.getData(); + String sData = data.replaceAll("'\'", ""); + log_print("sendSms", sData); + return sData; + } + /** + * 查询发送详情 + */ + private void querySendDetails(String bizId) throws ClientException { + CommonRequest request = new CommonRequest(); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("QuerySendDetails"); + // 接收短信的手机号码 + request.putQueryParameter("PhoneNumber", "156xxxxxxxx"); + // 短信发送日期,支持查询最近30天的记录。格式为yyyyMMdd,例如20191010。 + request.putQueryParameter("SendDate", "20191010"); + // 分页记录数量 + request.putQueryParameter("PageSize", "10"); + // 分页当前页码 + request.putQueryParameter("CurrentPage", "1"); + // 发送回执ID,即发送流水号。 + request.putQueryParameter("BizId", bizId); + CommonResponse response = client.getCommonResponse(request); + log_print("querySendDetails", response.getData()); + } + +} -- Gitblit v1.7.1