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" + "\n" + "S001\n" + "\n" + "\n" + "" + content + "\n" + "" + phone + "\n" + "" + new Date() + "\n" + "预约挂号\n" + "\n" + "\n" + ""; Integer result = null; try { result = binding.SMSMessageAccept(xmlReq, new IntHolder(), new StringHolder()); } catch (Exception e) { log.error("【MessagingInsertSmsApi】短信发送失败:{}", e.getMessage(), e); } return result; } }