package com.ruoyi.message.sms.provider.messaginginsert; import com.ruoyi.message.config.MessageProperties; import com.ruoyi.message.sms.provider.messaginginsert.ws.MessagingInsertLocator; import com.ruoyi.message.sms.provider.messaginginsert.ws.MessagingInsertSoap12Stub; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.xml.rpc.holders.IntHolder; import javax.xml.rpc.holders.StringHolder; import java.util.Date; /** * 预约挂号短信平台(MessagingInsert)API。 *
* 对接特征:Axis SOAP12,{@code SMSMessageAccept(xmlReq, out int, out string)}, * 请求报文为 {@code <Request><operate>S001</operate>...} 的 XML。 *
* 迁移说明:原逻辑在 {@code com.ruoyi.system.service.impl.SmsParamServiceImpl.sendSmsInfo},
* 现收口到本模块;原实现把服务地址硬编码在生成的 {@code MessagingInsertLocator} 里,
* 这里改为按 {@code message.sms.messaging-insert.ws-url} 显式设置(默认值与原硬编码一致)。
*/
@Slf4j
@Component
public class MessagingInsertSmsApi {
private final MessageProperties properties;
public MessagingInsertSmsApi(MessageProperties properties) {
this.properties = properties;
}
/**
* 发送预约挂号类短信(operate=S001,Type=预约挂号)
*
* @param content 短信内容
* @param phone 手机号
* @return 平台返回码
*/
public Integer sendSmsInfo(String content, String phone) {
MessagingInsertSoap12Stub binding;
try {
MessagingInsertLocator locator = new MessagingInsertLocator();
String wsUrl = properties.getSms().getMessagingInsert().getWsUrl();
if (wsUrl != null && !wsUrl.trim().isEmpty()) {
locator.setMessagingInsertSoap12EndpointAddress(wsUrl);
locator.setMessagingInsertSoapEndpointAddress(wsUrl);
}
binding = (MessagingInsertSoap12Stub) locator.getMessagingInsertSoap12();
} catch (Exception e) {
log.error("【MessagingInsertSmsApi】初始化 SOAP 客户端失败:{}", e.getMessage(), e);
return null;
}
String xmlReq = "\n"
+ "