mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 18:46:10 +08:00 
			
		
		
		
	issue #10 提供客服消息Builder
This commit is contained in:
		| @ -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(); | ||||
|   } | ||||
|    | ||||
| } | ||||
|  | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
| @ -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; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Daniel Qian
					Daniel Qian