| @@ -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; | |||
| } | |||
| } | |||