From 7a92deb2c5dd987845ed8cc9f48067ebe0737ace Mon Sep 17 00:00:00 2001 From: "jy.hu" Date: Mon, 27 Oct 2014 13:18:05 +0800 Subject: [PATCH] assembly plugin --- README.md | 45 +++++++++---- pom.xml | 16 ----- .../com/foxinmy/weixin4j/WeixinProxy.java | 64 +++++++++++++++++-- .../com/foxinmy/weixin4j/http/Response.java | 7 +- .../server/WeixinServiceBootstrap.java | 3 +- .../com/foxinmy/weixin4j/util/ConfigUtil.java | 7 +- .../foxinmy/weixin4j => resources}/error.xml | 0 .../server => resources}/netty.properties | 0 .../weixin.properties} | 0 9 files changed, 99 insertions(+), 43 deletions(-) rename src/main/{java/com/foxinmy/weixin4j => resources}/error.xml (100%) rename src/main/{java/com/foxinmy/weixin4j/server => resources}/netty.properties (100%) rename src/main/{java/com/foxinmy/weixin4j/config.properties => resources/weixin.properties} (100%) diff --git a/README.md b/README.md index d8ce6d44..95ee5e4b 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,38 @@ weixin4j tencent weixin platform java sdk 微信公众平台开发工具包 http://mp.weixin.qq.com/wiki +功能列表 +------- + +* TokenApi token实现API + +* MediaApi 上传/下载媒体文件API + +* NotifyApi 客服消息API + +* MassApi 群发消息API + +* UserApi 用户管理API + +* GroupApi 分组管理API + +* MenuApi 底部菜单API + +* QrApi 二维码API + +* TmplApi 模板消息API + +* HelperApi 辅助API + +* netty服务器 & 消息分发 + + 如何使用 -------- -1.编辑config.properties文件,填入appid/appsecret信息,当然也可通过构造函数传入. +1.编辑weixin.properties文件,填入appid/appsecret信息,当然也可通过构造函数传入. -2.实例化一个WeixinProxy对象,如无特别指明appid/appsecret则使用config.properties中的值. +2.实例化一个WeixinProxy对象,如无特别指明appid/appsecret则使用weixin.properties中的值. WeixinProxy weixinProxy = new WeixinProxy(); // weixinProxy = new WeixinProxy(appid,appsecret); @@ -19,18 +45,13 @@ tencent weixin platform java sdk 微信公众平台开发工具包 http://mp.wei WeixinProxy weixinProxy = new WeixinProxy(new RedisTokenApi()); // weixinProxy = new WeixinProxy(new RedisTokenApi(appid,appsecret)); -4.mvn package. +4.mvn package,得到一个zip的压缩包,解压到启动目录(见src/main/startup.sh/APP_HOME) -注意事项 --------- -> 为了避免引入到工程造成config.properties配置文件的冲突 - -> 暂且把其放在WeixinProxy类同一目录下,package时会一起打入jar包 - -> 如果不想使用这种方式可以去掉pom.xml的resources节点最后一个子节点 - -> 并修改src/main/java/com/foxinmy/weixin4j/util/ConfigUtil类相关代码以便正确获取api的uri. +5.启动netty服务 + com.foxinmy.weixin4j.server.WeixinServiceBootstrap + sh startup.sh start + 更新LOG ------- 2014-10-27 diff --git a/pom.xml b/pom.xml index c3da8610..e2c16f26 100644 --- a/pom.xml +++ b/pom.xml @@ -47,22 +47,6 @@ - - - src/main/resources - - logback.xml - - - - src/main/java - - **/*.properties - **/error.xml - **/README.md - - - weixin4j diff --git a/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java b/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java index 72e75ba6..84104082 100644 --- a/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java +++ b/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java @@ -6,6 +6,7 @@ import java.util.List; import com.alibaba.fastjson.JSONObject; import com.foxinmy.weixin4j.api.GroupApi; +import com.foxinmy.weixin4j.api.HelperApi; import com.foxinmy.weixin4j.api.MassApi; import com.foxinmy.weixin4j.api.MediaApi; import com.foxinmy.weixin4j.api.MenuApi; @@ -49,6 +50,7 @@ public class WeixinProxy { private final MenuApi menuApi; private final QrApi qrApi; private final TmplApi tmplApi; + private final HelperApi helperApi; /** * 默认采用文件存放Token跟配置文件中的appi信息 @@ -76,6 +78,7 @@ public class WeixinProxy { this.menuApi = new MenuApi(tokenApi); this.qrApi = new QrApi(tokenApi); this.tmplApi = new TmplApi(tokenApi); + this.helperApi = new HelperApi(tokenApi); } /** @@ -91,10 +94,11 @@ public class WeixinProxy { * 媒体类型 * @return 上传到微信服务器返回的媒体标识 * @throws WeixinException - * @throws IOException + * @throws IOException * @see 上传下载说明 * @see com.foxinmy.weixin4j.type.MediaType + * @see com.foxinmy.weixin4j.api.MediaApi */ public String uploadMedia(File file, MediaType mediaType) throws WeixinException, IOException { @@ -110,6 +114,7 @@ public class WeixinProxy { * 媒体类型 * @return 上传到微信服务器返回的媒体标识 * @throws WeixinException + * @see com.foxinmy.weixin4j.api.MediaApi * @see {@link com.foxinmy.weixin4j.WeixinProxy#uploadMedia(File, MediaType)} */ public String uploadMedia(String fileName, byte[] data, MediaType mediaType) @@ -129,10 +134,11 @@ public class WeixinProxy { * 媒体类型 * @return 写入硬盘后的文件对象 * @throws WeixinException - * @throws IOException + * @throws IOException * @see 上传下载说明 * @see com.foxinmy.weixin4j.type.MediaType + * @see com.foxinmy.weixin4j.api.MediaApi */ public File downloadMedia(String mediaId, MediaType mediaType) throws WeixinException, IOException { @@ -146,6 +152,7 @@ public class WeixinProxy { * @param mediaType * @return 二进制数据包 * @throws WeixinException + * @see com.foxinmy.weixin4j.api.MediaApi * @see {@link com.foxinmy.weixin4j.WeixinProxy#downloadMedia(String, MediaType)} */ public byte[] downloadMediaData(String mediaId, MediaType mediaType) @@ -167,6 +174,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.msg.notify.VideoNotify * @see com.foxinmy.weixin4j.msg.notify.VoiceNotify * @see com.foxinmy.weixin4j.msg.notify.ArticleNotify + * @see com.foxinmy.weixin4j.api.NotifyApi */ public BaseResult sendNotify(BaseNotify notify) throws WeixinException { return notifyApi.sendNotify(notify); @@ -183,6 +191,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.msg.model.Article * @see com.foxinmy.weixin4j.msg.notify.ArticleNotify + * @see com.foxinmy.weixin4j.api.NotifyApi */ public BaseResult sendNotify(String touser, List
articles) throws WeixinException { @@ -203,6 +212,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.msg.model.Music * @see com.foxinmy.weixin4j.msg.model.Video * @see com.foxinmy.weixin4j.msg.model.Voice + * @see com.foxinmy.weixin4j.api.NotifyApi */ public BaseResult sendNotify(String touser, BaseMsg baseMsg) throws WeixinException { @@ -224,6 +234,7 @@ public class WeixinProxy { * 查询第几页 从1开始 * @throws WeixinException * @see com.foxinmy.weixin4j.model.CustomRecord + * @see com.foxinmy.weixin4j.api.NotifyApi * @see 查询客服聊天记录 */ @@ -245,6 +256,7 @@ public class WeixinProxy { * @see 上传图文消息 * @see com.foxinmy.weixin4j.model.MpArticle + * @see com.foxinmy.weixin4j.api.MassApi */ public String uploadArticle(List articles) throws WeixinException { @@ -262,8 +274,10 @@ public class WeixinProxy { * 描述 可为空 * @return 上传后的ID * @throws WeixinException + * * @see 高级群发 + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} */ public String uploadVideo(String mediaId, String title, String desc) @@ -284,6 +298,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.model.Group * @see com.foxinmy.weixin4j.type.MediaType + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} * @see {@link com.foxinmy.weixin4j.api.GroupApi#getGroupByOpenId(String)} * @see {@link com.foxinmy.weixin4j.api.GroupApi#getGroups()} @@ -304,6 +319,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.model.MpArticle * @see com.foxinmy.weixin4j.model.Group + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} * @see {@link com.foxinmy.weixin4j.api.MassApi#uploadNews(List)} * @see {@link com.foxinmy.weixin4j.WeixinProxy#massByGroup(String,MediaType,String)} @@ -326,6 +342,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.model.User * @see com.foxinmy.weixin4j.type.MediaType + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} * @see {@link com.foxinmy.weixin4j.WeixinProxy#massByOpenIds(JSONObject,String...)} */ @@ -345,6 +362,7 @@ public class WeixinProxy { * @throws WeixinException * @see com.foxinmy.weixin4j.model.MpArticle * @see com.foxinmy.weixin4j.model.User + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadNews(List)} * @see {@link com.foxinmy.weixin4j.WeixinProxy#massByOpenIds(String,MediaType,String...)} @@ -365,6 +383,7 @@ public class WeixinProxy { * @throws WeixinException * @see 删除群发 + * @see com.foxinmy.weixin4j.api.MassApi * @see {@link com.foxinmy.weixin4j.WeixinProxy#massByGroup(JSONObject, String)} * @see {@link com.foxinmy.weixin4j.WeixinProxy#massByOpenIds(JSONObject, String...) */ @@ -382,6 +401,7 @@ public class WeixinProxy { * @see 获取用户token * @see com.foxinmy.weixin4j.model.UserToken + * @see com.foxinmy.weixin4j.api.UserApi */ public UserToken getAccessToken(String code) throws WeixinException { return userApi.getAccessToken(code); @@ -398,7 +418,8 @@ public class WeixinProxy { * href="http://mp.weixin.qq.com/wiki/index.php?title=%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF#.E7.AC.AC.E5.9B.9B.E6.AD.A5.EF.BC.9A.E6.8B.89.E5.8F.96.E7.94.A8.E6.88.B7.E4.BF.A1.E6.81.AF.28.E9.9C.80scope.E4.B8.BA_snsapi_userinfo.29">拉取用户信息 * @see com.foxinmy.weixin4j.model.User * @see com.foxinmy.weixin4j.model.UserToken - * {@link com.foxinmy.weixin4j.WeixinProxy#getAccessToken(String)} + * @see com.foxinmy.weixin4j.api.UserApi + * @see {@link com.foxinmy.weixin4j.WeixinProxy#getAccessToken(String)} */ public User getUser(UserToken token) throws WeixinException { return userApi.getUser(token); @@ -418,6 +439,7 @@ public class WeixinProxy { * @see 获取用户信息 * @see com.foxinmy.weixin4j.model.User + * @see com.foxinmy.weixin4j.api.UserApi */ public User getUser(String openId) throws WeixinException { return userApi.getUser(openId); @@ -433,6 +455,7 @@ public class WeixinProxy { * @see 获取关注者列表 * @see com.foxinmy.weixin4j.model.Following + * @see com.foxinmy.weixin4j.api.UserApi */ public Following getFollowing(String nextOpenId) throws WeixinException { return userApi.getFollowing(nextOpenId); @@ -450,7 +473,8 @@ public class WeixinProxy { * @see 获取关注者列表 * @see com.foxinmy.weixin4j.model.Following - * @see com.foxinmy.weixin4j.WeixinProxy#getFollowing(String) + * @see com.foxinmy.weixin4j.api.UserApi + * @see {@link com.foxinmy.weixin4j.WeixinProxy#getFollowing(String)} */ public List getAllFollowing() throws WeixinException { return userApi.getAllFollowing(); @@ -466,6 +490,7 @@ public class WeixinProxy { * @throws WeixinException * @see 设置用户备注名 + * @see com.foxinmy.weixin4j.api.UserApi */ public BaseResult remarkUserName(String openId, String remark) throws WeixinException { @@ -483,6 +508,7 @@ public class WeixinProxy { * href="http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3#.E5.88.9B.E5.BB.BA.E5.88.86.E7.BB.84">创建分组 * @see com.foxinmy.weixin4j.model.Group * @see com.foxinmy.weixin4j.model.Group#toCreateJson() + * @see com.foxinmy.weixin4j.api.GroupApi */ public Group createGroup(String name) throws WeixinException { return groupApi.createGroup(name); @@ -496,6 +522,7 @@ public class WeixinProxy { * @see 查询所有分组 * @see com.foxinmy.weixin4j.model.Group + * @see com.foxinmy.weixin4j.api.GroupApi */ public List getGroups() throws WeixinException { return groupApi.getGroups(); @@ -511,6 +538,7 @@ public class WeixinProxy { * @see 查询用户所在分组 * @see com.foxinmy.weixin4j.model.Group + * @see com.foxinmy.weixin4j.api.GroupApi */ public int getGroupByOpenId(String openId) throws WeixinException { return groupApi.getGroupByOpenId(openId); @@ -528,6 +556,7 @@ public class WeixinProxy { * href="http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3#.E4.BF.AE.E6.94.B9.E5.88.86.E7.BB.84.E5.90.8D">修改分组名 * @see com.foxinmy.weixin4j.model.Group * @see com.foxinmy.weixin4j.model.Group#toModifyJson() + * @see com.foxinmy.weixin4j.api.GroupApi */ public BaseResult modifyGroup(int groupId, String name) throws WeixinException { @@ -545,6 +574,7 @@ public class WeixinProxy { * @see 移动分组 * @see com.foxinmy.weixin4j.model.Group + * @see com.foxinmy.weixin4j.api.GroupApi */ public BaseResult moveGroup(String openId, int groupId) throws WeixinException { @@ -560,6 +590,7 @@ public class WeixinProxy { * href="http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E5%88%9B%E5%BB%BA%E6%8E%A5%E5%8F%A3">创建自定义菜单 * @see com.foxinmy.weixin4j.model.Button * @see com.foxinmy.weixin4j.type.ButtonType + * @see com.foxinmy.weixin4j.api.MenuApi */ public BaseResult createMenu(List