WeChatMessage.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.huimv.env.common.config;
  2. import cn.hutool.http.HttpUtil;
  3. import cn.hutool.json.JSONObject;
  4. import cn.hutool.json.JSONUtil;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.stereotype.Component;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. @Component
  10. public class WeChatMessage {
  11. // wx:
  12. // appId: "wx707fcfd7d09e02eb" #小程序appId
  13. // secret: "w95K45G9-2xGocleqrtGoHwEGF6ocqSu8EbDBxCQSR0" #小程序密钥
  14. // templateId: "f932c54f1cbd427b10218a0d1cfb88bf" #订阅消息模板
  15. //
  16. // @Value("${wx.appId}")
  17. // private String appId;
  18. //
  19. // @Value("${wx.secret}")
  20. // private String secret;
  21. //
  22. // @Value("${wx.templateId}")
  23. // private String templateId;
  24. private static final String appId= "wx707fcfd7d09e02eb";
  25. private static final String secret= "w95K45G9-2xGocleqrtGoHwEGF6ocqSu8EbDBxCQSR0";
  26. private static final String templateId= "f932c54f1cbd427b10218a0d1cfb88bf";
  27. public void sendMsg(String deviceCode,String warningContent, Date uploadDate,String location,String openId){
  28. //1:获取token(接口调用凭证)
  29. String token = queryToken();
  30. //2:发送订阅消息
  31. send(token,warningContent,deviceCode,uploadDate,location,openId);
  32. }
  33. // 1: 获取 access_token (2h过期)
  34. public String queryToken(){
  35. String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
  36. tokenUrl = tokenUrl + "&appid=" + appId + "&secret=" + secret;
  37. String result = HttpUtil.get(tokenUrl);
  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 warningContent,String deviceCode, Date uploadDate,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/self/self"); // 消息中要跳转的页面
  50. // 设置data 模板内容
  51. HashMap<String, Object> data = new HashMap<>();
  52. //报警设备
  53. data.put("thing1", formatParam(deviceCode));
  54. //报警类型
  55. data.put("thing2", formatParam(warningContent));
  56. //报警时间
  57. data.put("thing3", formatParam(uploadDate.toString()));
  58. //报警地点
  59. data.put("thing5", formatParam(location));
  60. paramMap.put("data", data);
  61. // 转json字符串
  62. String jsonObject = JSONUtil.toJsonStr(paramMap);
  63. String result= HttpUtil.post(msgUrl, jsonObject);
  64. System.out.println(result);
  65. }
  66. public HashMap<String, Object> formatParam(String value){
  67. HashMap<String, Object> data = new HashMap<>();
  68. data.put("value", value);
  69. return data;
  70. }
  71. }