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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.ruoyi.message.sms.provider.messaginginsert;
 
import com.ruoyi.message.MessageChannel;
import com.ruoyi.message.SendResult;
import com.ruoyi.message.sms.AbstractSmsSender;
import com.ruoyi.message.sms.SmsSendRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
 
/**
 * 预约挂号短信平台发送方({@code messaging-insert} 通道)。
 * <p>
 * 对接特征:Axis SOAP12 {@code SMSMessageAccept(XML)},返回 int。
 * <p>
 * 说明:该通道目前只在 {@code SmsParamServiceImpl.sendSmsInfo} 里使用(预约挂号通知短信),
 * 业务随访流程未走它。收口后可由工厂统一调度。
 */
@Slf4j
@Component
public class MessagingInsertSmsSender extends AbstractSmsSender {
 
    /**
     * 渠道 key
     */
    public static final String KEY = "messaging-insert";
 
    private final MessagingInsertSmsApi messagingInsertSmsApi;
 
    public MessagingInsertSmsSender(MessagingInsertSmsApi messagingInsertSmsApi) {
        this.messagingInsertSmsApi = messagingInsertSmsApi;
    }
 
    @Override
    public String key() {
        return KEY;
    }
 
    @Override
    public String description() {
        return "预约挂号短信平台(MessagingInsert,Axis SOAP12)";
    }
 
    @Override
    protected SendResult doSend(SmsSendRequest request) {
        Integer code = messagingInsertSmsApi.sendSmsInfo(request.getContent(), request.getPhone());
        String codeStr = code == null ? null : code.toString();
        //TODO 待确认:原实现未对返回 int 做成功判定,只把 int 向上返回。
        //     这里按「非空即成功」处理以保持行为(调用方原本也不判断),确认返回码语义后应改为精确判定。
        if (code != null) {
            return SendResult.success(KEY, MessageChannel.SMS, codeStr).withCode(codeStr);
        }
        return SendResult.fail(KEY, MessageChannel.SMS, "短信发送失败", null);
    }
}