Skip to content

Commit 3af0a2b

Browse files
committed
🎨 #1497 微信公众号群发图文消息接口参数优化,保持跟普通发送接口一致,减少重复代码
1 parent 1487ce3 commit 3af0a2b

12 files changed

+130
-247
lines changed

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java

+3-52
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.List;
66

77
import lombok.Data;
8+
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
89
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
910

1011
/**
@@ -16,9 +17,9 @@
1617
public class WxMpMassNews implements Serializable {
1718
private static final long serialVersionUID = 565937155013581016L;
1819

19-
private List<WxMpMassNewsArticle> articles = new ArrayList<>();
20+
private List<WxMpNewsArticle> articles = new ArrayList<>();
2021

21-
public void addArticle(WxMpMassNewsArticle article) {
22+
public void addArticle(WxMpNewsArticle article) {
2223
this.articles.add(article);
2324
}
2425

@@ -35,54 +36,4 @@ public String toString() {
3536
return WxMpGsonBuilder.create().toJson(this);
3637
}
3738

38-
/**
39-
* <pre>
40-
* 群发图文消息article.
41-
* 1. thumbMediaId (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得
42-
* 2. author 图文消息的作者
43-
* 3. title (必填) 图文消息的标题
44-
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
45-
* 5. content (必填) 图文消息页面的内容,支持HTML标签
46-
* 6. digest 图文消息的描述
47-
* 7, showCoverPic 是否显示封面,true为显示,false为不显示
48-
* </pre>
49-
*
50-
* @author chanjarster
51-
*/
52-
@Data
53-
public static class WxMpMassNewsArticle {
54-
/**
55-
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
56-
*/
57-
private String thumbMediaId;
58-
/**
59-
* 图文消息的作者.
60-
*/
61-
private String author;
62-
/**
63-
* (必填) 图文消息的标题.
64-
*/
65-
private String title;
66-
/**
67-
* 在图文消息页面点击“阅读原文”后的页面链接.
68-
*/
69-
private String contentSourceUrl;
70-
/**
71-
* (必填) 图文消息页面的内容,支持HTML标签.
72-
*/
73-
private String content;
74-
/**
75-
* 图文消息的描述.
76-
*/
77-
private String digest;
78-
/**
79-
* 是否显示封面,true为显示,false为不显示.
80-
*/
81-
private boolean showCoverPic;
82-
83-
@Override
84-
public String toString() {
85-
return WxMpGsonBuilder.create().toJson(this);
86-
}
87-
}
8839
}

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialArticleUpdate.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class WxMpMaterialArticleUpdate implements Serializable {
1111

1212
private String mediaId;
1313
private int index;
14-
private WxMpMaterialNews.WxMpMaterialNewsArticle articles;
14+
private WxMpNewsArticle articles;
1515

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

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java

+3-79
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ public class WxMpMaterialNews implements Serializable {
2020
private Date createTime;
2121
private Date updateTime;
2222

23-
private List<WxMpMaterialNewsArticle> articles = new ArrayList<>();
23+
private List<WxMpNewsArticle> articles = new ArrayList<>();
2424

25-
public List<WxMpMaterialNewsArticle> getArticles() {
25+
public List<WxMpNewsArticle> getArticles() {
2626
return this.articles;
2727
}
2828

29-
public void addArticle(WxMpMaterialNewsArticle article) {
29+
public void addArticle(WxMpNewsArticle article) {
3030
this.articles.add(article);
3131
}
3232

@@ -43,80 +43,4 @@ public String toString() {
4343
return this.toJson();
4444
}
4545

46-
/**
47-
* <pre>
48-
* 群发图文消息article.
49-
* 1. thumbMediaId (必填) 图文消息的封面图片素材id(必须是永久mediaID)
50-
* 2. author 图文消息的作者
51-
* 3. title (必填) 图文消息的标题
52-
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
53-
* 5. content (必填) 图文消息页面的内容,支持HTML标签
54-
* 6. digest 图文消息的描述
55-
* 7. showCoverPic 是否显示封面,true为显示,false为不显示
56-
* 8. url 点击图文消息跳转链接
57-
* 9. need_open_comment(新增字段) 否 Uint32 是否打开评论,0不打开,1打开
58-
* 10. only_fans_can_comment(新增字段) 否 Uint32 是否粉丝才可评论,0所有人可评论,1粉丝才可评论
59-
* </pre>
60-
*
61-
* @author chanjarster
62-
*/
63-
@Data
64-
public static class WxMpMaterialNewsArticle implements Serializable{
65-
66-
private static final long serialVersionUID = -635384661692321171L;
67-
/**
68-
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
69-
*/
70-
private String thumbMediaId;
71-
/**
72-
* 图文消息的封面url.
73-
*/
74-
private String thumbUrl;
75-
/**
76-
* 图文消息的作者.
77-
*/
78-
private String author;
79-
/**
80-
* (必填) 图文消息的标题.
81-
*/
82-
private String title;
83-
/**
84-
* 在图文消息页面点击“阅读原文”后的页面链接.
85-
*/
86-
private String contentSourceUrl;
87-
/**
88-
* (必填) 图文消息页面的内容,支持HTML标签.
89-
*/
90-
private String content;
91-
/**
92-
* 图文消息的描述.
93-
*/
94-
private String digest;
95-
/**
96-
* 是否显示封面,true为显示,false为不显示.
97-
*/
98-
private boolean showCoverPic;
99-
100-
/**
101-
* 点击图文消息跳转链接.
102-
*/
103-
private String url;
104-
105-
/**
106-
* need_open_comment
107-
* 是否打开评论,0不打开,1打开.
108-
*/
109-
private Boolean needOpenComment;
110-
111-
/**
112-
* only_fans_can_comment
113-
* 是否粉丝才可评论,0所有人可评论,1粉丝才可评论.
114-
*/
115-
private Boolean onlyFansCanComment;
116-
117-
@Override
118-
public String toString() {
119-
return WxMpGsonBuilder.create().toJson(this);
120-
}
121-
}
12246
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package me.chanjar.weixin.mp.bean.material;
2+
3+
import lombok.Data;
4+
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
5+
6+
import java.io.Serializable;
7+
8+
/**
9+
* <pre>
10+
* 图文消息article.
11+
* 1. thumbMediaId (必填) 图文消息的封面图片素材id(必须是永久mediaID)
12+
* 2. author 图文消息的作者
13+
* 3. title (必填) 图文消息的标题
14+
* 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接
15+
* 5. content (必填) 图文消息页面的内容,支持HTML标签
16+
* 6. digest 图文消息的描述
17+
* 7. showCoverPic 是否显示封面,true为显示,false为不显示
18+
* 8. url 点击图文消息跳转链接
19+
* 9. need_open_comment(新增字段) 否 Uint32 是否打开评论,0不打开,1打开
20+
* 10. only_fans_can_comment(新增字段) 否 Uint32 是否粉丝才可评论,0所有人可评论,1粉丝才可评论
21+
* </pre>
22+
*
23+
* @author chanjarster
24+
*/
25+
@Data
26+
public class WxMpNewsArticle implements Serializable {
27+
private static final long serialVersionUID = -635384661692321171L;
28+
/**
29+
* (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得.
30+
*/
31+
private String thumbMediaId;
32+
/**
33+
* 图文消息的封面url.
34+
*/
35+
private String thumbUrl;
36+
/**
37+
* 图文消息的作者.
38+
*/
39+
private String author;
40+
/**
41+
* (必填) 图文消息的标题.
42+
*/
43+
private String title;
44+
/**
45+
* 在图文消息页面点击“阅读原文”后的页面链接.
46+
*/
47+
private String contentSourceUrl;
48+
/**
49+
* (必填) 图文消息页面的内容,支持HTML标签.
50+
*/
51+
private String content;
52+
/**
53+
* 图文消息的描述.
54+
*/
55+
private String digest;
56+
/**
57+
* 是否显示封面,true为显示,false为不显示.
58+
*/
59+
private boolean showCoverPic;
60+
61+
/**
62+
* 点击图文消息跳转链接.
63+
*/
64+
private String url;
65+
66+
/**
67+
* need_open_comment
68+
* 是否打开评论,0不打开,1打开.
69+
*/
70+
private Boolean needOpenComment;
71+
72+
/**
73+
* only_fans_can_comment
74+
* 是否粉丝才可评论,0所有人可评论,1粉丝才可评论.
75+
*/
76+
private Boolean onlyFansCanComment;
77+
78+
@Override
79+
public String toString() {
80+
return WxMpGsonBuilder.create().toJson(this);
81+
}
82+
}

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate;
99
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
1010
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
11+
import me.chanjar.weixin.mp.bean.material.*;
1112
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivateTempInfoResult;
1213
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
1314
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
14-
import me.chanjar.weixin.mp.bean.material.*;
1515
import me.chanjar.weixin.mp.bean.result.*;
1616
import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;
1717
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
@@ -45,11 +45,10 @@ public class WxMpGsonBuilder {
4545
INSTANCE.registerTypeAdapter(WxDataCubeUserCumulate.class, new WxMpUserCumulateGsonAdapter());
4646
INSTANCE.registerTypeAdapter(WxMpMaterialUploadResult.class, new WxMpMaterialUploadResultAdapter());
4747
INSTANCE.registerTypeAdapter(WxMpMaterialVideoInfoResult.class, new WxMpMaterialVideoInfoResultAdapter());
48-
INSTANCE.registerTypeAdapter(WxMpMassNews.WxMpMassNewsArticle.class, new WxMpMassNewsArticleGsonAdapter());
4948
INSTANCE.registerTypeAdapter(WxMpMaterialArticleUpdate.class, new WxMpMaterialArticleUpdateGsonAdapter());
5049
INSTANCE.registerTypeAdapter(WxMpMaterialCountResult.class, new WxMpMaterialCountResultAdapter());
5150
INSTANCE.registerTypeAdapter(WxMpMaterialNews.class, new WxMpMaterialNewsGsonAdapter());
52-
INSTANCE.registerTypeAdapter(WxMpMaterialNews.WxMpMaterialNewsArticle.class, new WxMpMaterialNewsArticleGsonAdapter());
51+
INSTANCE.registerTypeAdapter(WxMpNewsArticle.class, new WxMpNewsArticleGsonAdapter());
5352
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.class, new WxMpMaterialNewsBatchGetGsonAdapter());
5453
INSTANCE.registerTypeAdapter(WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem.class, new WxMpMaterialNewsBatchGetGsonItemAdapter());
5554
INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.class, new WxMpMaterialFileBatchGetGsonAdapter());

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsArticleGsonAdapter.java

-70
This file was deleted.

Diff for: weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassNewsGsonAdapter.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.gson.*;
44
import me.chanjar.weixin.mp.bean.WxMpMassNews;
5+
import me.chanjar.weixin.mp.bean.material.WxMpNewsArticle;
56

67
import java.lang.reflect.Type;
78

@@ -12,8 +13,8 @@ public JsonElement serialize(WxMpMassNews message, Type typeOfSrc, JsonSerializa
1213
JsonObject newsJson = new JsonObject();
1314

1415
JsonArray articleJsonArray = new JsonArray();
15-
for (WxMpMassNews.WxMpMassNewsArticle article : message.getArticles()) {
16-
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpMassNews.WxMpMassNewsArticle.class).getAsJsonObject();
16+
for (WxMpNewsArticle article : message.getArticles()) {
17+
JsonObject articleJson = WxMpGsonBuilder.create().toJsonTree(article, WxMpNewsArticle.class).getAsJsonObject();
1718
articleJsonArray.add(articleJson);
1819
}
1920
newsJson.add("articles", articleJsonArray);
@@ -29,7 +30,7 @@ public WxMpMassNews deserialize(JsonElement jsonElement, Type type, JsonDeserial
2930
JsonArray articles = json.getAsJsonArray("articles");
3031
for (JsonElement article1 : articles) {
3132
JsonObject articleInfo = article1.getAsJsonObject();
32-
WxMpMassNews.WxMpMassNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpMassNews.WxMpMassNewsArticle.class);
33+
WxMpNewsArticle article = WxMpGsonBuilder.create().fromJson(articleInfo, WxMpNewsArticle.class);
3334
wxMpMassNews.addArticle(article);
3435
}
3536
}

0 commit comments

Comments
 (0)