微信通知

简介: cacsasvava

1.前置条件
企业微信appId
企业微信secret
企业微信绑定小程序
小程序的appId
2.发送示例
2.1 获取access_token(HTTPS-GET)

请求URL:
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=corpid&corpsecret=corpsecret

示例入参:
corpid=wx161we55e1fe5e4fr
corpsecret=Rspav9pmjem3zve8fkjqe6yTtCs78Rwdabn6tNdU1g


2.2 发送
完整代码示例(建议异步)

Java

运行代码复制代码

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

private static final ThreadLocal<ExecutorService> synExecuteService = ThreadLocal.withInitial(() -> Executors.newFixedThreadPool(200));

"\"title\":\"新订单接诊提醒\",\"description\": \"" + descTime + "\",\"emphasis_first_item\":true," +

"\"content_item\":[{\"key\":\"接诊通知\",\"value\":\"来新咨询订单了\"},{\"key\":\"咨询人\",\"value\":\""+subTitle+"\"},{\"key\":\"病情描述\",\"value\":\""+content+"\"}]},\"enable_id_trans\":0," +

"\"enable_duplicate_check\":0,\"duplicate_check_interval\":1800}";


logger.info("开始发送微信企业号消息,入参:" + jsonParam);

// 微信企业号消息发送服务地址 http://ip:port/mp-api/wechat/enterprise/message/send

String imsServiceDomainConfigStr = imSystemConfigService.getImSystemConfig(hospitalId, HUUtil.IMS_SERVICE_WECHAT_QYH_TEMPLATE_DOMAIN_CONFIG_KEY);

if (null == imsServiceDomainConfigStr || "".equals(imsServiceDomainConfigStr)) {

logger.info("IMS发送微信企业号消息服务地址配置信息不存在:" + hospitalId);

return;

}


imsServiceDomainConfigStr = imsServiceDomainConfigStr + "?access_token=" + accessToken.getToken();

String result = HUHttpUtil.sendJsonPostRequest(imsServiceDomainConfigStr, jsonParam, 0);

logger.info("开始发送微信企业号消息,结果:" + result);

} else {

logger.info("该医生" + doctorNo + "在企业号通讯录中不存在,终止发送企业号消息");

}

});

}


