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

View File

@ -1,21 +1,22 @@
package cn.binarywang.wx.miniapp.builder; package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage; 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> * @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; private String mediaId;
public ImageBuilder() { public ImageMessageBuilder() {
this.msgType = WxMaConstants.KefuMsgType.IMAGE; this.msgType = KefuMsgType.IMAGE;
} }
public ImageBuilder mediaId(String mediaId) { public ImageMessageBuilder mediaId(String mediaId) {
this.mediaId = mediaId; this.mediaId = mediaId;
return this; return this;
} }

View File

@ -1,39 +1,40 @@
package cn.binarywang.wx.miniapp.builder; package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage; 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> * @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 title;
private String description; private String description;
private String url; private String url;
private String thumbUrl; private String thumbUrl;
public LinkBuilder() { public LinkMessageBuilder() {
this.msgType = WxMaConstants.KefuMsgType.IMAGE; this.msgType = KefuMsgType.LINK;
} }
public LinkBuilder title(String title) { public LinkMessageBuilder title(String title) {
this.title = title; this.title = title;
return this; return this;
} }
public LinkBuilder description(String description) { public LinkMessageBuilder description(String description) {
this.description = description; this.description = description;
return this; return this;
} }
public LinkBuilder url(String url) { public LinkMessageBuilder url(String url) {
this.url = url; this.url = url;
return this; return this;
} }
public LinkBuilder thumbUrl(String thumbUrl) { public LinkMessageBuilder thumbUrl(String thumbUrl) {
this.thumbUrl = thumbUrl; this.thumbUrl = thumbUrl;
return this; 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; package cn.binarywang.wx.miniapp.builder;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage; 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> * @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; private String content;
public TextBuilder() { public TextMessageBuilder() {
this.msgType = WxMaConstants.KefuMsgType.TEXT; this.msgType = KefuMsgType.TEXT;
} }
public TextBuilder content(String content) { public TextMessageBuilder content(String content) {
this.content = content; this.content = content;
return this; return this;
} }

View File

@ -37,9 +37,21 @@ public class WxMaKefuMessageTest {
.thumbUrl("thumbUrl") .thumbUrl("thumbUrl")
.build(); .build();
assertThat(reply.toJson()) assertThat(reply.toJson())
.isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"image\"," + .isEqualTo( "{\"touser\":\"OPENID\",\"msgtype\":\"link\"," +
"\"link\":{\"title\":\"title\",\"description\":\"description\",\"url\":\"url\",\"thumb_url\":\"thumbUrl\"}}"); "\"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\"}}");
}
} }