Browse Source

issue #10 提供客服消息Builder

master
Daniel Qian 10 years ago
parent
commit
a6890c90de
9 changed files with 394 additions and 0 deletions
  1. +64
    -0
      src/main/java/chanjarster/weixin/bean/WxCustomMessage.java
  2. +20
    -0
      src/main/java/chanjarster/weixin/bean/custom/BaseBuilder.java
  3. +31
    -0
      src/main/java/chanjarster/weixin/bean/custom/ImageBuilder.java
  4. +64
    -0
      src/main/java/chanjarster/weixin/bean/custom/MusicBuilder.java
  5. +52
    -0
      src/main/java/chanjarster/weixin/bean/custom/NewsArticleBuilder.java
  6. +43
    -0
      src/main/java/chanjarster/weixin/bean/custom/NewsBuilder.java
  7. +31
    -0
      src/main/java/chanjarster/weixin/bean/custom/TextBuilder.java
  8. +58
    -0
      src/main/java/chanjarster/weixin/bean/custom/VideoBuilder.java
  9. +31
    -0
      src/main/java/chanjarster/weixin/bean/custom/VoiceBuilder.java

+ 64
- 0
src/main/java/chanjarster/weixin/bean/WxCustomMessage.java 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();
}
}

+ 20
- 0
src/main/java/chanjarster/weixin/bean/custom/BaseBuilder.java 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;
}
}

+ 31
- 0
src/main/java/chanjarster/weixin/bean/custom/ImageBuilder.java 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;
}
}

+ 64
- 0
src/main/java/chanjarster/weixin/bean/custom/MusicBuilder.java 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;
}
}

+ 52
- 0
src/main/java/chanjarster/weixin/bean/custom/NewsArticleBuilder.java 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;
}
}

+ 43
- 0
src/main/java/chanjarster/weixin/bean/custom/NewsBuilder.java 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;
}
}

+ 31
- 0
src/main/java/chanjarster/weixin/bean/custom/TextBuilder.java 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;
}
}

+ 58
- 0
src/main/java/chanjarster/weixin/bean/custom/VideoBuilder.java 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;
}
}

+ 31
- 0
src/main/java/chanjarster/weixin/bean/custom/VoiceBuilder.java 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;
}
}

Loading…
Cancel
Save