Skip to content

Commit ce281be

Browse files
committed
优化模版消息代码,添加默认构造方法
1 parent cae504b commit ce281be

File tree

5 files changed

+60
-36
lines changed

5 files changed

+60
-36
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaTemplateMessage.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
package cn.binarywang.wx.miniapp.bean;
22

33
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
4-
import lombok.Builder;
5-
import lombok.Data;
4+
import lombok.*;
65

76
import java.io.Serializable;
87
import java.util.ArrayList;
98
import java.util.List;
109

1110
/**
11+
* 模板消息.
1212
* 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#接口说明 模板消息部分
1313
*
1414
* @author <a href="https://github.com/binarywang">Binary Wang</a>
1515
*/
16-
@Data
16+
@Getter
17+
@Setter
18+
@NoArgsConstructor
19+
@AllArgsConstructor
1720
@Builder
1821
public class WxMaTemplateMessage implements Serializable {
1922
private static final long serialVersionUID = 5063374783759519418L;
2023

2124
/**
25+
* 接收者(用户)的 openid.
2226
* <pre>
2327
* 参数:touser
2428
* 是否必填: 是
@@ -28,6 +32,7 @@ public class WxMaTemplateMessage implements Serializable {
2832
private String toUser;
2933

3034
/**
35+
* 所需下发的模板消息的id.
3136
* <pre>
3237
* 参数:template_id
3338
* 是否必填: 是
@@ -37,6 +42,7 @@ public class WxMaTemplateMessage implements Serializable {
3742
private String templateId;
3843

3944
/**
45+
* 点击模板卡片后的跳转页面,仅限本小程序内的页面.
4046
* <pre>
4147
* 参数:page
4248
* 是否必填: 否
@@ -46,6 +52,7 @@ public class WxMaTemplateMessage implements Serializable {
4652
private String page;
4753

4854
/**
55+
* 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id.
4956
* <pre>
5057
* 参数:form_id
5158
* 是否必填: 是
@@ -55,16 +62,17 @@ public class WxMaTemplateMessage implements Serializable {
5562
private String formId;
5663

5764
/**
65+
* 模板内容,不填则下发空模板.
5866
* <pre>
5967
* 参数:data
6068
* 是否必填: 是
6169
* 描述: 模板内容,不填则下发空模板
6270
* </pre>
6371
*/
64-
@Builder.Default
65-
private final List<Data> data = new ArrayList<>();
72+
private List<Data> data;
6673

6774
/**
75+
* 模板内容字体的颜色,不填默认黑色.
6876
* <pre>
6977
* 参数:color
7078
* 是否必填: 否
@@ -74,6 +82,7 @@ public class WxMaTemplateMessage implements Serializable {
7482
private String color;
7583

7684
/**
85+
* 模板需要放大的关键词,不填则默认无放大.
7786
* <pre>
7887
* 参数:emphasis_keyword
7988
* 是否必填: 否
@@ -82,6 +91,15 @@ public class WxMaTemplateMessage implements Serializable {
8291
*/
8392
private String emphasisKeyword;
8493

94+
public WxMaTemplateMessage addData(Data datum) {
95+
if (this.data == null) {
96+
this.data = new ArrayList<>();
97+
}
98+
this.data.add(datum);
99+
100+
return this;
101+
}
102+
85103
public String toJson() {
86104
return WxMaGsonBuilder.create().toJson(this);
87105
}

weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void testSendTemplateMsg() throws WxErrorException {
6666
.templateId(config.getTemplateId())
6767
.emphasisKeyword("keyword1.DATA")
6868
.build();
69-
69+
//templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
7070
this.wxService.getMsgService().sendTemplateMsg(templateMessage);
7171
}
7272

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,77 @@
11
package me.chanjar.weixin.mp.bean.template;
22

3-
import lombok.Builder;
4-
import lombok.Data;
3+
import lombok.*;
54
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
65

76
import java.io.Serializable;
87
import java.util.ArrayList;
98
import java.util.List;
109

1110
/**
11+
* 模板消息.
1212
* 参考 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN 发送模板消息接口部分
13+
*
14+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
1315
*/
14-
@Data
16+
@Getter
17+
@Setter
18+
@NoArgsConstructor
19+
@AllArgsConstructor
1520
@Builder
1621
public class WxMpTemplateMessage implements Serializable {
1722
private static final long serialVersionUID = 5063374783759519418L;
1823

1924
/**
20-
* 接收者openid
25+
* 接收者openid.
2126
*/
2227
private String toUser;
2328

2429
/**
25-
* 模板ID
30+
* 模板ID.
2631
*/
2732
private String templateId;
2833

2934
/**
35+
* 模板跳转链接.
3036
* <pre>
31-
* 跳小程序所需数据,不需跳小程序可不用传该数据
3237
* url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。
3338
* 开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
3439
* </pre>
3540
*/
3641
private String url;
42+
3743
/**
38-
* 模板跳转链接
44+
* 跳小程序所需数据,不需跳小程序可不用传该数据.
3945
*
4046
* @see #url
4147
*/
4248
private MiniProgram miniProgram;
4349

4450
/**
45-
* 模板数据
51+
* 模板数据.
4652
*/
47-
@Builder.Default
48-
private final List<WxMpTemplateData> data = new ArrayList<>();
53+
private List<WxMpTemplateData> data;
4954

50-
public void addWxMpTemplateData(WxMpTemplateData datum) {
55+
public WxMpTemplateMessage addData(WxMpTemplateData datum) {
56+
if (this.data == null) {
57+
this.data = new ArrayList<>();
58+
}
5159
this.data.add(datum);
60+
return this;
5261
}
5362

5463
public String toJson() {
5564
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
5665
}
5766

5867
@Data
68+
@NoArgsConstructor
69+
@AllArgsConstructor
5970
public static class MiniProgram implements Serializable {
6071
private static final long serialVersionUID = -7945254706501974849L;
6172

6273
private String appid;
6374
private String pagePath;
64-
65-
public MiniProgram(String appid, String pagePath) {
66-
this.appid = appid;
67-
this.pagePath = pagePath;
68-
}
69-
7075
}
7176

7277
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpTemplateMsgServiceImplTest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
1111
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
1212
import org.apache.commons.lang3.RandomStringUtils;
13-
import org.testng.*;
14-
import org.testng.annotations.*;
13+
import org.testng.Assert;
14+
import org.testng.annotations.Guice;
15+
import org.testng.annotations.Test;
1516

1617
import java.text.SimpleDateFormat;
1718
import java.util.Date;
@@ -37,12 +38,12 @@ public void testSendTemplateMsg() throws WxErrorException {
3738
.getWxMpConfigStorage();
3839
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
3940
.toUser(configStorage.getOpenid())
40-
.templateId(configStorage.getTemplateId()).build();
41-
templateMessage.addWxMpTemplateData(
42-
new WxMpTemplateData("first", dateFormat.format(new Date()), "#FF00FF"));
43-
templateMessage.addWxMpTemplateData(
44-
new WxMpTemplateData("remark", RandomStringUtils.randomAlphanumeric(100), "#FF00FF"));
45-
templateMessage.setUrl(" ");
41+
.templateId(configStorage.getTemplateId())
42+
.url(" ")
43+
.build();
44+
45+
templateMessage.addData(new WxMpTemplateData("first", dateFormat.format(new Date()), "#FF00FF"))
46+
.addData(new WxMpTemplateData("remark", RandomStringUtils.randomAlphanumeric(100), "#FF00FF"));
4647
String msgId = this.wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
4748
Assert.assertNotNull(msgId);
4849
System.out.println(msgId);

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package me.chanjar.weixin.mp.bean.template;
22

3-
import org.testng.annotations.*;
3+
import org.testng.annotations.Test;
44

5-
import static org.testng.AssertJUnit.*;
5+
import static org.testng.AssertJUnit.assertEquals;
66

77
/**
88
* <pre>
@@ -13,17 +13,17 @@
1313
*/
1414
public class WxMpTemplateMessageTest {
1515
@Test
16-
public void testToJson() throws Exception {
16+
public void testToJson() {
1717
WxMpTemplateMessage tm = WxMpTemplateMessage.builder()
1818
.toUser("OPENID")
1919
.templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY")
2020
.miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar"))
2121
.url("http://weixin.qq.com/download")
2222
.build();
2323

24-
tm.addWxMpTemplateData(
24+
tm.addData(
2525
new WxMpTemplateData("first", "haahah", "#FF00FF"));
26-
tm.addWxMpTemplateData(
26+
tm.addData(
2727
new WxMpTemplateData("remark", "heihei", "#FF00FF"));
2828

2929
assertEquals(tm.toJson(), "{\"touser\":\"OPENID\",\"template_id\":\"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY\",\"url\":\"http://weixin.qq.com/download\",\"miniprogram\":{\"appid\":\"xiaochengxuappid12345\",\"pagepath\":\"index?foo=bar\"},\"data\":{\"first\":{\"value\":\"haahah\",\"color\":\"#FF00FF\"},\"remark\":{\"value\":\"heihei\",\"color\":\"#FF00FF\"}}}");

0 commit comments

Comments
 (0)