mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2025-09-03 11:05:58 +00:00
add 新增 sms4j 短信融合 支持数十种短信服务商共用
remove 移除 原框架自带短信功能
This commit is contained in:
@@ -5,14 +5,14 @@ import cn.hutool.core.util.RandomUtil;
|
||||
import com.ruoyi.common.core.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.constant.Constants;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.redis.utils.RedisUtils;
|
||||
import com.ruoyi.common.sms.config.properties.SmsProperties;
|
||||
import com.ruoyi.common.sms.core.SmsTemplate;
|
||||
import com.ruoyi.common.sms.entity.SmsResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.sms4j.api.SmsBlend;
|
||||
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;
|
||||
@@ -20,8 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.time.Duration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* 短信功能
|
||||
@@ -35,8 +34,6 @@ import java.util.Map;
|
||||
@RequestMapping("/sms")
|
||||
public class SysSmsController extends BaseController {
|
||||
|
||||
private final SmsProperties smsProperties;
|
||||
|
||||
/**
|
||||
* 短信验证码
|
||||
*
|
||||
@@ -44,21 +41,18 @@ public class SysSmsController extends BaseController {
|
||||
*/
|
||||
@GetMapping("/code")
|
||||
public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
|
||||
if (!smsProperties.getEnabled()) {
|
||||
return R.fail("当前系统没有开启短信功能!");
|
||||
}
|
||||
String key = CacheConstants.CAPTCHA_CODE_KEY + phonenumber;
|
||||
String code = RandomUtil.randomNumbers(4);
|
||||
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
||||
// 验证码模板id 自行处理 (查数据库或写死均可)
|
||||
String templateId = "";
|
||||
Map<String, String> map = new HashMap<>(1);
|
||||
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.getIsSuccess()) {
|
||||
log.error("验证码短信发送异常 => {}", result);
|
||||
return R.fail(result.getMessage());
|
||||
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
|
||||
if (!"OK".equals(smsResponse.getCode())) {
|
||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||
return R.fail(smsResponse.getMessage());
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
@@ -1,19 +1,19 @@
|
||||
package com.ruoyi.resource.dubbo;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.sms.config.properties.SmsProperties;
|
||||
import com.ruoyi.common.sms.core.SmsTemplate;
|
||||
import com.ruoyi.common.sms.entity.SmsResult;
|
||||
import com.ruoyi.common.core.utils.JsonUtils;
|
||||
import com.ruoyi.resource.api.RemoteSmsService;
|
||||
import com.ruoyi.resource.api.domain.SysSms;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.dromara.sms4j.api.SmsBlend;
|
||||
import org.dromara.sms4j.api.entity.SmsResponse;
|
||||
import org.dromara.sms4j.core.factory.SmsFactory;
|
||||
import org.dromara.sms4j.provider.enumerate.SupplierType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* 短信服务
|
||||
@@ -26,8 +26,6 @@ import java.util.Map;
|
||||
@DubboService
|
||||
public class RemoteSmsServiceImpl implements RemoteSmsService {
|
||||
|
||||
private final SmsProperties smsProperties;
|
||||
|
||||
/**
|
||||
* 发送短信
|
||||
*
|
||||
@@ -35,13 +33,14 @@ public class RemoteSmsServiceImpl implements RemoteSmsService {
|
||||
* @param templateId 模板id
|
||||
* @param param 模板对应参数
|
||||
*/
|
||||
public SysSms send(String phones, String templateId, Map<String, String> param) throws ServiceException {
|
||||
if (!smsProperties.getEnabled()) {
|
||||
throw new ServiceException("当前系统没有开启短信功能!");
|
||||
}
|
||||
SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
|
||||
SmsResult smsResult = smsTemplate.send(phones, templateId, param);
|
||||
return BeanUtil.toBean(smsResult, SysSms.class);
|
||||
public SysSms send(String phones, String templateId, LinkedHashMap<String, String> param) throws ServiceException {
|
||||
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, param);
|
||||
SysSms sysSms = new SysSms();
|
||||
sysSms.setIsSuccess(smsResponse.isSuccess());
|
||||
sysSms.setMessage(smsResponse.getMessage());
|
||||
sysSms.setResponse(JsonUtils.toJsonString(smsResponse));
|
||||
return sysSms;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user