From f2f117bd3e532ff1ea76211367dfcedf0aa673d3 Mon Sep 17 00:00:00 2001
From: jinyu
Date: Fri, 29 Apr 2016 21:10:37 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=87=E7=AD=BE=E7=AE=A1?=
=?UTF-8?q?=E7=90=86API?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGE.md | 6 +-
weixin4j-mp/CHANGE.md | 6 +-
.../com/foxinmy/weixin4j/mp/WeixinProxy.java | 293 +++++++++++++++---
.../com/foxinmy/weixin4j/mp/api/README.md | 4 +-
.../com/foxinmy/weixin4j/mp/api/TagApi.java | 230 ++++++++++++++
.../foxinmy/weixin4j/mp/api/weixin.properties | 19 +-
.../foxinmy/weixin4j/mp/card/CardCoupon.java | 21 ++
.../com/foxinmy/weixin4j/mp/model/Tag.java | 59 ++++
.../MessageInterceptorAdapter.java | 1 +
9 files changed, 584 insertions(+), 55 deletions(-)
create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TagApi.java
create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/card/CardCoupon.java
create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/model/Tag.java
diff --git a/CHANGE.md b/CHANGE.md
index fad06d09..6e9c04ed 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -675,4 +675,8 @@
* 2016-04-02
- + version upgrade to 1.6.8 & 1.1.7
\ No newline at end of file
+ + version upgrade to 1.6.8 & 1.1.7
+
+* 2016-04-29
+
+ + weixin4j-mp:新增标签管理API
\ No newline at end of file
diff --git a/weixin4j-mp/CHANGE.md b/weixin4j-mp/CHANGE.md
index 880f2df9..52b61127 100644
--- a/weixin4j-mp/CHANGE.md
+++ b/weixin4j-mp/CHANGE.md
@@ -208,4 +208,8 @@
* 2015-02-04
- + version upgrade to 1.6.7
\ No newline at end of file
+ + version upgrade to 1.6.7
+
+* 2016-04-29
+
+ + 新增标签管理API
\ No newline at end of file
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
index c9b6e871..c0303c30 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
@@ -23,6 +23,7 @@ import com.foxinmy.weixin4j.mp.api.MediaApi;
import com.foxinmy.weixin4j.mp.api.MenuApi;
import com.foxinmy.weixin4j.mp.api.NotifyApi;
import com.foxinmy.weixin4j.mp.api.QrApi;
+import com.foxinmy.weixin4j.mp.api.TagApi;
import com.foxinmy.weixin4j.mp.api.TmplApi;
import com.foxinmy.weixin4j.mp.api.UserApi;
import com.foxinmy.weixin4j.mp.message.NotifyMessage;
@@ -41,6 +42,7 @@ import com.foxinmy.weixin4j.mp.model.QRParameter;
import com.foxinmy.weixin4j.mp.model.QRResult;
import com.foxinmy.weixin4j.mp.model.SemQuery;
import com.foxinmy.weixin4j.mp.model.SemResult;
+import com.foxinmy.weixin4j.mp.model.Tag;
import com.foxinmy.weixin4j.mp.model.TemplateMessageInfo;
import com.foxinmy.weixin4j.mp.model.User;
import com.foxinmy.weixin4j.mp.token.WeixinTicketCreator;
@@ -112,6 +114,10 @@ public class WeixinProxy {
* 数据统计API
*/
private final DataApi dataApi;
+ /**
+ * 标签API
+ */
+ private final TagApi tagApi;
/**
* token实现
*/
@@ -135,8 +141,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.util.Weixin4jSettings
*/
public WeixinProxy(Weixin4jSettings settings) {
- this(new TokenHolder(
- new WeixinTokenCreator(settings.getWeixinAccount().getId(), settings.getWeixinAccount().getSecret()),
+ this(new TokenHolder(new WeixinTokenCreator(settings.getWeixinAccount()
+ .getId(), settings.getWeixinAccount().getSecret()),
settings.getTokenStorager0()));
this.settings = settings;
}
@@ -160,6 +166,7 @@ public class WeixinProxy {
this.tmplApi = new TmplApi(tokenHolder);
this.helperApi = new HelperApi(tokenHolder);
this.dataApi = new DataApi(tokenHolder);
+ this.tagApi = new TagApi(tokenHolder);
}
/**
@@ -188,7 +195,8 @@ public class WeixinProxy {
* @return
*/
public TokenHolder getTicketHolder(TicketType ticketType) {
- return new TokenHolder(new WeixinTicketCreator(getWeixinAccount().getId(), ticketType, this.tokenHolder),
+ return new TokenHolder(new WeixinTicketCreator(getWeixinAccount()
+ .getId(), ticketType, this.tokenHolder),
this.settings.getTokenStorager0());
}
@@ -204,7 +212,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.MediaApi
* @throws WeixinException
*/
- public String uploadImage(InputStream is, String fileName) throws WeixinException {
+ public String uploadImage(InputStream is, String fileName)
+ throws WeixinException {
return mediaApi.uploadImage(is, fileName);
}
@@ -227,14 +236,13 @@ public class WeixinProxy {
* 高级群发
* @see com.foxinmy.weixin4j.tuple.MpVideo
*/
- public MpVideo uploadVideo(InputStream is, String fileName, String title, String description)
- throws WeixinException {
+ public MpVideo uploadVideo(InputStream is, String fileName, String title,
+ String description) throws WeixinException {
return mediaApi.uploadVideo(is, fileName, title, description);
}
/**
- * 上传媒体文件
- * 此接口只包含图片、语音、缩略图、视频(临时)四种媒体类型的上传
+ * 上传媒体文件 此接口只包含图片、语音、缩略图、视频(临时)四种媒体类型的上传
*
*
* @param isMaterial
@@ -255,7 +263,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.MediaApi
* @throws WeixinException
*/
- public MediaUploadResult uploadMedia(boolean isMaterial, InputStream is, String fileName) throws WeixinException {
+ public MediaUploadResult uploadMedia(boolean isMaterial, InputStream is,
+ String fileName) throws WeixinException {
return mediaApi.uploadMedia(isMaterial, is, fileName);
}
@@ -277,7 +286,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738730&token=&lang=zh_CN">
* 下载永久媒体素材
*/
- public MediaDownloadResult downloadMedia(String mediaId, boolean isMaterial) throws WeixinException {
+ public MediaDownloadResult downloadMedia(String mediaId, boolean isMaterial)
+ throws WeixinException {
return mediaApi.downloadMedia(mediaId, isMaterial);
}
@@ -298,7 +308,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738729&token=&lang=zh_CN">
* 上传永久媒体素材
*/
- public String uploadMaterialArticle(List articles) throws WeixinException {
+ public String uploadMaterialArticle(List articles)
+ throws WeixinException {
return mediaApi.uploadMaterialArticle(articles);
}
@@ -313,7 +324,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.tuple.MpArticle
* @see com.foxinmy.weixin4j.mp.api.MediaApi
*/
- public List downloadArticle(String mediaId) throws WeixinException {
+ public List downloadArticle(String mediaId)
+ throws WeixinException {
return mediaApi.downloadArticle(mediaId);
}
@@ -334,7 +346,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738732&token=&lang=zh_CN">
* 更新永久图文素材
*/
- public JsonResult updateMaterialArticle(String mediaId, int index, MpArticle article) throws WeixinException {
+ public JsonResult updateMaterialArticle(String mediaId, int index,
+ MpArticle article) throws WeixinException {
return mediaApi.updateMaterialArticle(mediaId, index, article);
}
@@ -350,7 +363,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738731&token=&lang=zh_CN">
* 删除永久媒体素材
*/
- public JsonResult deleteMaterialMedia(String mediaId) throws WeixinException {
+ public JsonResult deleteMaterialMedia(String mediaId)
+ throws WeixinException {
return mediaApi.deleteMaterialMedia(mediaId);
}
@@ -372,14 +386,13 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.MediaApi
* @throws WeixinException
*/
- public String uploadMaterialVideo(InputStream is, String fileName, String title, String introduction)
- throws WeixinException {
+ public String uploadMaterialVideo(InputStream is, String fileName,
+ String title, String introduction) throws WeixinException {
return mediaApi.uploadMaterialVideo(is, fileName, title, introduction);
}
/**
- * 获取永久媒体素材的总数
- * .图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000
+ * 获取永久媒体素材的总数 .图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000
*
* @return 总数对象
* @throws WeixinException
@@ -412,7 +425,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738734&token=&lang=zh_CN">
* 获取素材列表
*/
- public MediaRecord listMaterialMedia(MediaType mediaType, Pageable pageable) throws WeixinException {
+ public MediaRecord listMaterialMedia(MediaType mediaType, Pageable pageable)
+ throws WeixinException {
return mediaApi.listMaterialMedia(mediaType, pageable);
}
@@ -426,7 +440,8 @@ public class WeixinProxy {
* @see {@link #listMaterialMedia(MediaType, Pageable)}
* @throws WeixinException
*/
- public List listAllMaterialMedia(MediaType mediaType) throws WeixinException {
+ public List listAllMaterialMedia(MediaType mediaType)
+ throws WeixinException {
return mediaApi.listAllMaterialMedia(mediaType);
}
@@ -463,7 +478,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.tuple.News
* @see com.foxinmy.weixin4j.mp.api.NotifyApi
*/
- public JsonResult sendNotify(NotifyMessage notify, String kfAccount) throws WeixinException {
+ public JsonResult sendNotify(NotifyMessage notify, String kfAccount)
+ throws WeixinException {
return notifyApi.sendNotify(notify, kfAccount);
}
@@ -484,7 +500,8 @@ public class WeixinProxy {
* 查询客服聊天记录
* @throws WeixinException
*/
- public List getKfChatRecord(Date startTime, Date endTime, Pageable pageable) throws WeixinException {
+ public List getKfChatRecord(Date startTime, Date endTime,
+ Pageable pageable) throws WeixinException {
return customApi.getKfChatRecord(startTime, endTime, pageable);
}
@@ -505,7 +522,8 @@ public class WeixinProxy {
* 获取在线客服接待信息
* @throws WeixinException
*/
- public List listKfAccount(boolean isOnline) throws WeixinException {
+ public List listKfAccount(boolean isOnline)
+ throws WeixinException {
return customApi.listKfAccount(isOnline);
}
@@ -526,7 +544,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN">
* 新增客服账号
*/
- public JsonResult createKfAccount(String id, String name, String pwd) throws WeixinException {
+ public JsonResult createKfAccount(String id, String name, String pwd)
+ throws WeixinException {
return customApi.createKfAccount(id, name, pwd);
}
@@ -547,7 +566,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN">
* 更新客服账号
*/
- public JsonResult updateKfAccount(String id, String name, String pwd) throws WeixinException {
+ public JsonResult updateKfAccount(String id, String name, String pwd)
+ throws WeixinException {
return customApi.updateKfAccount(id, name, pwd);
}
@@ -567,7 +587,8 @@ public class WeixinProxy {
* >邀请绑定客服帐号
* @throws WeixinException
*/
- public JsonResult inviteKfAccount(String kfAccount, String inviteAccount) throws WeixinException {
+ public JsonResult inviteKfAccount(String kfAccount, String inviteAccount)
+ throws WeixinException {
return customApi.inviteKfAccount(kfAccount, inviteAccount);
}
@@ -587,7 +608,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN">
* 上传客服头像
*/
- public JsonResult uploadKfAvatar(String accountId, InputStream is, String fileName) throws WeixinException {
+ public JsonResult uploadKfAvatar(String accountId, InputStream is,
+ String fileName) throws WeixinException {
return customApi.uploadKfAvatar(accountId, is, fileName);
}
@@ -627,7 +649,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN">
* 创建会话
*/
- public JsonResult createKfSession(String userOpenId, String kfAccount, String text) throws WeixinException {
+ public JsonResult createKfSession(String userOpenId, String kfAccount,
+ String text) throws WeixinException {
return customApi.createKfSession(userOpenId, kfAccount, text);
}
@@ -647,7 +670,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044820&token=&lang=zh_CN">
* 关闭会话
*/
- public JsonResult closeKfSession(String userOpenId, String kfAccount, String text) throws WeixinException {
+ public JsonResult closeKfSession(String userOpenId, String kfAccount,
+ String text) throws WeixinException {
return customApi.closeKfSession(userOpenId, kfAccount, text);
}
@@ -681,7 +705,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044820&token=&lang=zh_CN">
* 获取客服的会话列表
*/
- public List listKfSession(String kfAccount) throws WeixinException {
+ public List listKfSession(String kfAccount)
+ throws WeixinException {
return customApi.listKfSession(kfAccount);
}
@@ -714,7 +739,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.tuple.MpArticle
* @see com.foxinmy.weixin4j.mp.api.MassApi
*/
- public String uploadMassArticle(List articles) throws WeixinException {
+ public String uploadMassArticle(List articles)
+ throws WeixinException {
return massApi.uploadArticle(articles);
}
@@ -747,7 +773,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN">
* 根据分组群发
*/
- public String[] massByGroupId(MassTuple tuple, boolean isToAll, int groupId) throws WeixinException {
+ public String[] massByGroupId(MassTuple tuple, boolean isToAll, int groupId)
+ throws WeixinException {
return massApi.massByGroupId(tuple, isToAll, groupId);
}
@@ -766,7 +793,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.tuple.MpArticle
* @throws WeixinException
*/
- public String[] massArticleByGroupId(List articles, int groupId) throws WeixinException {
+ public String[] massArticleByGroupId(List articles, int groupId)
+ throws WeixinException {
return massApi.massArticleByGroupId(articles, groupId);
}
@@ -797,7 +825,8 @@ public class WeixinProxy {
* 根据openid群发
* @see {@link #getUser(String)}
*/
- public String[] massByOpenIds(MassTuple tuple, String... openIds) throws WeixinException {
+ public String[] massByOpenIds(MassTuple tuple, String... openIds)
+ throws WeixinException {
return massApi.massByOpenIds(tuple, openIds);
}
@@ -816,7 +845,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.tuple.MpArticle
* @throws WeixinException
*/
- public String[] massArticleByOpenIds(List articles, String... openIds) throws WeixinException {
+ public String[] massArticleByOpenIds(List articles,
+ String... openIds) throws WeixinException {
return massApi.massArticleByOpenIds(articles, openIds);
}
@@ -842,8 +872,7 @@ public class WeixinProxy {
}
/**
- * 预览群发消息
- * 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版
+ * 预览群发消息 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版
*
* @param toUser
* 接收用户的openID
@@ -859,7 +888,8 @@ public class WeixinProxy {
* "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN">
* 预览群发消息
*/
- public JsonResult previewMassNews(String toUser, String toWxName, MassTuple tuple) throws WeixinException {
+ public JsonResult previewMassNews(String toUser, String toWxName,
+ MassTuple tuple) throws WeixinException {
return massApi.previewMassNews(toUser, toWxName, tuple);
}
@@ -955,7 +985,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.UserApi
* @throws WeixinException
*/
- public List getUsers(Lang lang, String... openIds) throws WeixinException {
+ public List getUsers(Lang lang, String... openIds)
+ throws WeixinException {
return userApi.getUsers(lang, openIds);
}
@@ -993,7 +1024,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.UserApi
* @see com.foxinmy.weixin4j.mp.model.Following
*/
- public Following getFollowingOpenIds(String nextOpenId) throws WeixinException {
+ public Following getFollowingOpenIds(String nextOpenId)
+ throws WeixinException {
return userApi.getFollowingOpenIds(nextOpenId);
}
@@ -1053,7 +1085,8 @@ public class WeixinProxy {
* 设置用户备注名
* @see com.foxinmy.weixin4j.mp.api.UserApi
*/
- public JsonResult remarkUserName(String openId, String remark) throws WeixinException {
+ public JsonResult remarkUserName(String openId, String remark)
+ throws WeixinException {
return userApi.remarkUserName(openId, remark);
}
@@ -1121,7 +1154,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.model.Group
* @see com.foxinmy.weixin4j.mp.api.GroupApi
*/
- public JsonResult modifyGroup(int groupId, String name) throws WeixinException {
+ public JsonResult modifyGroup(int groupId, String name)
+ throws WeixinException {
return groupApi.modifyGroup(groupId, name);
}
@@ -1139,7 +1173,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.model.Group
* @see com.foxinmy.weixin4j.mp.api.GroupApi
*/
- public JsonResult moveGroup(int groupId, String openId) throws WeixinException {
+ public JsonResult moveGroup(int groupId, String openId)
+ throws WeixinException {
return groupApi.moveGroup(groupId, openId);
}
@@ -1157,7 +1192,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.model.Group
* @see com.foxinmy.weixin4j.mp.api.GroupApi
*/
- public JsonResult moveGroup(int groupId, String... openIds) throws WeixinException {
+ public JsonResult moveGroup(int groupId, String... openIds)
+ throws WeixinException {
return groupApi.moveGroup(groupId, openIds);
}
@@ -1257,7 +1293,8 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.mp.api.MenuApi
* @see com.foxinmy.weixin4j.model.Button
*/
- public String createCustomMenu(List