liusheng
2026-10-10 0afac42fb2e9d6e5291304dd0044ce3042b45d2b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
    }
}