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); } }