issue #10 提供客服消息Builder

This commit is contained in:
Daniel Qian 2014-08-28 11:30:25 +08:00
parent f6a1ec9d71
commit a6890c90de
9 changed files with 394 additions and 0 deletions

View File

@ -4,6 +4,13 @@ import java.util.ArrayList;
import java.util.List;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.custom.ImageBuilder;
import chanjarster.weixin.bean.custom.MusicBuilder;
import chanjarster.weixin.bean.custom.NewsArticleBuilder;
import chanjarster.weixin.bean.custom.NewsBuilder;
import chanjarster.weixin.bean.custom.TextBuilder;
import chanjarster.weixin.bean.custom.VideoBuilder;
import chanjarster.weixin.bean.custom.VoiceBuilder;
import chanjarster.weixin.util.json.WxGsonBuilder;
/**
@ -135,4 +142,61 @@ public class WxCustomMessage {
}
}
/**
* 获得文本消息builder
* @return
*/
public static TextBuilder TEXT() {
return new TextBuilder();
}
/**
* 获得图片消息builder
* @return
*/
public static ImageBuilder IMAGE() {
return new ImageBuilder();
}
/**
* 获得语音消息builder
* @return
*/
public static VoiceBuilder VOICE() {
return new VoiceBuilder();
}
/**
* 获得视频消息builder
* @return
*/
public static VideoBuilder VIDEO() {
return new VideoBuilder();
}
/**
* 获得音乐消息builder
* @return
*/
public static MusicBuilder MUSIC() {
return new MusicBuilder();
}
/**
* 获得图文消息builder
* @return
*/
public static NewsBuilder NEWS() {
return new NewsBuilder();
}
/**
* 获得图文消息文章builder
* @return
*/
public static NewsArticleBuilder NEWS_ARTICLE() {
return new NewsArticleBuilder();
}
}

View File

@ -0,0 +1,20 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.bean.WxCustomMessage;
public class BaseBuilder<T> {
protected String msgtype;
protected String touser;
public T touser(String touser) {
this.touser = touser;
return (T) this;
}
public WxCustomMessage build() {
WxCustomMessage m = new WxCustomMessage();
m.setMsgtype(this.msgtype);
m.setTouser(this.touser);
return m;
}
}

View File

@ -0,0 +1,31 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 获得消息builder
* <pre>
* 用法: WxCustomMessage m = WxCustomMessage.IMAGE().media_id(...).touser(...).build();
* </pre>
* @author chanjarster
*
*/
public final class ImageBuilder extends BaseBuilder<ImageBuilder> {
private String media_id;
public ImageBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_IMAGE;
}
public ImageBuilder media_id(String media_id) {
this.media_id = media_id;
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setMedia_id(this.media_id);
return m;
}
}

View File

@ -0,0 +1,64 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 音乐消息builder
* <pre>
* 用法: WxCustomMessage m = WxCustomMessage.MUSIC()
* .musicurl(...)
* .hqmusicurl(...)
* .title(...)
* .thumb_media_id(..)
* .description(..)
* .touser(...)
* .build();
* </pre>
*/
public final class MusicBuilder extends BaseBuilder<MusicBuilder> {
private String title;
private String description;
private String thumb_media_id;
private String musicurl;
private String hqmusicurl;
public MusicBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_MUSIC;
}
public MusicBuilder musicurl(String musicurl) {
this.musicurl = musicurl;
return this;
}
public MusicBuilder hqmusicurl(String hqmusicurl) {
this.hqmusicurl = hqmusicurl;
return this;
}
public MusicBuilder title(String title) {
this.title = title;
return this;
}
public MusicBuilder description(String description) {
this.description = description;
return this;
}
public MusicBuilder thumb_media_id(String thumb_media_id) {
this.thumb_media_id = thumb_media_id;
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setMusicurl(this.musicurl);
m.setHqmusicurl(this.hqmusicurl);
m.setTitle(title);
m.setDescription(description);
m.setThumb_media_id(thumb_media_id);
return m;
}
}

View File

