mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	支持企业号mpnews消息类型 #143
This commit is contained in:
		| @ -0,0 +1,139 @@ | |||||||
|  | package me.chanjar.weixin.cp.bean.article; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <pre> | ||||||
|  |  *  Created by BinaryWang on 2017/3/27. | ||||||
|  |  * </pre> | ||||||
|  |  * @author Binary Wang | ||||||
|  |  */ | ||||||
|  | public class MpnewsArticle { | ||||||
|  |   private String title; | ||||||
|  |   private String thumbMediaId; | ||||||
|  |   private String author; | ||||||
|  |   private String contentSourceUrl; | ||||||
|  |   private String content; | ||||||
|  |   private String digest; | ||||||
|  |   private String showCoverPic; | ||||||
|  |  | ||||||
|  |   private MpnewsArticle(Builder builder) { | ||||||
|  |     setTitle(builder.title); | ||||||
|  |     setThumbMediaId(builder.thumbMediaId); | ||||||
|  |     setAuthor(builder.author); | ||||||
|  |     setContentSourceUrl(builder.contentSourceUrl); | ||||||
|  |     setContent(builder.content); | ||||||
|  |     setDigest(builder.digest); | ||||||
|  |     setShowCoverPic(builder.showCoverPic); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public static Builder newBuilder() { | ||||||
|  |     return new Builder(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getTitle() { | ||||||
|  |     return title; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setTitle(String title) { | ||||||
|  |     this.title = title; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getThumbMediaId() { | ||||||
|  |     return thumbMediaId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setThumbMediaId(String thumbMediaId) { | ||||||
|  |     this.thumbMediaId = thumbMediaId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getAuthor() { | ||||||
|  |     return author; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setAuthor(String author) { | ||||||
|  |     this.author = author; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getContentSourceUrl() { | ||||||
|  |     return contentSourceUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setContentSourceUrl(String contentSourceUrl) { | ||||||
|  |     this.contentSourceUrl = contentSourceUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getContent() { | ||||||
|  |     return content; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setContent(String content) { | ||||||
|  |     this.content = content; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getDigest() { | ||||||
|  |     return digest; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setDigest(String digest) { | ||||||
|  |     this.digest = digest; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getShowCoverPic() { | ||||||
|  |     return showCoverPic; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setShowCoverPic(String showCoverPic) { | ||||||
|  |     this.showCoverPic = showCoverPic; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public static final class Builder { | ||||||
|  |     private String title; | ||||||
|  |     private String thumbMediaId; | ||||||
|  |     private String author; | ||||||
|  |     private String contentSourceUrl; | ||||||
|  |     private String content; | ||||||
|  |     private String digest; | ||||||
|  |     private String showCoverPic; | ||||||
|  |  | ||||||
|  |     private Builder() { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder title(String title) { | ||||||
|  |       this.title = title; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder thumbMediaId(String thumbMediaId) { | ||||||
|  |       this.thumbMediaId = thumbMediaId; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder author(String author) { | ||||||
|  |       this.author = author; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder contentSourceUrl(String contentSourceUrl) { | ||||||
|  |       this.contentSourceUrl = contentSourceUrl; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder content(String content) { | ||||||
|  |       this.content = content; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder digest(String digest) { | ||||||
|  |       this.digest = digest; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Builder showCoverPic(String showCoverPic) { | ||||||
|  |       this.showCoverPic = showCoverPic; | ||||||
|  |       return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public MpnewsArticle build() { | ||||||
|  |       return new MpnewsArticle(this); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | package me.chanjar.weixin.cp.bean.article; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <pre> | ||||||
|  |  *  Created by BinaryWang on 2017/3/27. | ||||||
|  |  * </pre> | ||||||
|  |  * | ||||||
|  |  * @author Binary Wang | ||||||
|  |  */ | ||||||
|  | public class NewArticle { | ||||||
|  |  | ||||||
|  |   private String title; | ||||||
|  |   private String description; | ||||||
|  |   private String url; | ||||||
|  |   private String picUrl; | ||||||
|  |  | ||||||
|  |   public String getTitle() { | ||||||
|  |     return this.title; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setTitle(String title) { | ||||||
|  |     this.title = title; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getDescription() { | ||||||
|  |     return this.description; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setDescription(String description) { | ||||||
|  |     this.description = description; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getUrl() { | ||||||
|  |     return this.url; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setUrl(String url) { | ||||||
|  |     this.url = url; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getPicUrl() { | ||||||
|  |     return this.picUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setPicUrl(String picUrl) { | ||||||
|  |     this.picUrl = picUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,5 +1,7 @@ | |||||||
| package me.chanjar.weixin.cp.bean; | package me.chanjar.weixin.cp.bean; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.cp.bean.article.MpnewsArticle; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.NewArticle; | ||||||
| import me.chanjar.weixin.cp.bean.messagebuilder.*; | import me.chanjar.weixin.cp.bean.messagebuilder.*; | ||||||
| import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||||
|  |  | ||||||
| @ -28,7 +30,16 @@ public class WxCpMessage implements Serializable { | |||||||
|   private String musicUrl; |   private String musicUrl; | ||||||
|   private String hqMusicUrl; |   private String hqMusicUrl; | ||||||
|   private String safe; |   private String safe; | ||||||
|   private List<WxArticle> articles = new ArrayList<>(); |   private List<NewArticle> articles = new ArrayList<>(); | ||||||
|  |   private List<MpnewsArticle> mpnewsArticles = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |   public List<MpnewsArticle> getMpnewsArticles() { | ||||||
|  |     return mpnewsArticles; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setMpnewsArticles(List<MpnewsArticle> mpnewsArticles) { | ||||||
|  |     this.mpnewsArticles = mpnewsArticles; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 获得文本消息builder |    * 获得文本消息builder | ||||||
| @ -65,6 +76,13 @@ public class WxCpMessage implements Serializable { | |||||||
|     return new NewsBuilder(); |     return new NewsBuilder(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 获得mpnews图文消息builder | ||||||
|  |    */ | ||||||
|  |   public static MpnewsBuilder MPNEWS() { | ||||||
|  |     return new MpnewsBuilder(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 获得文件消息builder |    * 获得文件消息builder | ||||||
|    */ |    */ | ||||||
| @ -117,9 +135,10 @@ public class WxCpMessage implements Serializable { | |||||||
|    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MUSIC} |    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MUSIC} | ||||||
|    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_VIDEO} |    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_VIDEO} | ||||||
|    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_NEWS} |    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_NEWS} | ||||||
|  |    * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MPNEWS} | ||||||
|    * </pre> |    * </pre> | ||||||
|    * |    * | ||||||
|    * @param msgType |    * @param msgType 消息类型 | ||||||
|    */ |    */ | ||||||
|   public void setMsgType(String msgType) { |   public void setMsgType(String msgType) { | ||||||
|     this.msgType = msgType; |     this.msgType = msgType; | ||||||
| @ -189,11 +208,11 @@ public class WxCpMessage implements Serializable { | |||||||
|     this.hqMusicUrl = hqMusicUrl; |     this.hqMusicUrl = hqMusicUrl; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public List<WxArticle> getArticles() { |   public List<NewArticle> getArticles() { | ||||||
|     return this.articles; |     return this.articles; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public void setArticles(List<WxArticle> articles) { |   public void setArticles(List<NewArticle> articles) { | ||||||
|     this.articles = articles; |     this.articles = articles; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -201,45 +220,4 @@ public class WxCpMessage implements Serializable { | |||||||
|     return WxCpGsonBuilder.INSTANCE.create().toJson(this); |     return WxCpGsonBuilder.INSTANCE.create().toJson(this); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public static class WxArticle { |  | ||||||
|  |  | ||||||
|     private String title; |  | ||||||
|     private String description; |  | ||||||
|     private String url; |  | ||||||
|     private String picUrl; |  | ||||||
|  |  | ||||||
|     public String getTitle() { |  | ||||||
|       return this.title; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setTitle(String title) { |  | ||||||
|       this.title = title; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public String getDescription() { |  | ||||||
|       return this.description; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setDescription(String description) { |  | ||||||
|       this.description = description; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public String getUrl() { |  | ||||||
|       return this.url; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setUrl(String url) { |  | ||||||
|       this.url = url; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public String getPicUrl() { |  | ||||||
|       return this.picUrl; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setPicUrl(String picUrl) { |  | ||||||
|       this.picUrl = picUrl; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,48 @@ | |||||||
|  | package me.chanjar.weixin.cp.bean.messagebuilder; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.common.api.WxConsts; | ||||||
|  | import me.chanjar.weixin.cp.bean.WxCpMessage; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.MpnewsArticle; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * mpnews类型的图文消息builder | ||||||
|  |  * <pre> | ||||||
|  |  * 用法: | ||||||
|  |  * WxCustomMessage m = WxCustomMessage.MPNEWS().addArticle(article).toUser(...).build(); | ||||||
|  |  * </pre> | ||||||
|  |  * | ||||||
|  |  * @author Binary Wang | ||||||
|  |  */ | ||||||
|  | public final class MpnewsBuilder extends BaseBuilder<MpnewsBuilder> { | ||||||
|  |   private List<MpnewsArticle> articles = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |   private String mediaId; | ||||||
|  |  | ||||||
|  |   public MpnewsBuilder() { | ||||||
|  |     this.msgType = WxConsts.CUSTOM_MSG_MPNEWS; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public MpnewsBuilder mediaId(String mediaId) { | ||||||
|  |     this.mediaId = mediaId; | ||||||
|  |     return this; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public MpnewsBuilder addArticle(MpnewsArticle article) { | ||||||
|  |     this.articles.add(article); | ||||||
|  |     return this; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxCpMessage build() { | ||||||
|  |     WxCpMessage m = super.build(); | ||||||
|  |     m.setMpnewsArticles(this.articles); | ||||||
|  |     if (this.mediaId != null) { | ||||||
|  |       m.setMediaId(this.mediaId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return m; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; | |||||||
|  |  | ||||||
| import me.chanjar.weixin.common.api.WxConsts; | import me.chanjar.weixin.common.api.WxConsts; | ||||||
| import me.chanjar.weixin.cp.bean.WxCpMessage; | import me.chanjar.weixin.cp.bean.WxCpMessage; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.NewArticle; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -17,13 +18,13 @@ import java.util.List; | |||||||
|  */ |  */ | ||||||
| public final class NewsBuilder extends BaseBuilder<NewsBuilder> { | public final class NewsBuilder extends BaseBuilder<NewsBuilder> { | ||||||
|  |  | ||||||
|   private List<WxCpMessage.WxArticle> articles = new ArrayList<>(); |   private List<NewArticle> articles = new ArrayList<>(); | ||||||
|  |  | ||||||
|   public NewsBuilder() { |   public NewsBuilder() { | ||||||
|     this.msgType = WxConsts.CUSTOM_MSG_NEWS; |     this.msgType = WxConsts.CUSTOM_MSG_NEWS; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public NewsBuilder addArticle(WxCpMessage.WxArticle article) { |   public NewsBuilder addArticle(NewArticle article) { | ||||||
|     this.articles.add(article); |     this.articles.add(article); | ||||||
|     return this; |     return this; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -11,6 +11,8 @@ package me.chanjar.weixin.cp.util.json; | |||||||
| import com.google.gson.*; | import com.google.gson.*; | ||||||
| import me.chanjar.weixin.common.api.WxConsts; | import me.chanjar.weixin.common.api.WxConsts; | ||||||
| import me.chanjar.weixin.cp.bean.WxCpMessage; | import me.chanjar.weixin.cp.bean.WxCpMessage; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.MpnewsArticle; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.NewArticle; | ||||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||||
|  |  | ||||||
| import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||||
| @ -71,7 +73,7 @@ public class WxCpMessageGsonAdapter implements JsonSerializer<WxCpMessage> { | |||||||
|     if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgType())) { |     if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgType())) { | ||||||
|       JsonObject newsJsonObject = new JsonObject(); |       JsonObject newsJsonObject = new JsonObject(); | ||||||
|       JsonArray articleJsonArray = new JsonArray(); |       JsonArray articleJsonArray = new JsonArray(); | ||||||
|       for (WxCpMessage.WxArticle article : message.getArticles()) { |       for (NewArticle article : message.getArticles()) { | ||||||
|         JsonObject articleJson = new JsonObject(); |         JsonObject articleJson = new JsonObject(); | ||||||
|         articleJson.addProperty("title", article.getTitle()); |         articleJson.addProperty("title", article.getTitle()); | ||||||
|         articleJson.addProperty("description", article.getDescription()); |         articleJson.addProperty("description", article.getDescription()); | ||||||
| @ -83,6 +85,29 @@ public class WxCpMessageGsonAdapter implements JsonSerializer<WxCpMessage> { | |||||||
|       messageJson.add("news", newsJsonObject); |       messageJson.add("news", newsJsonObject); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (WxConsts.CUSTOM_MSG_MPNEWS.equals(message.getMsgType())) { | ||||||
|  |       JsonObject newsJsonObject = new JsonObject(); | ||||||
|  |       if (message.getMediaId() != null) { | ||||||
|  |         newsJsonObject.addProperty("media_id", message.getMediaId()); | ||||||
|  |       }else { | ||||||
|  |         JsonArray articleJsonArray = new JsonArray(); | ||||||
|  |         for (MpnewsArticle article : message.getMpnewsArticles()) { | ||||||
|  |           JsonObject articleJson = new JsonObject(); | ||||||
|  |           articleJson.addProperty("title", article.getTitle()); | ||||||
|  |           articleJson.addProperty("thumb_media_id", article.getThumbMediaId()); | ||||||
|  |           articleJson.addProperty("author", article.getAuthor()); | ||||||
|  |           articleJson.addProperty("content_source_url", article.getContentSourceUrl()); | ||||||
|  |           articleJson.addProperty("content", article.getContent()); | ||||||
|  |           articleJson.addProperty("digest", article.getDigest()); | ||||||
|  |           articleJson.addProperty("show_cover_pic", article.getShowCoverPic()); | ||||||
|  |           articleJsonArray.add(articleJson); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         newsJsonObject.add("articles", articleJsonArray); | ||||||
|  |       } | ||||||
|  |       messageJson.add("mpnews", newsJsonObject); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return messageJson; |     return messageJson; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| package me.chanjar.weixin.cp.bean; | package me.chanjar.weixin.cp.bean; | ||||||
|  |  | ||||||
| import me.chanjar.weixin.common.api.WxConsts; | import me.chanjar.weixin.common.api.WxConsts; | ||||||
| import me.chanjar.weixin.cp.bean.WxCpMessage.WxArticle; | import me.chanjar.weixin.cp.bean.article.NewArticle; | ||||||
|  | import me.chanjar.weixin.cp.bean.article.MpnewsArticle; | ||||||
| import org.testng.Assert; | import org.testng.Assert; | ||||||
| import org.testng.annotations.Test; | import org.testng.annotations.Test; | ||||||
|  |  | ||||||
| @ -68,14 +69,14 @@ public class WxCpMessageTest { | |||||||
|     reply.setToUser("OPENID"); |     reply.setToUser("OPENID"); | ||||||
|     reply.setMsgType(WxConsts.CUSTOM_MSG_NEWS); |     reply.setMsgType(WxConsts.CUSTOM_MSG_NEWS); | ||||||
|  |  | ||||||
|     WxArticle article1 = new WxArticle(); |     NewArticle article1 = new NewArticle(); | ||||||
|     article1.setUrl("URL"); |     article1.setUrl("URL"); | ||||||
|     article1.setPicUrl("PIC_URL"); |     article1.setPicUrl("PIC_URL"); | ||||||
|     article1.setDescription("Is Really A Happy Day"); |     article1.setDescription("Is Really A Happy Day"); | ||||||
|     article1.setTitle("Happy Day"); |     article1.setTitle("Happy Day"); | ||||||
|     reply.getArticles().add(article1); |     reply.getArticles().add(article1); | ||||||
|  |  | ||||||
|     WxArticle article2 = new WxArticle(); |     NewArticle article2 = new NewArticle(); | ||||||
|     article2.setUrl("URL"); |     article2.setUrl("URL"); | ||||||
|     article2.setPicUrl("PIC_URL"); |     article2.setPicUrl("PIC_URL"); | ||||||
|     article2.setDescription("Is Really A Happy Day"); |     article2.setDescription("Is Really A Happy Day"); | ||||||
| @ -87,13 +88,13 @@ public class WxCpMessageTest { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   public void testNewsBuild() { |   public void testNewsBuild() { | ||||||
|     WxArticle article1 = new WxArticle(); |     NewArticle article1 = new NewArticle(); | ||||||
|     article1.setUrl("URL"); |     article1.setUrl("URL"); | ||||||
|     article1.setPicUrl("PIC_URL"); |     article1.setPicUrl("PIC_URL"); | ||||||
|     article1.setDescription("Is Really A Happy Day"); |     article1.setDescription("Is Really A Happy Day"); | ||||||
|     article1.setTitle("Happy Day"); |     article1.setTitle("Happy Day"); | ||||||
|  |  | ||||||
|     WxArticle article2 = new WxArticle(); |     NewArticle article2 = new NewArticle(); | ||||||
|     article2.setUrl("URL"); |     article2.setUrl("URL"); | ||||||
|     article2.setPicUrl("PIC_URL"); |     article2.setPicUrl("PIC_URL"); | ||||||
|     article2.setDescription("Is Really A Happy Day"); |     article2.setDescription("Is Really A Happy Day"); | ||||||
| @ -104,4 +105,39 @@ public class WxCpMessageTest { | |||||||
|     Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}"); |     Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   public void testMpnewsBuild_with_articles() { | ||||||
|  |     MpnewsArticle article1 = MpnewsArticle.newBuilder() | ||||||
|  |       .title("Happy Day") | ||||||
|  |       .author("aaaaaa") | ||||||
|  |       .content("hahaha") | ||||||
|  |       .contentSourceUrl("nice url") | ||||||
|  |       .digest("digest") | ||||||
|  |       .showCoverPic("heihei") | ||||||
|  |       .thumbMediaId("thumb") | ||||||
|  |       .build(); | ||||||
|  |  | ||||||
|  |     MpnewsArticle article2 = MpnewsArticle.newBuilder() | ||||||
|  |       .title("Happy Day") | ||||||
|  |       .author("aaaaaa") | ||||||
|  |       .content("hahaha") | ||||||
|  |       .contentSourceUrl("nice url") | ||||||
|  |       .digest("digest") | ||||||
|  |       .showCoverPic("heihei") | ||||||
|  |       .thumbMediaId("thumb") | ||||||
|  |       .build(); | ||||||
|  |  | ||||||
|  |     WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build(); | ||||||
|  |  | ||||||
|  |     Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\"," + | ||||||
|  |       "\"mpnews\":{\"articles\":[{\"title\":\"Happy Day\",\"thumb_media_id\":\"thumb\",\"author\":\"aaaaaa\",\"content_source_url\":\"nice url\",\"content\":\"hahaha\",\"digest\":\"digest\",\"show_cover_pic\":\"heihei\"}," + | ||||||
|  |       "{\"title\":\"Happy Day\",\"thumb_media_id\":\"thumb\",\"author\":\"aaaaaa\",\"content_source_url\":\"nice url\",\"content\":\"hahaha\",\"digest\":\"digest\",\"show_cover_pic\":\"heihei\"}]}}"); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void testMpnewsBuild_with_media_id() { | ||||||
|  |     WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").mediaId("mmm").build(); | ||||||
|  |  | ||||||
|  |     Assert.assertEquals(reply.toJson(), | ||||||
|  |       "{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\",\"mpnews\":{\"media_id\":\"mmm\"}}"); | ||||||
|  |   } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang