Browse Source

🎨 #1497 微信公众号群发图文消息接口参数优化,保持跟普通发送接口一致,减少重复代码

dev1
Binary Wang 5 years ago
parent
commit
3af0a2beba
12 changed files with 130 additions and 247 deletions
  1. +3
    -52
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java
  2. +1
    -1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialArticleUpdate.java
  3. +3
    -79
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java
  4. +82
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpNewsArticle.java
  5. +2
    -3
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java
  6. +0
    -70
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsArticleGsonAdapter.java
  7. +4
    -3
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsGsonAdapter.java
  8. +2
    -2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMaterialArticleUpdateGsonAdapter.java
  9. +4
    -3
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMaterialNewsGsonAdapter.java
  10. +5
    -6
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpNewsArticleGsonAdapter.java
  11. +19
    -23
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImplTest.java
  12. +5
    -5
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java

+ 3
- 52
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java View File

@@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.List;

import lombok.Data;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

/**
@@ -16,9 +17,9 @@ import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
public class WxMpMassNews implements Serializable {
private static final long serialVersionUID = 565937155013581016L;

private List<WxMpMassNewsArticle> articles = new ArrayList<>();
private List<WxMpNewsArticle> articles = new ArrayList<>();

public void addArticle(WxMpMassNewsArticle article) {
public void addArticle(WxMpNewsArticle article) {
this.articles.add(article);
}

@@ -35,54 +36,4 @@ public class WxMpMassNews implements Serializable {
return WxMpGsonBuilder.create().toJson(this);
}

/**
* <pre>
* 群发图文消息article.
* 1. thumbMediaId (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得
* 2. author 图文消息的作者
* 3. title (必填) 图文消息的标题
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
* 5. content (必填) 图文消息页面的内容,支持HTML标签
* 6. digest 图文消息的描述
* 7, showCoverPic 是否显示封面,true为显示,false为不显示
* </pre>
*
* @author chanjarster
*/
@Data
public static class WxMpMassNewsArticle {
/**
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
*/
private String thumbMediaId;
/**
* 图文消息的作者.
*/
private String author;
/**
* (必填) 图文消息的标题.
*/
private String title;
/**
* 在图文消息页面点击“阅读原文”后的页面链接.
*/
private String contentSourceUrl;
/**
* (必填) 图文消息页面的内容,支持HTML标签.
*/
private String content;
/**
* 图文消息的描述.
*/
private String digest;
/**
* 是否显示封面,true为显示,false为不显示.
*/
private boolean showCoverPic;

@Override
public String toString() {
return WxMpGsonBuilder.create().toJson(this);
}
}
}

+ 1
- 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialArticleUpdate.java View File

