#425 小程序客服消息新增小程序卡片消息支持

This commit is contained in:
Binary Wang 2018-01-27 18:13:08 +08:00
parent a687d00d4a
commit 2eb3fc5ed1
6 changed files with 99 additions and 29 deletions

View File

@ -1,8 +1,9 @@
package cn.binarywang.wx.miniapp.bean;
import cn.binarywang.wx.miniapp.builder.ImageBuilder;
import cn.binarywang.wx.miniapp.builder.LinkBuilder;
import cn.binarywang.wx.miniapp.builder.TextBuilder;
import cn.binarywang.wx.miniapp.builder.ImageMessageBuilder;
import cn.binarywang.wx.miniapp.builder.LinkMessageBuilder;
import cn.binarywang.wx.miniapp.builder.MaPageMessageBuilder;
import cn.binarywang.wx.miniapp.builder.TextMessageBuilder;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
@ -77,22 +78,29 @@ public class WxMaKefuMessage implements Serializable {
/**
* 获得文本消息builder.
*/
public static TextBuilder newTextBuilder() {
return new TextBuilder();
public static TextMessageBuilder newTextBuilder() {
return new TextMessageBuilder();
}
/**
* 获得图片消息builder.
*/
public static ImageBuilder newImageBuilder() {
return new ImageBuilder();
public static ImageMessageBuilder newImageBuilder() {
return new ImageMessageBuilder();
}
/**
* 获得图文链接消息builder.
*/
public static LinkBuilder newLinkBuilder() {
return new LinkBuilder();
public static LinkMessageBuilder newLinkBuilder() {
return new LinkMessageBuilder();
}
/**
* 获得图文链接消息builder.
*/
public static MaPageMessageBuilder newMaPageBuilder() {
return new MaPageMessageBuilder();
}
public String toJson() {

View File

@ -1,21 +1,22 @@
package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.KefuMsgType;
/**
* 图片消息builder.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public final class ImageBuilder extends BaseBuilder<ImageBuilder> {
public final class ImageMessageBuilder extends BaseBuilder<ImageMessageBuilder> {
private String mediaId;
public ImageBuilder() {
this.msgType = WxMaConstants.KefuMsgType.IMAGE;
public ImageMessageBuilder() {
this.msgType = KefuMsgType.IMAGE;
}
public ImageBuilder mediaId(String mediaId) {
public ImageMessageBuilder mediaId(String mediaId) {
this.mediaId = mediaId;
return this;
}

View File

@ -1,39 +1,40 @@
package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.KefuMsgType;
/**
* 图文链接builder
* 图文链接消息builder
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class LinkBuilder extends BaseBuilder<LinkBuilder> {
public class LinkMessageBuilder extends BaseBuilder<LinkMessageBuilder> {
private String title;
private String description;
private String url;
private String thumbUrl;
public LinkBuilder() {
this.msgType = WxMaConstants.KefuMsgType.IMAGE;
public LinkMessageBuilder() {
this.msgType = KefuMsgType.LINK;
}
public LinkBuilder title(String title) {
public LinkMessageBuilder title(String title) {
this.title = title;
return this;
}
public LinkBuilder description(String description) {
public LinkMessageBuilder description(String description) {
this.description = description;
return this;
}
public LinkBuilder url(String url) {
public LinkMessageBuilder url(String url) {
this.url = url;
return this;
}
public LinkBuilder thumbUrl(String thumbUrl) {
public LinkMessageBuilder thumbUrl(String thumbUrl) {
this.thumbUrl = thumbUrl;
return this;
}

View File

@ -0,0 +1,47 @@
package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.KefuMsgType;
/**
* 小程序卡片消息builder
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class MaPageMessageBuilder extends BaseBuilder<MaPageMessageBuilder> {
private String title;
private String pagePath;
private String thumbMediaId;
public MaPageMessageBuilder() {
this.msgType = KefuMsgType.MA_PAGE;
}
public MaPageMessageBuilder title(String title) {
this.title = title;
return this;
}
public MaPageMessageBuilder pagePath(String pagePath) {
this.pagePath = pagePath;
return this;
}
public MaPageMessageBuilder thumbMediaId(String thumbMediaId) {
this.thumbMediaId = thumbMediaId;
return this;
}
@Override
public WxMaKefuMessage build() {
WxMaKefuMessage m = super.build();
m.setMaPage(WxMaKefuMessage.KfMaPage.builder()
.title(this.title)
.pagePath(this.pagePath)
.thumbMediaId(this.thumbMediaId)
.build()
);
return m;
}
}

View File

@ -1,21 +1,22 @@
package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.KefuMsgType;
/**
* 文本消息builder.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public final class TextBuilder extends BaseBuilder<TextBuilder> {
public final class TextMessageBuilder extends BaseBuilder<TextMessageBuilder> {
private String content;
public TextBuilder() {
this.msgType = WxMaConstants.KefuMsgType.TEXT;
public TextMessageBuilder() {
this.msgType = KefuMsgType.TEXT;
}
public TextBuilder content(String content) {
public TextMessageBuilder content(String content) {
this.content = content;
return this;
}

View File

@ -37,9 +37,21 @@ public class WxMaKefuMessageTest {
.thumbUrl("thumbUrl")
.build();
assertThat(reply.toJson())
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"image\"," +
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"link\"," +
"\"link\":{\"title\":\"title\",\"description\":\"description\",\"url\":\"url\",\"thumb_url\":\"thumbUrl\"}}");
}
public void testMaPageBuilder() {
WxMaKefuMessage reply = WxMaKefuMessage.newMaPageBuilder()
.toUser("OPENID")
.title("title")
.pagePath("pagePath")
.thumbMediaId("thumbMediaId")
.build();
assertThat(reply.toJson())
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"miniprogrampage\"," +
"\"miniprogrampage\":{\"title\":\"title\",\"pagepath\":\"pagePath\",\"thumb_media_id\":\"thumbMediaId\"}}");
}
}