mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2025-11-28 01:00:05 +08:00
!145 将现有sms4j版本升级到3X
Merge pull request !145 from AprilWind/feat/dev-sms3.x
This commit is contained in:
@@ -14,7 +14,6 @@ import org.dromara.common.web.core.BaseController;
|
||||
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;
|
||||
@@ -50,11 +49,11 @@ public class SysSmsController extends BaseController {
|
||||
String templateId = "";
|
||||
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
|
||||
map.put("code", code);
|
||||
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("tx1");
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
|
||||
if (!"OK".equals(smsResponse.getCode())) {
|
||||
if (!smsResponse.isSuccess()) {
|
||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||
return R.fail(smsResponse.getMessage());
|
||||
return R.fail(smsResponse.getData().toString());
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 短信服务
|
||||
* 消息服务
|
||||
*
|
||||
* @author Lion Li
|
||||
*/
|
||||
|
||||
@@ -3,22 +3,20 @@ package org.dromara.resource.dubbo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.resource.api.RemoteSmsService;
|
||||
import org.dromara.resource.api.domain.RemoteSms;
|
||||
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.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 短信服务
|
||||
*
|
||||
* @author Lion Li
|
||||
* @author Feng
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@@ -27,20 +25,211 @@ import java.util.LinkedHashMap;
|
||||
public class RemoteSmsServiceImpl implements RemoteSmsService {
|
||||
|
||||
/**
|
||||
* 发送短信
|
||||
* 获取特定供应商类型的 SmsBlend 实例
|
||||
*
|
||||
* @param phones 电话号(多个逗号分割)
|
||||
* @param templateId 模板id
|
||||
* @param param 模板对应参数
|
||||
* @return SmsBlend 实例,代表指定供应商类型
|
||||
*/
|
||||
public RemoteSms send(String phones, String templateId, LinkedHashMap<String, String> param) throws ServiceException {
|
||||
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, param);
|
||||
RemoteSms sysSms = new RemoteSms();
|
||||
sysSms.setIsSuccess(smsResponse.isSuccess());
|
||||
sysSms.setMessage(smsResponse.getMessage());
|
||||
sysSms.setResponse(JsonUtils.toJsonString(smsResponse));
|
||||
return sysSms;
|
||||
private SmsBlend getSmsBlend() {
|
||||
return SmsFactory.getSmsBlend("tx1");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据给定的 SmsResponse 对象创建并返回一个 RemoteSms 对象,封装短信发送的响应信息
|
||||
*
|
||||
* @param smsResponse 短信发送的响应信息
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
private RemoteSms getRemoteSms(SmsResponse smsResponse) {
|
||||
// 创建一个 RemoteSms 对象,封装响应信息
|
||||
RemoteSms sms = new RemoteSms();
|
||||
sms.setSuccess(smsResponse.isSuccess());
|
||||
sms.setResponse(smsResponse.getData().toString());
|
||||
sms.setConfigId(smsResponse.getConfigId());
|
||||
return sms;
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步方法:发送简单文本短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param message 短信内容
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
@Override
|
||||
public RemoteSms sendMessage(String phone, String message) {
|
||||
// 调用 getSmsBlend 方法获取对应短信供应商的 SmsBlend 实例
|
||||
SmsResponse smsResponse = getSmsBlend().sendMessage(phone, message);
|
||||
return getRemoteSms(smsResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步方法:发送固定消息模板多模板参数短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
@Override
|
||||
public RemoteSms sendMessage(String phone, LinkedHashMap<String, String> messages) {
|
||||
SmsResponse smsResponse = getSmsBlend().sendMessage(phone, messages);
|
||||
return getRemoteSms(smsResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步方法:发送带参数的短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param templateId 短信模板ID
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
@Override
|
||||
public RemoteSms sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||
// 调用 getSmsBlend 方法获取对应短信供应商的 SmsBlend 实例
|
||||
SmsResponse smsResponse = getSmsBlend().sendMessage(phone, templateId, messages);
|
||||
return getRemoteSms(smsResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步方法:群发简单文本短信
|
||||
*
|
||||
* @param phones 目标手机号列表
|
||||
* @param message 短信内容
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
@Override
|
||||
public RemoteSms massTexting(List<String> phones, String message) {
|
||||
// 调用 getSmsBlend 方法获取对应短信供应商的 SmsBlend 实例
|
||||
SmsResponse smsResponse = getSmsBlend().massTexting(phones, message);
|
||||
return getRemoteSms(smsResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步方法:群发带参数的短信
|
||||
*
|
||||
* @param phones 目标手机号列表
|
||||
* @param templateId 短信模板ID
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
* @return 封装了短信发送结果的 RemoteSms 对象
|
||||
*/
|
||||
@Override
|
||||
public RemoteSms massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
|
||||
// 调用 getSmsBlend 方法获取对应短信供应商的 SmsBlend 实例
|
||||
SmsResponse smsResponse = getSmsBlend().massTexting(phones, templateId, messages);
|
||||
return getRemoteSms(smsResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步方法:发送简单文本短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param message 短信内容
|
||||
*/
|
||||
@Override
|
||||
public void sendMessageAsync(String phone, String message) {
|
||||
getSmsBlend().sendMessageAsync(phone, message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步方法:发送带参数的短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param templateId 短信模板ID
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
*/
|
||||
@Override
|
||||
public void sendMessageAsync(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||
getSmsBlend().sendMessageAsync(phone, templateId, messages);
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟发送简单文本短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param message 短信内容
|
||||
* @param delayedTime 延迟发送时间(毫秒)
|
||||
*/
|
||||
@Override
|
||||
public void delayedMessage(String phone, String message, Long delayedTime) {
|
||||
getSmsBlend().delayedMessage(phone, message, delayedTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟发送带参数的短信
|
||||
*
|
||||
* @param phone 目标手机号
|
||||
* @param templateId 短信模板ID
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
* @param delayedTime 延迟发送时间(毫秒)
|
||||
*/
|
||||
@Override
|
||||
public void delayedMessage(String phone, String templateId, LinkedHashMap<String, String> messages, Long delayedTime) {
|
||||
getSmsBlend().delayedMessage(phone, templateId, messages, delayedTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟群发简单文本短信
|
||||
*
|
||||
* @param phones 目标手机号列表
|
||||
* @param message 短信内容
|
||||
* @param delayedTime 延迟发送时间(毫秒)
|
||||
*/
|
||||
@Override
|
||||
public void delayMassTexting(List<String> phones, String message, Long delayedTime) {
|
||||
getSmsBlend().delayMassTexting(phones, message, delayedTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟批量发送带参数的短信
|
||||
*
|
||||
* @param phones 目标手机号列表
|
||||
* @param templateId 短信模板ID
|
||||
* @param messages 短信模板参数,使用 LinkedHashMap 以保持参数顺序
|
||||
* @param delayedTime 延迟发送时间(毫秒)
|
||||
*/
|
||||
@Override
|
||||
public void delayMassTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages, Long delayedTime) {
|
||||
getSmsBlend().delayMassTexting(phones, templateId, messages, delayedTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入黑名单
|
||||
*
|
||||
* @param phone 手机号
|
||||
*/
|
||||
@Override
|
||||
public void joinInBlacklist(String phone) {
|
||||
getSmsBlend().joinInBlacklist(phone);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入黑名单
|
||||
*
|
||||
* @param phones 手机号列表
|
||||
*/
|
||||
@Override
|
||||
public void joinInBlacklist(List<String> phones) {
|
||||
getSmsBlend().batchJoinBlacklist(phones);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除黑名单
|
||||
*
|
||||
* @param phone 手机号
|
||||
*/
|
||||
@Override
|
||||
public void removeFromBlacklist(String phone) {
|
||||
getSmsBlend().removeFromBlacklist(phone);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除黑名单
|
||||
*
|
||||
* @param phones 手机号
|
||||
*/
|
||||
@Override
|
||||
public void removeFromBlacklist(List<String> phones) {
|
||||
getSmsBlend().batchRemovalFromBlacklist(phones);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user