@@ -11,7 +11,7 @@ public class WxMpMaterialArticleUpdate implements Serializable {

private String mediaId;
private int index;
private WxMpMaterialNews.WxMpMaterialNewsArticle articles;
private WxMpNewsArticle articles;

public String toJson() {
return WxMpGsonBuilder.create().toJson(this);


+ 3
- 79
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java View File

@@ -20,13 +20,13 @@ public class WxMpMaterialNews implements Serializable {
private Date createTime;
private Date updateTime;

private List<WxMpMaterialNewsArticle> articles = new ArrayList<>();
private List<WxMpNewsArticle> articles = new ArrayList<>();

public List<WxMpMaterialNewsArticle> getArticles() {
public List<WxMpNewsArticle> getArticles() {
return this.articles;
}

public void addArticle(WxMpMaterialNewsArticle article) {
public void addArticle(WxMpNewsArticle article) {
this.articles.add(article);
}

@@ -43,80 +43,4 @@ public class WxMpMaterialNews implements Serializable {
return this.toJson();
}

/**
* <pre>
* 群发图文消息article.
* 1. thumbMediaId (必填) 图文消息的封面图片素材id(必须是永久mediaID)
* 2. author 图文消息的作者
* 3. title (必填) 图文消息的标题
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
* 5. content (必填) 图文消息页面的内容,支持HTML标签
* 6. digest 图文消息的描述
* 7. showCoverPic 是否显示封面,true为显示,false为不显示
* 8. url 点击图文消息跳转链接
* 9. need_open_comment(新增字段) 否 Uint32 是否打开评论,0不打开,1打开
* 10. only_fans_can_comment(新增字段) 否 Uint32 是否粉丝才可评论,0所有人可评论,1粉丝才可评论
* </pre>
*
* @author chanjarster
*/
@Data
public static class WxMpMaterialNewsArticle implements Serializable{

private static final long serialVersionUID = -635384661692321171L;
/**
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
*/
private String thumbMediaId;
/**
* 图文消息的封面url.
*/
private String thumbUrl;
/**
* 图文消息的作者.
*/
private String author;
/**
* (必填) 图文消息的标题.
*/
private String title;
/**
* 在图文消息页面点击“阅读原文”后的页面链接.
*/
private String contentSourceUrl;
/**
* (必填) 图文消息页面的内容,支持HTML标签.
*/
private String content;
/**
* 图文消息的描述.
*/
private String digest;
/**
* 是否显示封面,true为显示,false为不显示.
*/
private boolean showCoverPic;

/**
* 点击图文消息跳转链接.
*/
private String url;

/**
* need_open_comment
* 是否打开评论,0不打开,1打开.
*/
private Boolean needOpenComment;

/**
* only_fans_can_comment
* 是否粉丝才可评论,0所有人可评论,1粉丝才可评论.
*/
private Boolean onlyFansCanComment;

@Override
public String toString() {
return WxMpGsonBuilder.create().toJson(this);
}
}
}

+ 82
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpNewsArticle.java View File

@@ -0,0 +1,82 @@
package me.chanjar.weixin.mp.bean.material;

import lombok.Data;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

import java.io.Serializable;

/**
* <pre>
* 图文消息article.
* 1. thumbMediaId (必填) 图文消息的封面图片素材id(必须是永久mediaID)
* 2. author 图文消息的作者
* 3. title (必填) 图文消息的标题
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
* 5. content (必填) 图文消息页面的内容,支持HTML标签
* 6. digest 图文消息的描述
* 7. showCoverPic 是否显示封面,true为显示,false为不显示
* 8. url 点击图文消息跳转链接
* 9. need_open_comment(新增字段) 否 Uint32 是否打开评论,0不打开,1打开
* 10. only_fans_can_comment(新增字段) 否 Uint32 是否粉丝才可评论,0所有人可评论,1粉丝才可评论
* </pre>
*
* @author chanjarster
*/
@Data
public class WxMpNewsArticle implements Serializable {
private static final long serialVersionUID = -635384661692321171L;
/**
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
*/
private String thumbMediaId;
/**
* 图文消息的封面url.
*/
private String thumbUrl;
/**
* 图文消息的作者.
*/
private String author;
/**
* (必填) 图文消息的标题.
*/
private String title;
/**
* 在图文消息页面点击“阅读原文”后的页面链接.
*/
private String contentSourceUrl;
/**
* (必填) 图文消息页面的内容,支持HTML标签.
*/
private String content;
/**
* 图文消息的描述.
*/
private String digest;
/**
* 是否显示封面,true为显示,false为不显示.
*/
private boolean showCoverPic;

/**
* 点击图文消息跳转链接.
*/
private String url;

/**
* need_open_comment
* 是否打开评论,0不打开,1打开.
*/
private Boolean needOpenComment;

/**
* only_fans_can_comment
* 是否粉丝才可评论,0所有人可评论,1粉丝才可评论.
*/
private Boolean onlyFansCanComment;

@Override
public String toString() {
return WxMpGsonBuilder.create().toJson(this);
}
}

+ 2
- 3
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java View File

@@ -8,10 +8,10 @@ import me.chanjar.weixin.mp.bean.card.WxMpCardResult;
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate;
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
import me.chanjar.weixin.mp.bean.material.*;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivateTempInfoResult;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
import me.chanjar.weixin.mp.bean.material.*;
import me.chanjar.weixin.mp.bean.result.*;
import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
@@ -45,11 +45,10 @@ public class WxMpGsonBuilder {
INSTANCE.registerTypeAdapter(WxDataCubeUserCumulate.class, new WxMpUserCumulateGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialUploadResult.class, new WxMpMaterialUploadResultAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialVideoInfoResult.class, new WxMpMaterialVideoInfoResultAdapter());
INSTANCE.registerTypeAdapter(WxMpMassNews.WxMpMassNewsArticle.class, new WxMpMassNewsArticleGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialArticleUpdate.class, new WxMpMaterialArticleUpdateGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialCountResult.class, new WxMpMaterialCountResultAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialNews.class, new WxMpMaterialNewsGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialNews.WxMpMaterialNewsArticle.class, new WxMpMaterialNewsArticleGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpNewsArticle.class, new WxMpNewsArticleGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.class, new WxMpMaterialNewsBatchGetGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem.class, new WxMpMaterialNewsBatchGetGsonItemAdapter());
INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.class, new WxMpMaterialFileBatchGetGsonAdapter());


+ 0
- 70
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsArticleGsonAdapter.java View File

@@ -1,70 +0,0 @@
package me.chanjar.weixin.mp.util.json;

import com.google.gson.*;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.mp.bean.WxMpMassNews;
import org.apache.commons.lang3.BooleanUtils;

import java.lang.reflect.Type;

/**
* @author codepiano
*/
public class WxMpMassNewsArticleGsonAdapter implements JsonSerializer<WxMpMassNews.WxMpMassNewsArticle>, JsonDeserializer<WxMpMassNews.WxMpMassNewsArticle> {

@Override
public JsonElement serialize(WxMpMassNews.WxMpMassNewsArticle article, Type typeOfSrc, JsonSerializationContext context) {
JsonObject articleJson = new JsonObject();

articleJson.addProperty("thumb_media_id", article.getThumbMediaId());
articleJson.addProperty("title", article.getTitle());
articleJson.addProperty("content", article.getContent());
if (null != article.getAuthor()) {
articleJson.addProperty("author", article.getAuthor());
}
if (null != article.getContentSourceUrl()) {
articleJson.addProperty("content_source_url", article.getContentSourceUrl());
}
if (null != article.getDigest()) {
articleJson.addProperty("digest", article.getDigest());
}
articleJson.addProperty("show_cover_pic", article.isShowCoverPic() ? "1" : "0");
return articleJson;
}

@Override
public WxMpMassNews.WxMpMassNewsArticle deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
JsonObject articleInfo = jsonElement.getAsJsonObject();
WxMpMassNews.WxMpMassNewsArticle article = new WxMpMassNews.WxMpMassNewsArticle();

JsonElement title = articleInfo.get("title");
if (title != null && !title.isJsonNull()) {
article.setTitle(GsonHelper.getAsString(title));
}
JsonElement content = articleInfo.get("content");
if (content != null && !content.isJsonNull()) {
article.setContent(GsonHelper.getAsString(content));
}
JsonElement contentSourceUrl = articleInfo.get("content_source_url");
if (contentSourceUrl != null && !contentSourceUrl.isJsonNull()) {
article.setContentSourceUrl(GsonHelper.getAsString(contentSourceUrl));
}
JsonElement author = articleInfo.get("author");
if (author != null && !author.isJsonNull()) {
article.setAuthor(GsonHelper.getAsString(author));
}
JsonElement digest = articleInfo.get("digest");
if (digest != null && !digest.isJsonNull()) {
article.setDigest(GsonHelper.getAsString(digest));
}
JsonElement thumbMediaId = articleInfo.get("thumb_media_id");
if (thumbMediaId != null && !thumbMediaId.isJsonNull()) {
article.setThumbMediaId(GsonHelper.getAsString(thumbMediaId));
}
JsonElement showCoverPic = articleInfo.get("show_cover_pic");
if (showCoverPic != null && !showCoverPic.isJsonNull()) {
article.setShowCoverPic(BooleanUtils.toBoolean(showCoverPic.getAsInt()));
}
return article;
}
}

+ 4
- 3
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsGsonAdapter.java View File

@@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.util.json;

import com.google.gson.*;
import me.chanjar.weixin.mp.bean.WxMpMassNews;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;

import java.lang.reflect.Type;

@@ -12,8 +13,8 @@ public class WxMpMassNewsGsonAdapter implements JsonSerializer<WxMpMassNews>, Js
JsonObject newsJson = new JsonObject();

JsonArray articleJsonArray = new JsonArray();
for (WxMpMassNews.WxMpMassNewsArticle article : message.getArticles()) {
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpMassNews.WxMpMassNewsArticle.class).getAsJsonObject();
for (WxMpNewsArticle article : message.getArticles()) {
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpNewsArticle.class).getAsJsonObject();
articleJsonArray.add(articleJson);
}
newsJson.add("articles", articleJsonArray);
@@ -29,7 +30,7 @@ public class WxMpMassNewsGsonAdapter implements JsonSerializer<WxMpMassNews>, Js
JsonArray articles = json.getAsJsonArray("articles");
for (JsonElement article1 : articles) {
JsonObject articleInfo = article1.getAsJsonObject();
WxMpMassNews.WxMpMassNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpMassNews.WxMpMassNewsArticle.class);
WxMpNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpNewsArticle.class);
wxMpMassNews.addArticle(article);
}
}


