From ce281bea325f6d1d24e13dd0804503ca31b86f4f Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sat, 16 Dec 2017 12:46:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E7=89=88=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wx/miniapp/bean/WxMaTemplateMessage.java | 28 ++++++++++--- .../api/impl/WxMaMsgServiceImplTest.java | 2 +- .../mp/bean/template/WxMpTemplateMessage.java | 39 +++++++++++-------- .../impl/WxMpTemplateMsgServiceImplTest.java | 17 ++++---- .../template/WxMpTemplateMessageTest.java | 10 ++--- 5 files changed, 60 insertions(+), 36 deletions(-) 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 32268b4c..23f3988f 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 d6aa31a7..774db32b 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 aa5a1804..254cf3ff 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 96cab2c1..4457aeb3 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 3bb804d5..dd0f1010 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\"}}}");