@ -0,0 +1,52 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 图文消息文章builder
* <pre>
* 用法: WxCustomMessage.WxArticle m = WxCustomMessage.NEWS_ARTICLE()
* .url(...)
* .title(...)
* .picurl(...)
* .description(...)
* .build();
* </pre>
* @author chanjarster
*
*/
public final class NewsArticleBuilder {
private String title;
private String description;
private String url;
private String picurl;
public NewsArticleBuilder url(String url) {
this.url = url;
return this;
}
public NewsArticleBuilder title(String title) {
this.title = title;
return this;
}
public NewsArticleBuilder description(String description) {
this.description = description;
return this;
}
public NewsArticleBuilder picurl(String picurl) {
this.picurl = picurl;
return this;
}
public WxCustomMessage.WxArticle build() {
WxCustomMessage.WxArticle m = new WxCustomMessage.WxArticle();
m.setPicurl(this.picurl);
m.setTitle(title);
m.setDescription(description);
m.setUrl(this.url);
return m;
}
}

View File

@ -0,0 +1,43 @@
package chanjarster.weixin.bean.custom;
import java.util.ArrayList;
import java.util.List;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
/**
* 图文消息builder
* <pre>
* 用法:
* WxCustomMessage.WxArticle article = WxCustomMessage.NEWS_ARTICLE()
* .url(...)
* .title(...)
* .picurl(...)
* .description(...)
* .build();
* WxCustomMessage m = WxCustomMessage.NEWS().addArticle(article).touser(...).build();
* </pre>
* @author chanjarster
*
*/
public final class NewsBuilder extends BaseBuilder<NewsBuilder> {
private List<WxArticle> articles = new ArrayList<WxArticle>();
public NewsBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_NEWS;
}
public NewsBuilder addArticle(WxCustomMessage.WxArticle article) {
this.articles.add(article);
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setArticles(this.articles);
return m;
}
}

View File

@ -0,0 +1,31 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 文本消息builder
* <pre>
* 用法: WxCustomMessage m = WxCustomMessage.TEXT().content(...).touser(...).build();
* </pre>
* @author chanjarster
*
*/
public final class TextBuilder extends BaseBuilder<TextBuilder> {
private String content;
public TextBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_TEXT;
}
public TextBuilder content(String content) {
this.content = content;
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setContent(this.content);
return m;
}
}

View File

@ -0,0 +1,58 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 视频消息builder
* <pre>
* 用法: WxCustomMessage m = WxCustomMessage.VOICE()
* .media_id(...)
* .title(...)
* .thumb_media_id(..)
* .description(..)
* .touser(...)
* .build();
* </pre>
* @author chanjarster
*
*/
public final class VideoBuilder extends BaseBuilder<VideoBuilder> {
private String media_id;
private String title;
private String description;
private String thumb_media_id;
public VideoBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_VIDEO;
}
public VideoBuilder media_id(String media_id) {
this.media_id = media_id;
return this;
}
public VideoBuilder title(String title) {
this.title = title;
return this;
}
public VideoBuilder description(String description) {
this.description = description;
return this;
}
public VideoBuilder thumb_media_id(String thumb_media_id) {
this.thumb_media_id = thumb_media_id;
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setMedia_id(this.media_id);
m.setTitle(title);
m.setDescription(description);
m.setThumb_media_id(thumb_media_id);
return m;
}
}

View File

@ -0,0 +1,31 @@
package chanjarster.weixin.bean.custom;
import chanjarster.weixin.api.WxConsts;
import chanjarster.weixin.bean.WxCustomMessage;
/**
* 语音消息builder
* <pre>
* 用法: WxCustomMessage m = WxCustomMessage.VOICE().media_id(...).touser(...).build();
* </pre>
* @author chanjarster
*
*/
public final class VoiceBuilder extends BaseBuilder<VoiceBuilder> {
private String media_id;
public VoiceBuilder() {
this.msgtype = WxConsts.CUSTOM_MSG_VOICE;
}
public VoiceBuilder media_id(String media_id) {
this.media_id = media_id;
return this;
}
public WxCustomMessage build() {
WxCustomMessage m = super.build();
m.setMedia_id(this.media_id);
return m;
}
}