mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-08-24 16:18:51 +08:00
#551 文本卡片消息增加btntext字段
This commit is contained in:
parent
66b02d0536
commit
94b2803842
@ -34,6 +34,7 @@ public class WxCpMessage implements Serializable {
|
|||||||
private String hqMusicUrl;
|
private String hqMusicUrl;
|
||||||
private String safe;
|
private String safe;
|
||||||
private String url;
|
private String url;
|
||||||
|
private String btnTxt;
|
||||||
private List<NewArticle> articles = new ArrayList<>();
|
private List<NewArticle> articles = new ArrayList<>();
|
||||||
private List<MpnewsArticle> mpnewsArticles = new ArrayList<>();
|
private List<MpnewsArticle> mpnewsArticles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package me.chanjar.weixin.cp.bean;
|
|||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import me.chanjar.weixin.common.api.WxConsts;
|
import me.chanjar.weixin.common.api.WxConsts;
|
||||||
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
|
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
|
||||||
|
|
||||||
@ -11,6 +12,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@XStreamAlias("xml")
|
@XStreamAlias("xml")
|
||||||
@Data
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class WxCpXmlOutNewsMessage extends WxCpXmlOutMessage {
|
public class WxCpXmlOutNewsMessage extends WxCpXmlOutMessage {
|
||||||
private static final long serialVersionUID = -5796178637883178826L;
|
private static final long serialVersionUID = -5796178637883178826L;
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ public class TextCardBuilder extends BaseBuilder<TextCardBuilder> {
|
|||||||
private String title;
|
private String title;
|
||||||
private String description;
|
private String description;
|
||||||
private String url;
|
private String url;
|
||||||
|
private String btnTxt;
|
||||||
|
|
||||||
public TextCardBuilder() {
|
public TextCardBuilder() {
|
||||||
this.msgType = WxConsts.KefuMsgType.TEXTCARD;
|
this.msgType = WxConsts.KefuMsgType.TEXTCARD;
|
||||||
@ -36,12 +37,18 @@ public class TextCardBuilder extends BaseBuilder<TextCardBuilder> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TextCardBuilder btnTxt(String btnTxt) {
|
||||||
|
this.btnTxt = btnTxt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxCpMessage build() {
|
public WxCpMessage build() {
|
||||||
WxCpMessage m = super.build();
|
WxCpMessage m = super.build();
|
||||||
m.setTitle(this.title);
|
m.setTitle(this.title);
|
||||||
m.setDescription(this.description);
|
m.setDescription(this.description);
|
||||||
m.setUrl(this.url);
|
m.setUrl(this.url);
|
||||||
|
m.setBtnTxt(this.btnTxt);
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ public class WxCpMessageGsonAdapter implements JsonSerializer<WxCpMessage> {
|
|||||||
text.addProperty("title", message.getTitle());
|
text.addProperty("title", message.getTitle());
|
||||||
text.addProperty("description", message.getDescription());
|
text.addProperty("description", message.getDescription());
|
||||||
text.addProperty("url", message.getUrl());
|
text.addProperty("url", message.getUrl());
|
||||||
|
text.addProperty("btntxt", message.getBtnTxt());
|
||||||
messageJson.add("textcard", text);
|
messageJson.add("textcard", text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,39 +2,47 @@ package me.chanjar.weixin.cp.bean;
|
|||||||
|
|
||||||
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
|
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
|
||||||
import me.chanjar.weixin.cp.bean.article.NewArticle;
|
import me.chanjar.weixin.cp.bean.article.NewArticle;
|
||||||
import org.testng.annotations.*;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import static org.testng.Assert.*;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public class WxCpMessageTest {
|
public class WxCpMessageTest {
|
||||||
|
|
||||||
public void testTextBuild() {
|
public void testTextBuild() {
|
||||||
WxCpMessage reply = WxCpMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build();
|
WxCpMessage reply = WxCpMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build();
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"},\"safe\":\"0\"}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"},\"safe\":\"0\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testTextCardBuild() {
|
public void testTextCardBuild() {
|
||||||
WxCpMessage reply = WxCpMessage.TEXTCARD().toUser("OPENID")
|
WxCpMessage reply = WxCpMessage.TEXTCARD().toUser("OPENID")
|
||||||
.title("领奖通知")
|
.title("领奖通知")
|
||||||
.description( "<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\"highlight\">请于2016年10月10日前联系行政同事领取</div>")
|
.description("<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\"highlight\">请于2016年10月10日前联系行政同事领取</div>")
|
||||||
.url("http://www.qq.com").build();
|
.url("http://www.qq.com")
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"textcard\",\"textcard\":{\"title\":\"领奖通知\",\"description\":\"<div class=\\\"gray\\\">2016年9月26日</div> <div class=\\\"normal\\\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\\\"highlight\\\">请于2016年10月10日前联系行政同事领取</div>\",\"url\":\"http://www.qq.com\"},\"safe\":\"0\"}");
|
.btnTxt("更多")
|
||||||
|
.build();
|
||||||
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"textcard\",\"textcard\":{\"title\":\"领奖通知\",\"description\":\"<div class=\\\"gray\\\">2016年9月26日</div> <div class=\\\"normal\\\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\\\"highlight\\\">请于2016年10月10日前联系行政同事领取</div>\",\"url\":\"http://www.qq.com\",\"btntxt\":\"更多\"},\"safe\":\"0\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testImageBuild() {
|
public void testImageBuild() {
|
||||||
WxCpMessage reply = WxCpMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
WxCpMessage reply = WxCpMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"},\"safe\":\"0\"}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"},\"safe\":\"0\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testVoiceBuild() {
|
public void testVoiceBuild() {
|
||||||
WxCpMessage reply = WxCpMessage.VOICE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
WxCpMessage reply = WxCpMessage.VOICE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"},\"safe\":\"0\"}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"},\"safe\":\"0\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testVideoBuild() {
|
public void testVideoBuild() {
|
||||||
WxCpMessage reply = WxCpMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID").thumbMediaId("MEDIA_ID").description("DESCRIPTION").build();
|
WxCpMessage reply = WxCpMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID").thumbMediaId("MEDIA_ID").description("DESCRIPTION").build();
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"safe\":\"0\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"safe\":\"0\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testNewsBuild() {
|
public void testNewsBuild() {
|
||||||
@ -52,7 +60,8 @@ public class WxCpMessageTest {
|
|||||||
|
|
||||||
WxCpMessage reply = WxCpMessage.NEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build();
|
WxCpMessage reply = WxCpMessage.NEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build();
|
||||||
|
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"safe\":\"0\",\"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\"}]}}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"safe\":\"0\",\"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() {
|
public void testMpnewsBuild_with_articles() {
|
||||||
@ -78,14 +87,15 @@ public class WxCpMessageTest {
|
|||||||
|
|
||||||
WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").addArticle(article1, article2).build();
|
WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").addArticle(article1, article2).build();
|
||||||
|
|
||||||
assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\",\"safe\":\"0\",\"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\"}]}}");
|
assertThat(reply.toJson())
|
||||||
|
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\",\"safe\":\"0\",\"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() {
|
public void testMpnewsBuild_with_media_id() {
|
||||||
WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").mediaId("mmm").build();
|
WxCpMessage reply = WxCpMessage.MPNEWS().toUser("OPENID").mediaId("mmm").build();
|
||||||
|
|
||||||
assertEquals(reply.toJson(),
|
assertThat(reply.toJson())
|
||||||
"{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\",\"safe\":\"0\",\"mpnews\":{\"media_id\":\"mmm\"}}");
|
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"mpnews\",\"safe\":\"0\",\"mpnews\":{\"media_id\":\"mmm\"}}");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user