package com.ruoyi.message.sms.provider.shiyi; 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; /** * 杭州市一 HIS 平台短信发送方({@code shiyi-his} 通道)。 *

* 对接特征:WCF SOAP {@code RunService(TradeType=FASONGDX)},报文体为 XML, * 成功判定为响应 {@code ERRNO == "0"}。 *

* 说明:该通道目前还没有业务调用点(只有 {@code /sms/sendShiyiTest} 测试接口), * 收口到本模块后可由工厂统一调度。 * 代码来源:原 {@code com.smartor.common.ShiyiSmsUtil}(行为保持不变)。 */ @Slf4j @Component public class ShiyiHisSmsSender extends AbstractSmsSender { /** * 渠道 key(不是 profile 名,因为当前站点都会走自己的通道) */ public static final String KEY = "shiyi-his"; private final ShiyiSmsUtil shiyiSmsUtil; public ShiyiHisSmsSender(ShiyiSmsUtil shiyiSmsUtil) { this.shiyiSmsUtil = shiyiSmsUtil; } @Override public String key() { return KEY; } @Override public String description() { return "杭州市一 HIS 平台短信(WCF SOAP FASONGDX)"; } @Override protected SendResult doSend(SmsSendRequest request) { ShiyiSmsRequest smsRequest = new ShiyiSmsRequest(); smsRequest.setShoujihao(request.getPhone()); smsRequest.setDuanxinnr(request.getContent()); smsRequest.setJigoudm(request.getOrgid()); if (request.getTemplateCode() != null) { smsRequest.setDuanxinlx(request.getTemplateCode()); } ShiyiSmsResponse response = shiyiSmsUtil.sendSms(smsRequest); if (response.isSuccess()) { return SendResult.success(KEY, MessageChannel.SMS, response.getRawXml()) .withCode(response.getErrno()) .withMessage(response.getErrmsg()); } return SendResult.fail(KEY, MessageChannel.SMS, "短信发送失败:" + response.getErrmsg(), response.getRawXml()) .withCode(response.getErrno()); } }