package com.ruoyi.message.wechat; import lombok.Data; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Map; /** * 微信公众号发送请求(与具体发送方无关的统一入参)。 *

* 各医院公众号的入参差异很大(市一只要 手机号+身份证+链接,新华要 患者ID+姓名+appid+签名), * 差异字段通过 {@link #extras} 透传。 */ @Data public class WechatSendRequest implements Serializable { private static final long serialVersionUID = 1L; /** * 手机号 */ private String phone; /** * 身份证号(市一、新华都要) */ private String idCard; /** * 外链地址(点击消息后跳转) */ private String url; /** * 标题 / 任务名称 */ private String title; /** * 内容 / 任务描述 */ private String content; /** * 机构ID */ private String orgid; /** * HIS 侧患者ID(新华要求非空) */ private String patidHis; /** * 患者姓名 */ private String patientName; /** * openid(微信公众号 SDK 通道使用) */ private String openid; /** * 模板ID(微信公众号 SDK 模板消息通道使用) */ private String templateId; /** * 是否关闭 Gson 的 HTML 转义(新华公众号站点间存在差异,见 {@code XinHuaMpApi.sendMessage}) */ private boolean disableHtmlEscaping; /** * 扩展参数 */ private Map extras; /** * 追加一个扩展参数 */ public WechatSendRequest putExtra(String key, Object value) { if (this.extras == null) { this.extras = new LinkedHashMap<>(); } this.extras.put(key, value); return this; } /** * 读取扩展参数 */ public Object getExtra(String key) { return this.extras == null ? null : this.extras.get(key); } }