diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaTemplateMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaTemplateMessage.java index 32268b4c4..23f3988f2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaTemplateMessage.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaTemplateMessage.java @@ -1,24 +1,28 @@ package cn.binarywang.wx.miniapp.bean; import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; -import lombok.Builder; -import lombok.Data; +import lombok.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** + * 模板消息. * 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#接口说明 模板消息部分 * * @author Binary Wang */ -@Data +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor @Builder public class WxMaTemplateMessage implements Serializable { private static final long serialVersionUID = 5063374783759519418L; /** + * 接收者(用户)的 openid. *
* 参数:touser
* 是否必填: 是
@@ -28,6 +32,7 @@ public class WxMaTemplateMessage implements Serializable {
private String toUser;
/**
+ * 所需下发的模板消息的id.
*
* 参数:template_id
* 是否必填: 是
@@ -37,6 +42,7 @@ public class WxMaTemplateMessage implements Serializable {
private String templateId;
/**
+ * 点击模板卡片后的跳转页面,仅限本小程序内的页面.
*
* 参数:page
* 是否必填: 否
@@ -46,6 +52,7 @@ public class WxMaTemplateMessage implements Serializable {
private String page;
/**
+ * 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id.
*
* 参数:form_id
* 是否必填: 是
@@ -55,16 +62,17 @@ public class WxMaTemplateMessage implements Serializable {
private String formId;
/**
+ * 模板内容,不填则下发空模板.
*
* 参数:data
* 是否必填: 是
* 描述: 模板内容,不填则下发空模板
*
*/
- @Builder.Default
- private final List data = new ArrayList<>();
+ private List data;
/**
+ * 模板内容字体的颜色,不填默认黑色.
*
* 参数:color
* 是否必填: 否
@@ -74,6 +82,7 @@ public class WxMaTemplateMessage implements Serializable {
private String color;
/**
+ * 模板需要放大的关键词,不填则默认无放大.
*
* 参数:emphasis_keyword
* 是否必填: 否
@@ -82,6 +91,15 @@ public class WxMaTemplateMessage implements Serializable {
*/
private String emphasisKeyword;
+ public WxMaTemplateMessage addData(Data datum) {
+ if (this.data == null) {
+ this.data = new ArrayList<>();
+ }
+ this.data.add(datum);
+
+ return this;
+ }
+
public String toJson() {
return WxMaGsonBuilder.create().toJson(this);
}
diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java
index d6aa31a71..774db32bc 100644
--- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java
+++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java
@@ -66,7 +66,7 @@ public class WxMaMsgServiceImplTest {
.templateId(config.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
-
+ //templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
this.wxService.getMsgService().sendTemplateMsg(templateMessage);
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
index aa5a18048..254cf3ff8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
@@ -1,7 +1,6 @@
package me.chanjar.weixin.mp.bean.template;
-import lombok.Builder;
-import lombok.Data;
+import lombok.*;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import java.io.Serializable;
@@ -9,46 +8,56 @@ import java.util.ArrayList;
import java.util.List;
/**
+ * 模板消息.
* 参考 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN 发送模板消息接口部分
+ *
+ * @author Binary Wang
*/
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
@Builder
public class WxMpTemplateMessage implements Serializable {
private static final long serialVersionUID = 5063374783759519418L;
/**
- * 接收者openid
+ * 接收者openid.
*/
private String toUser;
/**
- * 模板ID
+ * 模板ID.
*/
private String templateId;
/**
+ * 模板跳转链接.
*
- * 跳小程序所需数据,不需跳小程序可不用传该数据
* url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。
* 开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
*
*/
private String url;
+
/**
- * 模板跳转链接
+ * 跳小程序所需数据,不需跳小程序可不用传该数据.
*
* @see #url
*/
private MiniProgram miniProgram;
/**
- * 模板数据
+ * 模板数据.
*/
- @Builder.Default
- private final List data = new ArrayList<>();
+ private List data;
- public void addWxMpTemplateData(WxMpTemplateData datum) {
+ public WxMpTemplateMessage addData(WxMpTemplateData datum) {
+ if (this.data == null) {
+ this.data = new ArrayList<>();
+ }
this.data.add(datum);
+ return this;
}
public String toJson() {
@@ -56,17 +65,13 @@ public class WxMpTemplateMessage implements Serializable {
}
@Data
+ @NoArgsConstructor
+ @AllArgsConstructor
public static class MiniProgram implements Serializable {
private static final long serialVersionUID = -7945254706501974849L;
private String appid;
private String pagePath;
-
- public MiniProgram(String appid, String pagePath) {
- this.appid = appid;
- this.pagePath = pagePath;
- }
-
}
}
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpTemplateMsgServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpTemplateMsgServiceImplTest.java
index 96cab2c1a..4457aeb33 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpTemplateMsgServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpTemplateMsgServiceImplTest.java
@@ -10,8 +10,9 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.apache.commons.lang3.RandomStringUtils;
-import org.testng.*;
-import org.testng.annotations.*;
+import org.testng.Assert;
+import org.testng.annotations.Guice;
+import org.testng.annotations.Test;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -37,12 +38,12 @@ public class WxMpTemplateMsgServiceImplTest {
.getWxMpConfigStorage();
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(configStorage.getOpenid())
- .templateId(configStorage.getTemplateId()).build();
- templateMessage.addWxMpTemplateData(
- new WxMpTemplateData("first", dateFormat.format(new Date()), "#FF00FF"));
- templateMessage.addWxMpTemplateData(
- new WxMpTemplateData("remark", RandomStringUtils.randomAlphanumeric(100), "#FF00FF"));
- templateMessage.setUrl(" ");
+ .templateId(configStorage.getTemplateId())
+ .url(" ")
+ .build();
+
+ templateMessage.addData(new WxMpTemplateData("first", dateFormat.format(new Date()), "#FF00FF"))
+ .addData(new WxMpTemplateData("remark", RandomStringUtils.randomAlphanumeric(100), "#FF00FF"));
String msgId = this.wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
Assert.assertNotNull(msgId);
System.out.println(msgId);
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java
index 3bb804d5c..dd0f10105 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java
@@ -1,8 +1,8 @@
package me.chanjar.weixin.mp.bean.template;
-import org.testng.annotations.*;
+import org.testng.annotations.Test;
-import static org.testng.AssertJUnit.*;
+import static org.testng.AssertJUnit.assertEquals;
/**
*
@@ -13,7 +13,7 @@ import static org.testng.AssertJUnit.*;
*/
public class WxMpTemplateMessageTest {
@Test
- public void testToJson() throws Exception {
+ public void testToJson() {
WxMpTemplateMessage tm = WxMpTemplateMessage.builder()
.toUser("OPENID")
.templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY")
@@ -21,9 +21,9 @@ public class WxMpTemplateMessageTest {
.url("http://weixin.qq.com/download")
.build();
- tm.addWxMpTemplateData(
+ tm.addData(
new WxMpTemplateData("first", "haahah", "#FF00FF"));
- tm.addWxMpTemplateData(
+ tm.addData(
new WxMpTemplateData("remark", "heihei", "#FF00FF"));
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\"}}}");