==============================================================================
org.dom4j
dom4j
2.1.1
jaxen
jaxen
1.2.0
org.projectlombok
lombok
com.thoughtworks.xstream
xstream
1.4.15
com.alibaba
fastjson
1.2.75
通过查看微信模板消息文档发现
发送模板消息需要的json数据
{
“touser”:“OPENID”,
“template_id”:“ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY”,
“url”:“http://weixin.qq.com/download”,
“miniprogram”:{
“appid”:“xiaochengxuappid12345”,
“pagepath”:“index?foo=bar”
},
“data”:{
“first”: {
“value”:“恭喜你购买成功!”,
“color”:“#173177”
},
“keyword1”:{
“value”:“巧克力”,
“color”:“#173177”
},
“keyword2”: {
“value”:“39.8元”,
“color”:“#173177”
},
“keyword3”: {
“value”:“2014年9月22日”,
“color”:“#173177”
},
“remark”:{
“value”:“欢迎再次购买!”,
“color”:“#173177”
}
}
}
模板实例
包含多种数据类型,并且以json数据格式请求接口便可以发送模板消息,发送成功效果。
我们看到。
-
first中的value对应的第一部分需要填充{{first.DATA}}占位符的数据,color对应字体的颜色
-
keyword可能包含一个或者多个,所以我们需要动态创建,根据模板中的消息提供。
-
remark填充最后一条数据
我们先创建六个实体类,对应模板消息用到的数据类型。
=============================================================================
存储remark中的数据与颜色
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Remark {
private String value;
private String color;
}
Miniprogram //小程序相关数据,无小程序可以不填,或者填充空串
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Miniprogram {
private String appid;
private String pagepath;
}
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Keyword {
private String value;
private String color;
}
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
-
@author xu
-
@Description
-
@createTime 2021年04月02日 17:02:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class First {
private String value;
private String color;
}
由于keyword不固定,所以我在实体类创建多个提供使用,根据需要,构造需要个数
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import java.util.List;
@lombok.Data
@AllArgsConstructor
@NoArgsConstructor
public class data {
private First first;
private Keyword keyword1;
private Keyword keyword2;
private Keyword keyword3;
private Keyword keyword4;
private Keyword keyword5;
private Remark remark;
public data(First first,Remark remark,Keyword … keyword){
this.first=first;
int count=1;
for (Keyword keyword1 : keyword) {
if (count==1){
this.keyword1=keyword1;
}else if (count==2){
this.keyword2=keyword1;
}else if (count==3){
this.keyword3=keyword1;
}else if (count==4){
this.keyword4=keyword1;
}else if (count==5){
this.keyword5=keyword1;
}
count++;
}
this.remark=remark;
}
}
package cn.xjt.wx.MessageEntity;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonRootBean {
private String touser;
private String template_id;
最后
小编精心为大家准备了一手资料
以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
BATJ面试要点及Java架构师进阶资料
ok.Data;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonRootBean {
private String touser;
private String template_id;
最后
小编精心为大家准备了一手资料
[外链图片转存中…(img-SrAy0B4v-1714699541460)]
[外链图片转存中…(img-4feLDOuj-1714699541461)]
以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
[外链图片转存中…(img-Bk8HxcyK-1714699541461)]
BATJ面试要点及Java架构师进阶资料
[外链图片转存中…(img-FJfaly2N-1714699541462)]