+ 2
- 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMaterialArticleUpdateGsonAdapter.java View File

@@ -5,7 +5,7 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialArticleUpdate;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;

import java.lang.reflect.Type;

@@ -16,7 +16,7 @@ public class WxMpMaterialArticleUpdateGsonAdapter implements JsonSerializer<WxMp
JsonObject articleUpdateJson = new JsonObject();
articleUpdateJson.addProperty("media_id", wxMpMaterialArticleUpdate.getMediaId());
articleUpdateJson.addProperty("index", wxMpMaterialArticleUpdate.getIndex());
articleUpdateJson.add("articles", WxMpGsonBuilder.create().toJsonTree(wxMpMaterialArticleUpdate.getArticles(), WxMpMaterialNews.WxMpMaterialNewsArticle.class));
articleUpdateJson.add("articles", WxMpGsonBuilder.create().toJsonTree(wxMpMaterialArticleUpdate.getArticles(), WxMpNewsArticle.class));
return articleUpdateJson;
}



+ 4
- 3
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMaterialNewsGsonAdapter.java View File

@@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;

import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
@@ -15,8 +16,8 @@ public class WxMpMaterialNewsGsonAdapter implements JsonSerializer<WxMpMaterialN
JsonObject newsJson = new JsonObject();

JsonArray articleJsonArray = new JsonArray();
for (WxMpMaterialNews.WxMpMaterialNewsArticle article : wxMpMaterialNews.getArticles()) {
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpMaterialNews.WxMpMaterialNewsArticle.class).getAsJsonObject();
for (WxMpNewsArticle article : wxMpMaterialNews.getArticles()) {
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpNewsArticle.class).getAsJsonObject();
articleJsonArray.add(articleJson);
}
newsJson.add("articles", articleJsonArray);
@@ -42,7 +43,7 @@ public class WxMpMaterialNewsGsonAdapter implements JsonSerializer<WxMpMaterialN
JsonArray articles = json.getAsJsonArray("news_item");
for (JsonElement article1 : articles) {
JsonObject articleInfo = article1.getAsJsonObject();
WxMpMaterialNews.WxMpMaterialNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpMaterialNews.WxMpMaterialNewsArticle.class);
WxMpNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpNewsArticle.class);
wxMpMaterialNews.addArticle(article);
}
}


weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMaterialNewsArticleGsonAdapter.java → weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpNewsArticleGsonAdapter.java View File

@@ -2,7 +2,7 @@ package me.chanjar.weixin.mp.util.json;

import com.google.gson.*;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
import org.apache.commons.lang3.BooleanUtils;

import java.lang.reflect.Type;
@@ -10,10 +10,9 @@ import java.lang.reflect.Type;
/**
* @author codepiano
*/
public class WxMpMaterialNewsArticleGsonAdapter implements JsonSerializer<WxMpMaterialNews.WxMpMaterialNewsArticle>, JsonDeserializer<WxMpMaterialNews.WxMpMaterialNewsArticle> {

public class WxMpNewsArticleGsonAdapter implements JsonSerializer<WxMpNewsArticle>, JsonDeserializer<WxMpNewsArticle> {
@Override
public JsonElement serialize(WxMpMaterialNews.WxMpMaterialNewsArticle article, Type typeOfSrc, JsonSerializationContext context) {
public JsonElement serialize(WxMpNewsArticle article, Type typeOfSrc, JsonSerializationContext context) {
JsonObject articleJson = new JsonObject();

articleJson.addProperty("thumb_media_id", article.getThumbMediaId());
@@ -47,9 +46,9 @@ public class WxMpMaterialNewsArticleGsonAdapter implements JsonSerializer<WxMpMa
}

@Override
public WxMpMaterialNews.WxMpMaterialNewsArticle deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
public WxMpNewsArticle deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
JsonObject articleInfo = jsonElement.getAsJsonObject();
WxMpMaterialNews.WxMpMaterialNewsArticle article = new WxMpMaterialNews.WxMpMaterialNewsArticle();
WxMpNewsArticle article = new WxMpNewsArticle();

JsonElement title = articleInfo.get("title");
if (title != null && !title.isJsonNull()) {

+ 19
- 23
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImplTest.java View File

@@ -12,14 +12,17 @@ import me.chanjar.weixin.mp.bean.WxMpMassNews;
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
import me.chanjar.weixin.mp.bean.WxMpMassVideo;
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
import org.testng.annotations.*;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;

import java.io.IOException;
import java.io.InputStream;

import static org.testng.Assert.*;
import static org.testng.Assert.assertNotNull;

/**
* 测试群发消息
@@ -35,15 +38,13 @@ public class WxMpMassMessageServiceImplTest {
@Test
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
// 发送群发消息
TestConfigStorage configProvider = (TestConfigStorage) this.wxService
.getWxMpConfigStorage();
TestConfigStorage configProvider = (TestConfigStorage) this.wxService .getWxMpConfigStorage();
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
massMessage.setContent("测试群发消息\n欢迎欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
massMessage.getToUsers().add(configProvider.getOpenid());

WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massOpenIdsMessageSend(massMessage);
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massOpenIdsMessageSend(massMessage);
assertNotNull(massResult);
assertNotNull(massResult.getMsgId());
}
@@ -51,15 +52,13 @@ public class WxMpMassMessageServiceImplTest {
@Test(dataProvider = "massMessages")
public void testMediaMassOpenIdsMessageSend(String massMsgType, String mediaId) throws WxErrorException {
// 发送群发消息
TestConfigStorage configProvider = (TestConfigStorage) this.wxService
.getWxMpConfigStorage();
TestConfigStorage configProvider = (TestConfigStorage) this.wxService.getWxMpConfigStorage();
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
massMessage.setMsgType(massMsgType);
massMessage.setMediaId(mediaId);
massMessage.getToUsers().add(configProvider.getOpenid());

WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massOpenIdsMessageSend(massMessage);
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massOpenIdsMessageSend(massMessage);
assertNotNull(massResult);
assertNotNull(massResult.getMsgId());
}
@@ -68,26 +67,23 @@ public class WxMpMassMessageServiceImplTest {
public void testTextMassGroupMessageSend() throws WxErrorException {
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
massMessage.setContent("测试群发消息\n欢迎欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
massMessage
.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());

WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massGroupMessageSend(massMessage);
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massGroupMessageSend(massMessage);
assertNotNull(massResult);
assertNotNull(massResult.getMsgId());
}

@Test(dataProvider = "massMessages")
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId)
throws WxErrorException {
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException {
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
massMessage.setMsgType(massMsgType);
massMessage.setMediaId(mediaId);
massMessage.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());

WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massGroupMessageSend(massMessage);
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massGroupMessageSend(massMessage);
assertNotNull(massResult);
assertNotNull(massResult.getMsgId());
}
@@ -155,15 +151,15 @@ public class WxMpMassMessageServiceImplTest {

// 上传图文消息
WxMpMassNews news = new WxMpMassNews();
WxMpMassNews.WxMpMassNewsArticle article1 = new WxMpMassNews.WxMpMassNewsArticle();
WxMpNewsArticle article1 = new WxMpNewsArticle();
article1.setTitle("标题1");
article1.setContent("内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1");
article1.setContent("内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1");
article1.setThumbMediaId(uploadMediaRes.getMediaId());
news.addArticle(article1);

WxMpMassNews.WxMpMassNewsArticle article2 = new WxMpMassNews.WxMpMassNewsArticle();
WxMpNewsArticle article2 = new WxMpNewsArticle();
article2.setTitle("标题2");
article2.setContent("内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2");
article2.setContent("内容2内容2内容2内容2内容2内容2内容2内容2内2内容2内容2内容2内容2内容2内容2内容2内容2内容2");
article2.setThumbMediaId(uploadMediaRes.getMediaId());
article2.setShowCoverPic(true);
article2.setAuthor("作者2");
@@ -183,7 +179,7 @@ public class WxMpMassMessageServiceImplTest {

@Test
public void testMassDelete() throws Exception {
this.wxService.getMassMessageService().delete(1L,2);
this.wxService.getMassMessageService().delete(1L, 2);
}

}

+ 5
- 5
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java View File

@@ -103,7 +103,7 @@ public class WxMpMaterialServiceImplTest {
public void testAddNews() throws WxErrorException {
// 单图文消息
WxMpMaterialNews wxMpMaterialNewsSingle = new WxMpMaterialNews();
WxMpMaterialNews.WxMpMaterialNewsArticle article = new WxMpMaterialNews.WxMpMaterialNewsArticle();
WxMpNewsArticle article = new WxMpNewsArticle();
article.setAuthor("author");
article.setThumbMediaId(this.thumbMediaId);
article.setTitle("single title");
@@ -115,7 +115,7 @@ public class WxMpMaterialServiceImplTest {

// 多图文消息
WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews();
WxMpMaterialNews.WxMpMaterialNewsArticle article1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
WxMpNewsArticle article1 = new WxMpNewsArticle();
article1.setAuthor("author1");
article1.setThumbMediaId(this.thumbMediaId);
article1.setTitle("multi title1");
@@ -124,7 +124,7 @@ public class WxMpMaterialServiceImplTest {
article1.setShowCoverPic(true);
article1.setDigest("");

WxMpMaterialNews.WxMpMaterialNewsArticle article2 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
WxMpNewsArticle article2 = new WxMpNewsArticle();
article2.setAuthor("author2");
article2.setThumbMediaId(this.thumbMediaId);
article2.setTitle("multi title2");
@@ -196,7 +196,7 @@ public class WxMpMaterialServiceImplTest {
.getMaterialService().materialNewsInfo(this.singleNewsMediaId);
assertNotNull(wxMpMaterialNewsSingle);
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateSingle = new WxMpMaterialArticleUpdate();
WxMpMaterialNews.WxMpMaterialNewsArticle articleSingle = wxMpMaterialNewsSingle.getArticles().get(0);
WxMpNewsArticle articleSingle = wxMpMaterialNewsSingle.getArticles().get(0);
articleSingle.setContent("content single update");
wxMpMaterialArticleUpdateSingle.setMediaId(this.singleNewsMediaId);
wxMpMaterialArticleUpdateSingle.setArticles(articleSingle);
@@ -213,7 +213,7 @@ public class WxMpMaterialServiceImplTest {
.getMaterialService().materialNewsInfo(this.multiNewsMediaId);
assertNotNull(wxMpMaterialNewsMultiple);
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateMulti = new WxMpMaterialArticleUpdate();
WxMpMaterialNews.WxMpMaterialNewsArticle articleMulti = wxMpMaterialNewsMultiple.getArticles().get(1);
WxMpNewsArticle articleMulti = wxMpMaterialNewsMultiple.getArticles().get(1);
articleMulti.setContent("content 2 update");
wxMpMaterialArticleUpdateMulti.setMediaId(this.multiNewsMediaId);
wxMpMaterialArticleUpdateMulti.setArticles(articleMulti);


Loading…
Cancel
Save