WeChatMessage.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.huimv.env.input.config;
  2. import cn.hutool.http.HttpUtil;
  3. import cn.hutool.json.JSONObject;
  4. import cn.hutool.json.JSONUtil;
  5. import org.springframework.stereotype.Component;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. @Component
  9. public class WeChatMessage {
  10. // wx:
  11. // appId: "wx707fcfd7d09e02eb" #小程序appId
  12. // secret: "w95K45G9-2xGocleqrtGoHwEGF6ocqSu8EbDBxCQSR0" #小程序密钥
  13. // templateId: "f932c54f1cbd427b10218a0d1cfb88bf" #订阅消息模板
  14. //
  15. // @Value("${wx.appId}")
  16. // private String appId;
  17. //
  18. // @Value("${wx.secret}")
  19. // private String secret;
  20. //
  21. // @Value("${wx.templateId}")
  22. // private String templateId;
  23. private static final String appId= "wx7982c391ad9c00b3";
  24. private static final String secret= "87f5a2f00478fbe39ec1e6c832f11068";
  25. private static final String templateId= "E2HW7OE74SRRY1vd7O9ONv4AQ1D_Kk-Go6cOcSb6TCQ";
  26. public void sendMsg(String deviceName,String warningContent, Date uploadDate,String warningReason,String location,String openId){
  27. //1:获取token(接口调用凭证)
  28. String token = queryToken();
  29. //2:发送订阅消息
  30. send(token,deviceName,warningContent,uploadDate,warningReason,location,openId);
  31. }
  32. // 1: 获取 access_token (2h过期)
  33. public String queryToken(){
  34. String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
  35. tokenUrl = tokenUrl + "&appid=" + appId + "&secret=" + secret;
  36. String result = HttpUtil.get(tokenUrl);
  37. System.out.println(result);
  38. JSONObject jsonObject = JSONUtil.parseObj(result);
  39. String token = jsonObject.get("access_token").toString();
  40. return token;
  41. }
  42. public void send(String token,String deviceName,String warningContent, Date uploadDate,String warningReason,String location,String openId){
  43. String msgUrl="https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
  44. msgUrl = msgUrl + "?access_token=" + token;
  45. // 设置模板参数
  46. HashMap<String, Object> paramMap = new HashMap<>();
  47. paramMap.put("touser", openId); // 接收方
  48. paramMap.put("template_id", templateId); // 模板id
  49. paramMap.put("page","pages/warn/warn"); // 消息中要跳转的页面
  50. // 设置data 模板内容
  51. HashMap<String, Object> data = new HashMap<>();
  52. //报警设备
  53. data.put("thing1", formatParam(deviceName));
  54. //报警类型
  55. data.put("thing2", formatParam(warningContent));
  56. //报警时间
  57. data.put("time3", formatParam(uploadDate.toString()));
  58. //报警原因
  59. data.put("time4", formatParam(warningReason));
  60. //报警地点
  61. data.put("thing5", formatParam(location));
  62. paramMap.put("data", data);
  63. // 转json字符串
  64. String jsonObject = JSONUtil.toJsonStr(paramMap);
  65. String result= HttpUtil.post(msgUrl, jsonObject);
  66. System.out.println(result);
  67. }
  68. public HashMap<String, Object> formatParam(String value){
  69. HashMap<String, Object> data = new HashMap<>();
  70. data.put("value", value);
  71. return data;
  72. }
  73. }