package com.ruoyi.message.sms;
|
|
import com.ruoyi.message.MessageChannel;
|
import com.ruoyi.message.SendResult;
|
import org.apache.commons.lang3.StringUtils;
|
|
/**
|
* 短信发送方公共基类:统一日志、参数校验、异常兜底。
|
*/
|
public abstract class AbstractSmsSender implements SmsSender {
|
|
@Override
|
public SendResult send(SmsSendRequest request) {
|
if (request == null || StringUtils.isBlank(request.getPhone())) {
|
return SendResult.fail(key(), MessageChannel.SMS, "手机号为空", null);
|
}
|
if (StringUtils.isBlank(request.getContent())) {
|
return SendResult.fail(key(), MessageChannel.SMS, "短信内容为空", null);
|
}
|
try {
|
return doSend(request);
|
} catch (Exception e) {
|
logError(request, e);
|
return SendResult.fail(key(), MessageChannel.SMS, "短信发送异常:" + e.getMessage(), null);
|
}
|
}
|
|
/**
|
* 真正的发送逻辑,由各渠道实现
|
*/
|
protected abstract SendResult doSend(SmsSendRequest request) throws Exception;
|
|
/**
|
* 异常日志,子类可覆写补充上下文
|
*/
|
protected void logError(SmsSendRequest request, Exception e) {
|
org.slf4j.LoggerFactory.getLogger(getClass())
|
.error("【{}】短信发送异常,手机号:{},错误:{}", key(), request.getPhone(), e.getMessage(), e);
|
}
|
}
|