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