/**

    * 发送GET请求

    *

    * @param requestUrl

    * @param requestMethod

    * @param outputStr

    * @return

    */

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {

logger.info("[WeixinUtil.httpRequest]:请求入参:" + requestUrl);

String respStr = HUHttpUtil.sendGet(requestUrl, null);

logger.info("[WeixinUtil.httpRequest]:请求响应:" + respStr);

try {

return JSON.parseObject(respStr);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}


private List<WXQYUser> getWXQYUserList(JSONObject hResponse) {

List<JSONObject> wXQYUserList = (List<JSONObject>) hResponse.get("userlist");

List<JSONObject> nmList = null;

WXQYUser wxQYUser = null;

JSONObject mm = null;

List<WXQYUser> wxQYUserList = new ArrayList<WXQYUser>();

for (JSONObject jsObject : wXQYUserList) {

if (jsObject.containsKey("userid")) {

if (jsObject.containsKey("extattr")) {

mm = jsObject.getJSONObject("extattr");

if (null != mm.get("attrs")) {

nmList = (List<JSONObject>) mm.get("attrs");

for (JSONObject nmObject : nmList) {

if (nmObject.containsKey("name") && "hisid".equals(nmObject.getString("name"))

&& null != nmObject.getString("value") && !"".equals(nmObject.getString("value"))) {

wxQYUser = new WXQYUser();

wxQYUser.setUserid(jsObject.getString("userid"));

wxQYUser.setName(jsObject.getString("name"));

wxQYUser.setMobile(jsObject.getString("mobile"));

wxQYUser.setHisid(nmObject.getString("value"));

wxQYUserList.add(wxQYUser);

}

}

}

}

}

}

return wxQYUserList;

}


// 企业微信存储12345,数据库存储:医院ID+12345,随意这里做截取再去匹配

private String getDoctorNo(String doctorNo) {

if (doctorNo.startsWith("10000")) {

return doctorNo.substring(5, doctorNo.length());

}

if (doctorNo.startsWith("10001")) {

return doctorNo.substring(5, doctorNo.length());

}


return doctorNo;

}

Java

运行代码复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

class WXQYUser {


private String userid;


private String name;


private String mobile;


private String hisid;


public String getUserid() {

return userid;

}


public void setUserid(String userid) {

this.userid = userid;

}


public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public String getMobile() {

return mobile;

}


public void setMobile(String mobile) {

this.mobile = mobile;

}


public String getHisid() {

return hisid;

}


public void setHisid(String hisid) {

this.hisid = hisid;

}

}

相关文章
|
12天前
|
缓存 监控 调度
阿里云 CDN 计费体系全解析:基础服务、增值服务与选型指南
在内容分发网络(CDN)领域,阿里云凭借全球节点覆盖与灵活的计费模式,成为个人开发者与企业用户的重要选择。其 CDN 服务计费分为基础服务与增值服务两部分,基础服务提供按流量计费、按带宽峰值计费、月结 95 带宽峰值计费三种核心模式,增值服务则根据功能使用情况单独计费。本文基于 今年最新官方文档与实测数据,从计费规则、价格详情、场景适配、成本优化等维度展开解析,为用户提供客观选型参考。
|
6天前
|
Java Go 开发者
IDEA开发常用的快捷键
IntelliJ IDEA常用快捷键汇总:涵盖代码生成(如main、sout)、编辑(复制、删除、重命名)、导航(跳转、查找)、格式化、代码阅读及版本控制等高频操作,提升开发效率。熟练掌握可显著优化编码体验,是Java开发者必备技能。
132 1
|
6天前
|
Oracle Java 关系型数据库
Java命名规范
Java命名规范涵盖包、类、方法、变量等命名规则。包名全小写,类名首字母大写采用驼峰法,接口常用形容词,抽象类以Abstract/Base开头,异常类以Exception结尾,方法名小写驼峰,常量全大写用下划线分隔,枚举值按常量规范命名,提升代码可读性与一致性。
101 0
|
JavaScript 前端开发
HTML 表单和输入与按钮的联动方法汇总
在HTML中,通过JavaScript可以轻松实现表单与输入、按钮的互动。本文介绍了基本表单结构,并展示了如何用JS处理按钮点击、表单提交、动态禁用按钮、表单验证以及使用AJAX和jQuery简化代码等技巧,帮助你更好地控制和优化表单功能。
|
算法 计算机视觉 开发者
YOLOv10发布,性能效率双提升,魔搭社区最佳实践来啦!
YOLO(You Only Look Once)系列目标检测框架,由于其在计算成本与检测性能之间实现了有效平衡,故而成为实时物体检测领域的标杆。
|
网络协议 Linux 开发者
Linux|最佳命令行下载加速器
Linux|最佳命令行下载加速器
Linux|最佳命令行下载加速器
|
程序员 数据安全/隐私保护 索引
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
883 0
|
存储 JSON 缓存
JSON Web Token跨域认证解决方案 使用详解
JSON Web Token跨域认证解决方案 使用详解
851 0
|
数据采集 数据可视化 BI
一份可视化特征图的代码
本文给大家分享一份我用的特征图可视化代码。 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、最新论文解读、各种技术教程、CV招聘信息发布等。关注公众号可邀请加入免费版的知识星球和技术交流群。
一份可视化特征图的代码
|
运维 NoSQL
Cassandra 数据一致性修复 repair 来龙去脉
文章分3块:1.为什么需要repair?;2.repair大概流程?;3.repair可能的问题。
4089 0
Cassandra 数据一致性修复 repair 来龙去脉

热门文章

最新文章