mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-05 21:27:47 +08:00
🎨 #1497 微信公众号群发图文消息接口参数优化,保持跟普通发送接口一致,减少重复代码
This commit is contained in:
parent
1487ce3e29
commit
3af0a2beba
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
|
||||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
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 {
|
public class WxMpMassNews implements Serializable {
|
||||||
private static final long serialVersionUID = 565937155013581016L;
|
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);
|
this.articles.add(article);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,54 +36,4 @@ public class WxMpMassNews implements Serializable {
|
|||||||
return WxMpGsonBuilder.create().toJson(this);
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ public class WxMpMaterialArticleUpdate implements Serializable {
|
|||||||
|
|
||||||
private String mediaId;
|
private String mediaId;
|
||||||
private int index;
|
private int index;
|
||||||
private WxMpMaterialNews.WxMpMaterialNewsArticle articles;
|
private WxMpNewsArticle articles;
|
||||||
|
|
||||||
public String toJson() {
|
public String toJson() {
|
||||||
return WxMpGsonBuilder.create().toJson(this);
|
return WxMpGsonBuilder.create().toJson(this);
|
||||||
|
@ -20,13 +20,13 @@ public class WxMpMaterialNews implements Serializable {
|
|||||||
private Date createTime;
|
private Date createTime;
|
||||||
private Date updateTime;
|
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;
|
return this.articles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addArticle(WxMpMaterialNewsArticle article) {
|
public void addArticle(WxMpNewsArticle article) {
|
||||||
this.articles.add(article);
|
this.articles.add(article);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,80 +43,4 @@ public class WxMpMaterialNews implements Serializable {
|
|||||||
return this.toJson();
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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.WxDataCubeUserCumulate;
|
||||||
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
|
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
|
||||||
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
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.WxMpMemberCardActivateTempInfoResult;
|
||||||
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
|
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
|
||||||
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
|
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.result.*;
|
||||||
import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;
|
import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;
|
||||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
|
||||||
@ -45,11 +45,10 @@ public class WxMpGsonBuilder {
|
|||||||
INSTANCE.registerTypeAdapter(WxDataCubeUserCumulate.class, new WxMpUserCumulateGsonAdapter());
|
INSTANCE.registerTypeAdapter(WxDataCubeUserCumulate.class, new WxMpUserCumulateGsonAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialUploadResult.class, new WxMpMaterialUploadResultAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialUploadResult.class, new WxMpMaterialUploadResultAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialVideoInfoResult.class, new WxMpMaterialVideoInfoResultAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialVideoInfoResult.class, new WxMpMaterialVideoInfoResultAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMassNews.WxMpMassNewsArticle.class, new WxMpMassNewsArticleGsonAdapter());
|
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialArticleUpdate.class, new WxMpMaterialArticleUpdateGsonAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialArticleUpdate.class, new WxMpMaterialArticleUpdateGsonAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialCountResult.class, new WxMpMaterialCountResultAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialCountResult.class, new WxMpMaterialCountResultAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialNews.class, new WxMpMaterialNewsGsonAdapter());
|
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.class, new WxMpMaterialNewsBatchGetGsonAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem.class, new WxMpMaterialNewsBatchGetGsonItemAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem.class, new WxMpMaterialNewsBatchGetGsonItemAdapter());
|
||||||
INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.class, new WxMpMaterialFileBatchGetGsonAdapter());
|
INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.class, new WxMpMaterialFileBatchGetGsonAdapter());
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.util.json;
|
|||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassNews;
|
import me.chanjar.weixin.mp.bean.WxMpMassNews;
|
||||||
|
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
@ -12,8 +13,8 @@ public class WxMpMassNewsGsonAdapter implements JsonSerializer<WxMpMassNews>, Js
|
|||||||
JsonObject newsJson = new JsonObject();
|
JsonObject newsJson = new JsonObject();
|
||||||
|
|
||||||
JsonArray articleJsonArray = new JsonArray();
|
JsonArray articleJsonArray = new JsonArray();
|
||||||
for (WxMpMassNews.WxMpMassNewsArticle article : message.getArticles()) {
|
for (WxMpNewsArticle article : message.getArticles()) {
|
||||||
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpMassNews.WxMpMassNewsArticle.class).getAsJsonObject();
|
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpNewsArticle.class).getAsJsonObject();
|
||||||
articleJsonArray.add(articleJson);
|
articleJsonArray.add(articleJson);
|
||||||
}
|
}
|
||||||
newsJson.add("articles", articleJsonArray);
|
newsJson.add("articles", articleJsonArray);
|
||||||
@ -29,7 +30,7 @@ public class WxMpMassNewsGsonAdapter implements JsonSerializer<WxMpMassNews>, Js
|
|||||||
JsonArray articles = json.getAsJsonArray("articles");
|
JsonArray articles = json.getAsJsonArray("articles");
|
||||||
for (JsonElement article1 : articles) {
|
for (JsonElement article1 : articles) {
|
||||||
JsonObject articleInfo = article1.getAsJsonObject();
|
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);
|
wxMpMassNews.addArticle(article);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import com.google.gson.JsonObject;
|
|||||||
import com.google.gson.JsonSerializationContext;
|
import com.google.gson.JsonSerializationContext;
|
||||||
import com.google.gson.JsonSerializer;
|
import com.google.gson.JsonSerializer;
|
||||||
import me.chanjar.weixin.mp.bean.material.WxMpMaterialArticleUpdate;
|
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;
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ public class WxMpMaterialArticleUpdateGsonAdapter implements JsonSerializer<WxMp
|
|||||||
JsonObject articleUpdateJson = new JsonObject();
|
JsonObject articleUpdateJson = new JsonObject();
|
||||||
articleUpdateJson.addProperty("media_id", wxMpMaterialArticleUpdate.getMediaId());
|
articleUpdateJson.addProperty("media_id", wxMpMaterialArticleUpdate.getMediaId());
|
||||||
articleUpdateJson.addProperty("index", wxMpMaterialArticleUpdate.getIndex());
|
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;
|
return articleUpdateJson;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.util.json;
|
|||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||||
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
|
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
|
||||||
|
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -15,8 +16,8 @@ public class WxMpMaterialNewsGsonAdapter implements JsonSerializer<WxMpMaterialN
|
|||||||
JsonObject newsJson = new JsonObject();
|
JsonObject newsJson = new JsonObject();
|
||||||
|
|
||||||
JsonArray articleJsonArray = new JsonArray();
|
JsonArray articleJsonArray = new JsonArray();
|
||||||
for (WxMpMaterialNews.WxMpMaterialNewsArticle article : wxMpMaterialNews.getArticles()) {
|
for (WxMpNewsArticle article : wxMpMaterialNews.getArticles()) {
|
||||||
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpMaterialNews.WxMpMaterialNewsArticle.class).getAsJsonObject();
|
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpNewsArticle.class).getAsJsonObject();
|
||||||
articleJsonArray.add(articleJson);
|
articleJsonArray.add(articleJson);
|
||||||
}
|
}
|
||||||
newsJson.add("articles", articleJsonArray);
|
newsJson.add("articles", articleJsonArray);
|
||||||
@ -42,7 +43,7 @@ public class WxMpMaterialNewsGsonAdapter implements JsonSerializer<WxMpMaterialN
|
|||||||
JsonArray articles = json.getAsJsonArray("news_item");
|
JsonArray articles = json.getAsJsonArray("news_item");
|
||||||
for (JsonElement article1 : articles) {
|
for (JsonElement article1 : articles) {
|
||||||
JsonObject articleInfo = article1.getAsJsonObject();
|
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);
|
wxMpMaterialNews.addArticle(article);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package me.chanjar.weixin.mp.util.json;
|
|||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
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 org.apache.commons.lang3.BooleanUtils;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
@ -10,10 +10,9 @@ import java.lang.reflect.Type;
|
|||||||
/**
|
/**
|
||||||
* @author codepiano
|
* @author codepiano
|
||||||
*/
|
*/
|
||||||
public class WxMpMaterialNewsArticleGsonAdapter implements JsonSerializer<WxMpMaterialNews.WxMpMaterialNewsArticle>, JsonDeserializer<WxMpMaterialNews.WxMpMaterialNewsArticle> {
|
public class WxMpNewsArticleGsonAdapter implements JsonSerializer<WxMpNewsArticle>, JsonDeserializer<WxMpNewsArticle> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JsonElement serialize(WxMpMaterialNews.WxMpMaterialNewsArticle article, Type typeOfSrc, JsonSerializationContext context) {
|
public JsonElement serialize(WxMpNewsArticle article, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
JsonObject articleJson = new JsonObject();
|
JsonObject articleJson = new JsonObject();
|
||||||
|
|
||||||
articleJson.addProperty("thumb_media_id", article.getThumbMediaId());
|
articleJson.addProperty("thumb_media_id", article.getThumbMediaId());
|
||||||
@ -47,9 +46,9 @@ public class WxMpMaterialNewsArticleGsonAdapter implements JsonSerializer<WxMpMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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();
|
JsonObject articleInfo = jsonElement.getAsJsonObject();
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle article = new WxMpMaterialNews.WxMpMaterialNewsArticle();
|
WxMpNewsArticle article = new WxMpNewsArticle();
|
||||||
|
|
||||||
JsonElement title = articleInfo.get("title");
|
JsonElement title = articleInfo.get("title");
|
||||||
if (title != null && !title.isJsonNull()) {
|
if (title != null && !title.isJsonNull()) {
|
@ -12,14 +12,17 @@ import me.chanjar.weixin.mp.bean.WxMpMassNews;
|
|||||||
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
|
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
|
import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassVideo;
|
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.WxMpMassSendResult;
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
|
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.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import static org.testng.Assert.*;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 测试群发消息
|
* 测试群发消息
|
||||||
@ -35,15 +38,13 @@ public class WxMpMassMessageServiceImplTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
|
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
|
||||||
// 发送群发消息
|
// 发送群发消息
|
||||||
TestConfigStorage configProvider = (TestConfigStorage) this.wxService
|
TestConfigStorage configProvider = (TestConfigStorage) this.wxService .getWxMpConfigStorage();
|
||||||
.getWxMpConfigStorage();
|
|
||||||
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
|
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
|
||||||
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
|
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());
|
massMessage.getToUsers().add(configProvider.getOpenid());
|
||||||
|
|
||||||
WxMpMassSendResult massResult = this.wxService.getMassMessageService()
|
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massOpenIdsMessageSend(massMessage);
|
||||||
.massOpenIdsMessageSend(massMessage);
|
|
||||||
assertNotNull(massResult);
|
assertNotNull(massResult);
|
||||||
assertNotNull(massResult.getMsgId());
|
assertNotNull(massResult.getMsgId());
|
||||||
}
|
}
|
||||||
@ -51,15 +52,13 @@ public class WxMpMassMessageServiceImplTest {
|
|||||||
@Test(dataProvider = "massMessages")
|
@Test(dataProvider = "massMessages")
|
||||||
public void testMediaMassOpenIdsMessageSend(String massMsgType, String mediaId) throws WxErrorException {
|
public void testMediaMassOpenIdsMessageSend(String massMsgType, String mediaId) throws WxErrorException {
|
||||||
// 发送群发消息
|
// 发送群发消息
|
||||||
TestConfigStorage configProvider = (TestConfigStorage) this.wxService
|
TestConfigStorage configProvider = (TestConfigStorage) this.wxService.getWxMpConfigStorage();
|
||||||
.getWxMpConfigStorage();
|
|
||||||
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
|
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
|
||||||
massMessage.setMsgType(massMsgType);
|
massMessage.setMsgType(massMsgType);
|
||||||
massMessage.setMediaId(mediaId);
|
massMessage.setMediaId(mediaId);
|
||||||
massMessage.getToUsers().add(configProvider.getOpenid());
|
massMessage.getToUsers().add(configProvider.getOpenid());
|
||||||
|
|
||||||
WxMpMassSendResult massResult = this.wxService.getMassMessageService()
|
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massOpenIdsMessageSend(massMessage);
|
||||||
.massOpenIdsMessageSend(massMessage);
|
|
||||||
assertNotNull(massResult);
|
assertNotNull(massResult);
|
||||||
assertNotNull(massResult.getMsgId());
|
assertNotNull(massResult.getMsgId());
|
||||||
}
|
}
|
||||||
@ -68,26 +67,23 @@ public class WxMpMassMessageServiceImplTest {
|
|||||||
public void testTextMassGroupMessageSend() throws WxErrorException {
|
public void testTextMassGroupMessageSend() throws WxErrorException {
|
||||||
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
||||||
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
|
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
|
massMessage
|
||||||
.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
|
.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
|
||||||
|
|
||||||
WxMpMassSendResult massResult = this.wxService.getMassMessageService()
|
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massGroupMessageSend(massMessage);
|
||||||
.massGroupMessageSend(massMessage);
|
|
||||||
assertNotNull(massResult);
|
assertNotNull(massResult);
|
||||||
assertNotNull(massResult.getMsgId());
|
assertNotNull(massResult.getMsgId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dataProvider = "massMessages")
|
@Test(dataProvider = "massMessages")
|
||||||
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId)
|
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException {
|
||||||
throws WxErrorException {
|
|
||||||
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
||||||
massMessage.setMsgType(massMsgType);
|
massMessage.setMsgType(massMsgType);
|
||||||
massMessage.setMediaId(mediaId);
|
massMessage.setMediaId(mediaId);
|
||||||
massMessage.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
|
massMessage.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
|
||||||
|
|
||||||
WxMpMassSendResult massResult = this.wxService.getMassMessageService()
|
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massGroupMessageSend(massMessage);
|
||||||
.massGroupMessageSend(massMessage);
|
|
||||||
assertNotNull(massResult);
|
assertNotNull(massResult);
|
||||||
assertNotNull(massResult.getMsgId());
|
assertNotNull(massResult.getMsgId());
|
||||||
}
|
}
|
||||||
@ -155,15 +151,15 @@ public class WxMpMassMessageServiceImplTest {
|
|||||||
|
|
||||||
// 上传图文消息
|
// 上传图文消息
|
||||||
WxMpMassNews news = new WxMpMassNews();
|
WxMpMassNews news = new WxMpMassNews();
|
||||||
WxMpMassNews.WxMpMassNewsArticle article1 = new WxMpMassNews.WxMpMassNewsArticle();
|
WxMpNewsArticle article1 = new WxMpNewsArticle();
|
||||||
article1.setTitle("标题1");
|
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());
|
article1.setThumbMediaId(uploadMediaRes.getMediaId());
|
||||||
news.addArticle(article1);
|
news.addArticle(article1);
|
||||||
|
|
||||||
WxMpMassNews.WxMpMassNewsArticle article2 = new WxMpMassNews.WxMpMassNewsArticle();
|
WxMpNewsArticle article2 = new WxMpNewsArticle();
|
||||||
article2.setTitle("标题2");
|
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.setThumbMediaId(uploadMediaRes.getMediaId());
|
||||||
article2.setShowCoverPic(true);
|
article2.setShowCoverPic(true);
|
||||||
article2.setAuthor("作者2");
|
article2.setAuthor("作者2");
|
||||||
@ -183,7 +179,7 @@ public class WxMpMassMessageServiceImplTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMassDelete() throws Exception {
|
public void testMassDelete() throws Exception {
|
||||||
this.wxService.getMassMessageService().delete(1L,2);
|
this.wxService.getMassMessageService().delete(1L, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ public class WxMpMaterialServiceImplTest {
|
|||||||
public void testAddNews() throws WxErrorException {
|
public void testAddNews() throws WxErrorException {
|
||||||
// 单图文消息
|
// 单图文消息
|
||||||
WxMpMaterialNews wxMpMaterialNewsSingle = new WxMpMaterialNews();
|
WxMpMaterialNews wxMpMaterialNewsSingle = new WxMpMaterialNews();
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle article = new WxMpMaterialNews.WxMpMaterialNewsArticle();
|
WxMpNewsArticle article = new WxMpNewsArticle();
|
||||||
article.setAuthor("author");
|
article.setAuthor("author");
|
||||||
article.setThumbMediaId(this.thumbMediaId);
|
article.setThumbMediaId(this.thumbMediaId);
|
||||||
article.setTitle("single title");
|
article.setTitle("single title");
|
||||||
@ -115,7 +115,7 @@ public class WxMpMaterialServiceImplTest {
|
|||||||
|
|
||||||
// 多图文消息
|
// 多图文消息
|
||||||
WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews();
|
WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews();
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle article1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
|
WxMpNewsArticle article1 = new WxMpNewsArticle();
|
||||||
article1.setAuthor("author1");
|
article1.setAuthor("author1");
|
||||||
article1.setThumbMediaId(this.thumbMediaId);
|
article1.setThumbMediaId(this.thumbMediaId);
|
||||||
article1.setTitle("multi title1");
|
article1.setTitle("multi title1");
|
||||||
@ -124,7 +124,7 @@ public class WxMpMaterialServiceImplTest {
|
|||||||
article1.setShowCoverPic(true);
|
article1.setShowCoverPic(true);
|
||||||
article1.setDigest("");
|
article1.setDigest("");
|
||||||
|
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle article2 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
|
WxMpNewsArticle article2 = new WxMpNewsArticle();
|
||||||
article2.setAuthor("author2");
|
article2.setAuthor("author2");
|
||||||
article2.setThumbMediaId(this.thumbMediaId);
|
article2.setThumbMediaId(this.thumbMediaId);
|
||||||
article2.setTitle("multi title2");
|
article2.setTitle("multi title2");
|
||||||
@ -196,7 +196,7 @@ public class WxMpMaterialServiceImplTest {
|
|||||||
.getMaterialService().materialNewsInfo(this.singleNewsMediaId);
|
.getMaterialService().materialNewsInfo(this.singleNewsMediaId);
|
||||||
assertNotNull(wxMpMaterialNewsSingle);
|
assertNotNull(wxMpMaterialNewsSingle);
|
||||||
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateSingle = new WxMpMaterialArticleUpdate();
|
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateSingle = new WxMpMaterialArticleUpdate();
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle articleSingle = wxMpMaterialNewsSingle.getArticles().get(0);
|
WxMpNewsArticle articleSingle = wxMpMaterialNewsSingle.getArticles().get(0);
|
||||||
articleSingle.setContent("content single update");
|
articleSingle.setContent("content single update");
|
||||||
wxMpMaterialArticleUpdateSingle.setMediaId(this.singleNewsMediaId);
|
wxMpMaterialArticleUpdateSingle.setMediaId(this.singleNewsMediaId);
|
||||||
wxMpMaterialArticleUpdateSingle.setArticles(articleSingle);
|
wxMpMaterialArticleUpdateSingle.setArticles(articleSingle);
|
||||||
@ -213,7 +213,7 @@ public class WxMpMaterialServiceImplTest {
|
|||||||
.getMaterialService().materialNewsInfo(this.multiNewsMediaId);
|
.getMaterialService().materialNewsInfo(this.multiNewsMediaId);
|
||||||
assertNotNull(wxMpMaterialNewsMultiple);
|
assertNotNull(wxMpMaterialNewsMultiple);
|
||||||
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateMulti = new WxMpMaterialArticleUpdate();
|
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateMulti = new WxMpMaterialArticleUpdate();
|
||||||
WxMpMaterialNews.WxMpMaterialNewsArticle articleMulti = wxMpMaterialNewsMultiple.getArticles().get(1);
|
WxMpNewsArticle articleMulti = wxMpMaterialNewsMultiple.getArticles().get(1);
|
||||||
articleMulti.setContent("content 2 update");
|
articleMulti.setContent("content 2 update");
|
||||||
wxMpMaterialArticleUpdateMulti.setMediaId(this.multiNewsMediaId);
|
wxMpMaterialArticleUpdateMulti.setMediaId(this.multiNewsMediaId);
|
||||||
wxMpMaterialArticleUpdateMulti.setArticles(articleMulti);
|
wxMpMaterialArticleUpdateMulti.setArticles(articleMulti);
|
||||||
|
Loading…
Reference in New Issue
Block a user