mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	issue #10 提供客服消息Builder
This commit is contained in:
		| @ -4,6 +4,13 @@ import java.util.ArrayList; | |||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import chanjarster.weixin.api.WxConsts; | 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; | 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