package com.ruoyi.message.wechat.provider.hzszlyy;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.message.MessageChannel;
|
import com.ruoyi.message.SendResult;
|
import com.ruoyi.message.wechat.WechatSendRequest;
|
import com.ruoyi.message.wechat.WechatSender;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Map;
|
|
/**
|
* 杭州市一微信公众号发送方({@code hzszlyy} 通道)。
|
* <p>
|
* 对接特征:市一自有网关,返回 JSON 的 {@code success == 1} 为成功。
|
* 代码来源:{@code RyTask.hzszlyy 公众号分支} + {@code RedisMqReceiver.hzszlyy 分支} +
|
* {@code SmsController./sms/sendChat}(行为保持不变)。
|
* <p>
|
* 注意:市一公众号<b>不做机构配置校验</b>(原代码注释「市一医院 不校验」),
|
* 调用方需保留该差异,不要套用新华那套 {@code wxqqxx} 校验。
|
*/
|
@Slf4j
|
@Component
|
public class ShiyiMpSender implements WechatSender {
|
|
/**
|
* 渠道 key,微信公众号通道下与短信通道同名({@code hzszlyy}),由各自的工厂区分
|
*/
|
public static final String KEY = "hzszlyy";
|
|
private final ShiyiMpApi shiyiMpApi;
|
|
public ShiyiMpSender(ShiyiMpApi shiyiMpApi) {
|
this.shiyiMpApi = shiyiMpApi;
|
}
|
|
@Override
|
public String key() {
|
return KEY;
|
}
|
|
@Override
|
public String description() {
|
return "杭州市一微信公众号(success==1 判定)";
|
}
|
|
@Override
|
public SendResult send(WechatSendRequest request) {
|
if (request == null || request.getPhone() == null || request.getPhone().trim().isEmpty()) {
|
return SendResult.fail(KEY, MessageChannel.WECHAT, "手机号为空", null);
|
}
|
try {
|
String raw = shiyiMpApi.sendMessage(request.getUrl(), request.getPhone(), request.getIdCard());
|
Map map = JSONObject.parseObject(raw, Map.class);
|
Boolean success = false;
|
if (map != null && !map.isEmpty() && map.get("success") != null) {
|
Integer value = (Integer) map.get("success");
|
success = value != null && value == 1;
|
}
|
if (success) {
|
return SendResult.success(KEY, MessageChannel.WECHAT, raw);
|
}
|
Object msg = map == null ? null : map.get("msg");
|
return SendResult.fail(KEY, MessageChannel.WECHAT,
|
msg == null ? "【公众号】公众号发送失败" : msg.toString(), raw);
|
} catch (Exception e) {
|
log.error("【{}】市一公众号发送失败:{}", KEY, e.getMessage(), e);
|
return SendResult.fail(KEY, MessageChannel.WECHAT, "【公众号】公众号发送失败", null);
|
}
|
}
|
}
|