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 Listdata = 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\"}}}");