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} 通道)。 *

* 对接特征:Axis SOAP12 {@code SMSMessageAccept(XML)},返回 int。 *

* 说明:该通道目前只在 {@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); } }