pom.xml
@@ -48,8 +48,7 @@ <!-- OSS é ç½® --> <aws-java-sdk-s3.version>1.12.400</aws-java-sdk-s3.version> <!-- SMS é ç½® --> <aliyun.sms.version>2.0.23</aliyun.sms.version> <tencent.sms.version>3.1.687</tencent.sms.version> <sms4j.version>2.1.1</sms4j.version> <!-- æä»¶çæ¬ --> <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version> @@ -234,17 +233,11 @@ <artifactId>aws-java-sdk-s3</artifactId> <version>${aws-java-sdk-s3.version}</version> </dependency> <!--çä¿¡sms4j--> <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>${aliyun.sms.version}</version> </dependency> <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java-sms</artifactId> <version>${tencent.sms.version}</version> <groupId>org.dromara.sms4j</groupId> <artifactId>sms4j-spring-boot-starter</artifactId> <version>${sms4j.version}</version> </dependency> <dependency> ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java
@@ -15,10 +15,11 @@ import org.dromara.common.mail.utils.MailUtils; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.sms.config.properties.SmsProperties; import org.dromara.common.sms.core.SmsTemplate; import org.dromara.common.sms.entity.SmsResult; import org.dromara.common.web.config.properties.CaptchaProperties; import org.dromara.common.web.enums.CaptchaType; import org.dromara.sms4j.api.entity.SmsResponse; import org.dromara.sms4j.core.factory.SmsFactory; import org.dromara.sms4j.provider.enumerate.SupplierType; import org.dromara.web.domain.vo.CaptchaVo; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; @@ -31,8 +32,7 @@ import org.springframework.web.bind.annotation.RestController; import java.time.Duration; import java.util.HashMap; import java.util.Map; import java.util.LinkedHashMap; /** * éªè¯ç æä½å¤ç @@ -64,14 +64,13 @@ String code = RandomUtil.randomNumbers(4); RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); // éªè¯ç 模æ¿id èªè¡å¤ç (æ¥æ°æ®åºæåæ»åå¯) String templateId = ""; Map<String, String> map = new HashMap<>(1); String templateId = "SMS_460945446"; LinkedHashMap<String, String> map = new LinkedHashMap<>(1); map.put("code", code); SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class); SmsResult result = smsTemplate.send(phonenumber, templateId, map); if (!result.isSuccess()) { log.error("éªè¯ç çä¿¡åéå¼å¸¸ => {}", result); return R.fail(result.getMessage()); SmsResponse smsResponse = SmsFactory.createSmsBlend(SupplierType.ALIBABA).sendMessage(phonenumber, templateId, map); if (!"OK".equals(smsResponse.getCode())) { log.error("éªè¯ç çä¿¡åéå¼å¸¸ => {}", smsResponse); return R.fail(smsResponse.getMessage()); } return R.ok(); } ruoyi-admin/src/main/resources/application-dev.yml
@@ -158,14 +158,16 @@ # Socketè¿æ¥è¶ æ¶å¼ï¼å使¯«ç§ï¼ç¼ºçå¼ä¸è¶ æ¶ connectionTimeout: 0 --- # sms çä¿¡ --- # sms çä¿¡ https://wind.kim/doc/start/springboot.html sms: enabled: false enabled: true # é¿éäº dysmsapi.aliyuncs.com # è ¾è®¯äº sms.tencentcloudapi.com endpoint: "dysmsapi.aliyuncs.com" accessKeyId: xxxxxxx accessKeySecret: xxxxxx signName: æµè¯ # è ¾è®¯ä¸ç¨ sdkAppId: alibaba: #é¿éäºçaccessKey accessKeyId: xxxxxxx #é¿éäºçaccessKeySecret accessKeySecret: xxxxxxx #çä¿¡ç¾å signature: æµè¯ #请æ±å°å é»è®¤ä¸ºdysmsapi.aliyuncs.com 妿 ç¹æ®æ¹åå¯ä»¥ä¸ç¨è®¾ç½® requestUrl: dysmsapi.aliyuncs.com ruoyi-common/ruoyi-common-sms/pom.xml
@@ -22,16 +22,10 @@ </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <optional>true</optional> <groupId>org.dromara.sms4j</groupId> <artifactId>sms4j-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java-sms</artifactId> <optional>true</optional> </dependency> </dependencies> </project> ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java
@@ -1,15 +1,8 @@ package org.dromara.common.sms.config; import org.dromara.common.sms.config.properties.SmsProperties; import org.dromara.common.sms.core.AliyunSmsTemplate; import org.dromara.common.sms.core.SmsTemplate; import org.dromara.common.sms.core.TencentSmsTemplate; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * çä¿¡é 置类 @@ -20,29 +13,5 @@ @AutoConfiguration @EnableConfigurationProperties(SmsProperties.class) public class SmsConfig { @Configuration @ConditionalOnProperty(value = "sms.enabled", havingValue = "true") @ConditionalOnClass(com.aliyun.dysmsapi20170525.Client.class) static class AliyunSmsConfig { @Bean public SmsTemplate aliyunSmsTemplate(SmsProperties smsProperties) { return new AliyunSmsTemplate(smsProperties); } } @Configuration @ConditionalOnProperty(value = "sms.enabled", havingValue = "true") @ConditionalOnClass(com.tencentcloudapi.sms.v20190711.SmsClient.class) static class TencentSmsConfig { @Bean public SmsTemplate tencentSmsTemplate(SmsProperties smsProperties) { return new TencentSmsTemplate(smsProperties); } } } ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java
@@ -15,31 +15,5 @@ private Boolean enabled; /** * é ç½®èç¹ * é¿éäº dysmsapi.aliyuncs.com * è ¾è®¯äº sms.tencentcloudapi.com */ private String endpoint; /** * key */ private String accessKeyId; /** * å¯å */ private String accessKeySecret; /* * çä¿¡ç¾å */ private String signName; /** * çä¿¡åºç¨ID (è ¾è®¯ä¸å±) */ private String sdkAppId; } ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/AliyunSmsTemplate.java
ÎļþÒÑɾ³ý ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/SmsTemplate.java
ÎļþÒÑɾ³ý ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/TencentSmsTemplate.java
ÎļþÒÑɾ³ý ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/entity/SmsResult.java
ÎļþÒÑɾ³ý ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/exception/SmsException.java
ÎļþÒÑɾ³ý ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java
@@ -1,17 +1,18 @@ package org.dromara.demo.controller; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.sms.config.properties.SmsProperties; import org.dromara.common.sms.core.SmsTemplate; import lombok.RequiredArgsConstructor; import org.dromara.sms4j.api.entity.SmsResponse; import org.dromara.sms4j.core.factory.SmsFactory; import org.dromara.sms4j.provider.enumerate.SupplierType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; import java.util.LinkedHashMap; /** * çä¿¡æ¼ç¤ºæ¡ä¾ @@ -44,11 +45,10 @@ if (!SpringUtils.containsBean("aliyunSmsTemplate")) { return R.fail("é¿éäºä¾èµæªå¼å ¥ï¼"); } SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class); Map<String, String> map = new HashMap<>(1); LinkedHashMap<String, String> map = new LinkedHashMap<>(1); map.put("code", "1234"); Object send = smsTemplate.send(phones, templateId, map); return R.ok(send); SmsResponse smsResponse = SmsFactory.createSmsBlend(SupplierType.ALIBABA).sendMessage(phones, templateId, map); return R.ok(smsResponse); } /** @@ -65,12 +65,11 @@ if (!SpringUtils.containsBean("tencentSmsTemplate")) { return R.fail("è ¾è®¯äºä¾èµæªå¼å ¥ï¼"); } SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class); Map<String, String> map = new HashMap<>(1); LinkedHashMap<String, String> map = new LinkedHashMap<>(1); // map.put("2", "æµè¯æµè¯"); map.put("1", "1234"); Object send = smsTemplate.send(phones, templateId, map); return R.ok(send); SmsResponse smsResponse = SmsFactory.createSmsBlend(SupplierType.TENCENT).sendMessage(phones, templateId, map); return R.ok(smsResponse); } }