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。
|
* <p>
|
* 对接特征:Axis SOAP12,{@code SMSMessageAccept(xmlReq, out int, out string)},
|
* 请求报文为 {@code <Request><operate>S001</operate>...} 的 XML。
|
* <p>
|
* 迁移说明:原逻辑在 {@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 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
|
+ "<Request>\n"
|
+ "<operate>S001</operate>\n"
|
+ "<Sheets>\n"
|
+ "<Sheet>\n"
|
+ "<Content>" + content + "</Content>\n"
|
+ "<Mobile>" + phone + "</Mobile>\n"
|
+ "<DateTime>" + new Date() + "</DateTime>\n"
|
+ "<Type>预约挂号</Type>\n"
|
+ "</Sheet>\n"
|
+ "</Sheets>\n"
|
+ "</Request>";
|
|
Integer result = null;
|
try {
|
result = binding.SMSMessageAccept(xmlReq, new IntHolder(), new StringHolder());
|
} catch (Exception e) {
|
log.error("【MessagingInsertSmsApi】短信发送失败:{}", e.getMessage(), e);
|
}
|
return result;
|
}
|
}
|