From aa8e1c759d6b733a0f9e9943b31c6468dcae4685 Mon Sep 17 00:00:00 2001 From: jinyu Date: Wed, 30 Mar 2016 12:18:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=B3=A8=E9=87=8A=E4=B8=8A?= =?UTF-8?q?=E7=9A=84link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 255 +++++++---------- .../foxinmy/weixin4j/mp/api/CustomApi.java | 34 +-- .../com/foxinmy/weixin4j/mp/api/DataApi.java | 266 +++++++++--------- .../com/foxinmy/weixin4j/mp/api/GroupApi.java | 16 +- .../foxinmy/weixin4j/mp/api/HelperApi.java | 10 +- .../com/foxinmy/weixin4j/mp/api/MassApi.java | 16 +- .../foxinmy/weixin4j/mp/test/CustomTest.java | 2 +- 7 files changed, 270 insertions(+), 329 deletions(-) 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 24bbac24..4866b112 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 @@ -1,6 +1,5 @@ package com.foxinmy.weixin4j.mp; -import java.io.File; import java.io.InputStream; import java.util.Date; import java.util.List; @@ -135,8 +134,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; } @@ -188,8 +187,7 @@ 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()); } @@ -205,8 +203,7 @@ 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); } @@ -229,13 +226,14 @@ 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); } /** - * 上传媒体文件
此接口只包含图片、语音、缩略图、视频(临时)四种媒体类型的上传 + * 上传媒体文件
+ * 此接口只包含图片、语音、缩略图、视频(临时)四种媒体类型的上传 *

* 正常情况下返回{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}, * 否则抛出异常. @@ -259,8 +257,7 @@ 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); } @@ -275,13 +272,14 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.MediaApi * @see com.foxinmy.weixin4j.model.MediaDownloadResult - * @see 下载临时媒体素材 - * @see 下载永久媒体素材 + * @see + * 下载临时媒体素材 + * @see + * 下载永久媒体素材 */ - public MediaDownloadResult downloadMedia(String mediaId, boolean isMaterial) - throws WeixinException { + public MediaDownloadResult downloadMedia(String mediaId, boolean isMaterial) throws WeixinException { return mediaApi.downloadMedia(mediaId, isMaterial); } @@ -302,8 +300,7 @@ 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); } @@ -318,8 +315,7 @@ 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); } @@ -340,8 +336,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, - List articles) throws WeixinException { + public JsonResult updateMaterialArticle(String mediaId, int index, List articles) + throws WeixinException { return mediaApi.updateMaterialArticle(mediaId, index, articles); } @@ -357,8 +353,7 @@ 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); } @@ -380,13 +375,14 @@ 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 @@ -419,8 +415,7 @@ 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); } @@ -434,8 +429,7 @@ 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); } @@ -472,8 +466,7 @@ 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); } @@ -490,12 +483,11 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see 查询客服聊天记录 * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044854&token=&lang=zh_CN"> * 查询客服聊天记录 * @throws WeixinException */ - public List getCustomRecord(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); } @@ -510,16 +502,13 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see 获取客服基本信息 * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN"> * 获取客服基本信息 * @see 获取在线客服接待信息 - * @see * 获取在线客服接待信息 * @throws WeixinException */ - public List listKfAccount(boolean isOnline) - throws WeixinException { + public List listKfAccount(boolean isOnline) throws WeixinException { return customApi.listKfAccount(isOnline); } @@ -536,15 +525,12 @@ public class WeixinProxy { * @return 处理结果 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi - * @see * 客服管理接口返回码 * @see + * "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); } @@ -562,14 +548,10 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see - * 客服管理接口返回码 - * @see - * 新增客服账号 + * "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); } @@ -589,8 +571,7 @@ 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); } @@ -607,14 +588,10 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @throws WeixinException * @see - * 客服管理接口返回码 - * @see + * "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,10 +604,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @throws WeixinException * @see - * 客服管理接口返回码 - * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN"> * 删除客服账号 */ public JsonResult deleteKfAccount(String id) throws WeixinException { @@ -654,11 +628,10 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see + * "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); } @@ -675,11 +648,10 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see - * 创建会话 + * "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); } @@ -693,7 +665,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see com.foxinmy.weixin4j.mp.model.KfSession * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044820&token=&lang=zh_CN"> * 获取会话状态 */ public KfSession getKfSession(String userOpenId) throws WeixinException { @@ -710,28 +682,27 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see com.foxinmy.weixin4j.mp.model.KfSession * @see + * "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); } /** - * 获取未接入会话列表:获取当前正在等待队列中的会话列表,此接口最多返回最早进入队列的100个未接入会话。
缺陷:没有count字段 + * 获取未接入会话列表:获取当前正在等待队列中的会话列表,此接口最多返回最早进入队列的100个未接入会话。
+ * 缺陷:没有count字段 * * @return 会话列表 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi * @see com.foxinmy.weixin4j.mp.model.KfSession * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044820&token=&lang=zh_CN"> * 获取客服的会话列表 */ - public List listKfSessionWait() throws WeixinException { - return customApi.listKfSessionWait(); + public List listKfWaitSession() throws WeixinException { + return customApi.listKfWaitSession(); } /** @@ -742,13 +713,12 @@ public class WeixinProxy { * @return 媒体ID * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 上传图文素材 * @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); } @@ -776,13 +746,12 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.tuple.MpNews * @see com.foxinmy.weixin4j.mp.api.MassApi * @see com.foxinmy.weixin4j.tuple.MassTuple - * @see {@link com.foxinmy.weixin4j.mp.api.GroupApi#getGroups()} + * @see {@link #getGroups()} * @see + * "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); } @@ -796,13 +765,12 @@ public class WeixinProxy { * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中 * @see {@link #massByGroupId(Tuple,int)} * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 根据分组群发 * @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); } @@ -829,13 +797,11 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.MassApi * @see com.foxinmy.weixin4j.tuple.MassTuple * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 根据openid群发 - * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File)} - * @see {@link com.foxinmy.weixin4j.mp.api.UserApi#getUser(String)} + * @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); } @@ -848,14 +814,13 @@ public class WeixinProxy { * openId列表 * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中 * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 根据openid群发 * @see {@link #massByOpenIds(Tuple,String...)} * @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); } @@ -869,7 +834,7 @@ public class WeixinProxy { * 发送出去的消息ID * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 删除群发 * @see com.foxinmy.weixin4j.mp.api.MassApi * @see {@link #massByGroupId(Tuple, int)} @@ -881,7 +846,8 @@ public class WeixinProxy { } /** - * 预览群发消息
开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版 + * 预览群发消息
+ * 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版 * * @param toUser * 接收用户的openID @@ -894,11 +860,10 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.MassApi * @see com.foxinmy.weixin4j.tuple.MassTuple * @see + * "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); } @@ -911,7 +876,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.MassApi * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN"> * 查询群发状态 */ public String getMassNewStatus(String msgId) throws WeixinException { @@ -994,8 +959,7 @@ 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); } @@ -1033,8 +997,7 @@ 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); } @@ -1094,8 +1057,7 @@ 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); } @@ -1107,7 +1069,7 @@ public class WeixinProxy { * @return group对象 * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 创建分组 * @see com.foxinmy.weixin4j.mp.model.Group * @see com.foxinmy.weixin4j.mp.model.Group#toCreateJson() @@ -1123,7 +1085,7 @@ public class WeixinProxy { * @return 组集合 * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 查询所有分组 * @see com.foxinmy.weixin4j.mp.model.Group * @see com.foxinmy.weixin4j.mp.api.GroupApi @@ -1140,7 +1102,7 @@ public class WeixinProxy { * @return 组ID * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 查询用户所在分组 * @see com.foxinmy.weixin4j.mp.model.Group * @see com.foxinmy.weixin4j.mp.api.GroupApi @@ -1158,13 +1120,12 @@ public class WeixinProxy { * 组名称 * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 修改分组名 * @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); } @@ -1177,13 +1138,12 @@ public class WeixinProxy { * 用户对应的ID * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN4"> * 移动分组 * @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); } @@ -1196,13 +1156,12 @@ public class WeixinProxy { * 用户ID列表(不能超过50个) * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 批量移动分组 * @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); } @@ -1213,7 +1172,7 @@ public class WeixinProxy { * 组ID * @throws WeixinException * @see + * "https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837&token=&lang=zh_CN"> * 删除用户分组 * @see com.foxinmy.weixin4j.mp.model.Group * @see com.foxinmy.weixin4j.mp.api.GroupApi @@ -1302,8 +1261,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.MenuApi * @see com.foxinmy.weixin4j.model.Button */ - public String createCustomMenu(List