From cde0f75069bea04e2e614e1e7c4e221d743e2b4e Mon Sep 17 00:00:00 2001 From: "jy.hu" Date: Mon, 27 Oct 2014 21:10:38 +0800 Subject: [PATCH] =?UTF-8?q?maven=E5=A4=9A=E6=A8=A1=E5=9D=97=E5=88=86?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- README.md | 57 +---- pom.xml | 173 +++---------- .../foxinmy/weixin4j/action/BlankAction.java | 23 -- .../java/com/foxinmy/weixin4j/http/README.md | 1 - .../com/foxinmy/weixin4j/spider/MpWeixin.java | 5 - weixin4j-base/.classpath | 26 ++ weixin4j-base/.gitignore | 1 + weixin4j-base/.project | 23 ++ .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.jdt.core.prefs | 13 + .../.settings/org.eclipse.m2e.core.prefs | 4 + weixin4j-base/README.md | 4 + weixin4j-base/pom.xml | 104 ++++++++ .../weixin4j/exception/PayException.java | 32 +++ .../weixin4j/exception/WeixinException.java | 0 .../com/foxinmy/weixin4j/http/BaseResult.java | 0 .../foxinmy/weixin4j/http/HttpRequest.java | 4 +- .../com/foxinmy/weixin4j/http/Parameter.java | 0 .../foxinmy/weixin4j/http/PartParameter.java | 0 .../java/com/foxinmy/weixin4j/http/README.md | 1 + .../com/foxinmy/weixin4j/http/Response.java | 0 .../com/foxinmy/weixin4j/model/Token.java | 0 .../com/foxinmy/weixin4j/msg/BaseMessage.java | 0 .../foxinmy/weixin4j/msg}/ImageMessage.java | 3 +- .../foxinmy/weixin4j/msg}/LinkMessage.java | 3 +- .../weixin4j/msg}/LocationMessage.java | 3 +- .../java/com/foxinmy/weixin4j/msg}/README.md | 0 .../com/foxinmy/weixin4j/msg/TextMessage.java | 0 .../foxinmy/weixin4j/msg}/VideoMessage.java | 3 +- .../foxinmy/weixin4j/msg}/VoiceMessage.java | 3 +- .../weixin4j/msg/event/EventMessage.java | 0 .../msg/event/LocationEventMessage.java | 0 .../weixin4j/msg/event/MassEventMessage.java | 0 .../com/foxinmy/weixin4j/msg/event/README.md | 0 .../weixin4j/msg/event/ScanEventMessage.java | 0 .../msg/event/ScribeEventMessage.java | 0 .../event/TemplatesendjobfinishMessage.java | 0 .../msg/event/menu/MenuEventMessage.java | 0 .../event/menu/MenuLocationEventMessage.java | 0 .../msg/event/menu/MenuPhotoEventMessage.java | 0 .../msg/event/menu/MenuScanEventMessage.java | 0 .../foxinmy/weixin4j/msg/event/menu/README.md | 0 .../weixin4j}/token/AbstractTokenApi.java | 2 +- .../foxinmy/weixin4j}/token/FileTokenApi.java | 6 +- .../com/foxinmy/weixin4j}/token/README.md | 0 .../weixin4j}/token/RedisTokenApi.java | 8 +- .../com/foxinmy/weixin4j}/token/TokenApi.java | 8 +- .../com/foxinmy/weixin4j/type/ButtonType.java | 0 .../com/foxinmy/weixin4j/type/EventType.java | 0 .../com/foxinmy/weixin4j/type/MediaType.java | 0 .../foxinmy/weixin4j/type/MessageType.java | 21 +- .../java/com/foxinmy/weixin4j/type/README.md | 0 .../com/foxinmy/weixin4j/util/ClassUtil.java | 8 - .../com/foxinmy/weixin4j/util/ConfigUtil.java | 0 .../com/foxinmy/weixin4j/util/IOUtil.java | 0 .../foxinmy/weixin4j/util/MessageUtil.java | 21 +- .../com/foxinmy/weixin4j/util/RandomUtil.java | 0 .../java/com/foxinmy/weixin4j/xml/README.md | 0 .../com/foxinmy/weixin4j/xml/XStream.java | 0 weixin4j-mp/.gitignore | 28 +++ weixin4j-mp/README.md | 59 +++++ weixin4j-mp/pom.xml | 61 +++++ {src => weixin4j-mp/src}/main/assembly.xml | 0 .../java/com/foxinmy/weixin4j/mp}/README.md | 0 .../com/foxinmy/weixin4j/mp}/WeixinProxy.java | 234 +++++++++--------- .../weixin4j/mp}/action/AbstractAction.java | 9 +- .../foxinmy/weixin4j/mp}/action/Action.java | 2 +- .../weixin4j/mp/action/BlankAction.java | 21 ++ .../weixin4j/mp}/action/DebugAction.java | 9 +- .../weixin4j/mp}/action/ImageAction.java | 6 +- .../weixin4j/mp}/action/LinkAction.java | 6 +- .../weixin4j/mp}/action/LocationAction.java | 6 +- .../com/foxinmy/weixin4j/mp}/action/README.md | 0 .../weixin4j/mp}/action/SignatureAction.java | 2 +- .../weixin4j/mp}/action/TextAction.java | 7 +- .../weixin4j/mp}/action/VideoAction.java | 6 +- .../weixin4j/mp}/action/VoiceAction.java | 6 +- .../weixin4j/mp}/action/WeixinAction.java | 8 +- .../mp}/action/event/LocationAction.java | 6 +- .../mp}/action/event/MassSendAction.java | 6 +- .../mp}/action/event/MenuClickAction.java | 6 +- .../mp}/action/event/MenuLocationAction.java | 6 +- .../mp}/action/event/MenuPhotoAction.java | 6 +- .../mp}/action/event/MenuScanAction.java | 6 +- .../mp}/action/event/MenuViewAction.java | 6 +- .../weixin4j/mp}/action/event/README.md | 0 .../weixin4j/mp}/action/event/ScanAction.java | 6 +- .../mp}/action/event/SubscribeAction.java | 6 +- .../mp}/action/event/TemplateSendAction.java | 6 +- .../mp}/action/event/UnsubscribeAction.java | 6 +- .../com/foxinmy/weixin4j/mp}/api/BaseApi.java | 2 +- .../foxinmy/weixin4j/mp}/api/GroupApi.java | 22 +- .../foxinmy/weixin4j/mp}/api/HelperApi.java | 4 +- .../com/foxinmy/weixin4j/mp}/api/MassApi.java | 60 ++--- .../foxinmy/weixin4j/mp}/api/MediaApi.java | 8 +- .../com/foxinmy/weixin4j/mp}/api/MenuApi.java | 14 +- .../foxinmy/weixin4j/mp}/api/NotifyApi.java | 60 ++--- .../com/foxinmy/weixin4j/mp}/api/QrApi.java | 14 +- .../com/foxinmy/weixin4j/mp}/api/README.md | 0 .../com/foxinmy/weixin4j/mp}/api/TmplApi.java | 8 +- .../com/foxinmy/weixin4j/mp}/api/UserApi.java | 28 +-- .../weixin4j/mp}/model/AuthResult.java | 2 +- .../foxinmy/weixin4j/mp}/model/Button.java | 2 +- .../weixin4j/mp}/model/CustomRecord.java | 2 +- .../foxinmy/weixin4j/mp}/model/Following.java | 2 +- .../com/foxinmy/weixin4j/mp}/model/Group.java | 2 +- .../foxinmy/weixin4j/mp}/model/MpArticle.java | 2 +- .../weixin4j/mp}/model/QRParameter.java | 2 +- .../com/foxinmy/weixin4j/mp}/model/User.java | 6 +- .../foxinmy/weixin4j/mp}/model/UserToken.java | 7 +- .../weixin4j/mp}/msg/model/Article.java | 2 +- .../weixin4j/mp}/msg/model/BaseMsg.java | 4 +- .../foxinmy/weixin4j/mp}/msg/model/Image.java | 2 +- .../foxinmy/weixin4j/mp}/msg/model/Music.java | 2 +- .../foxinmy/weixin4j/mp}/msg/model/README.md | 0 .../foxinmy/weixin4j/mp}/msg/model/Text.java | 2 +- .../foxinmy/weixin4j/mp}/msg/model/Video.java | 2 +- .../foxinmy/weixin4j/mp}/msg/model/Voice.java | 2 +- .../mp}/msg/notify/ArticleNotify.java | 14 +- .../weixin4j/mp}/msg/notify/BaseNotify.java | 22 +- .../weixin4j/mp}/msg/notify/ImageNotify.java | 18 +- .../weixin4j/mp}/msg/notify/MusicNotify.java | 16 +- .../foxinmy/weixin4j/mp}/msg/notify/README.md | 0 .../weixin4j/mp}/msg/notify/TextNotify.java | 17 +- .../weixin4j/mp}/msg/notify/VideoNotify.java | 18 +- .../weixin4j/mp}/msg/notify/VoiceNotify.java | 18 +- .../weixin4j/mp/response/ArticleResponse.java | 23 +- .../weixin4j/mp/response/BaseResponse.java | 131 ++++++++++ .../weixin4j/mp/response/ImageResponse.java | 28 +-- .../weixin4j/mp/response/MusicResponse.java | 25 +- .../foxinmy/weixin4j/mp/response}/README.md | 0 .../mp/response}/TemplateMessage.java | 2 +- .../weixin4j/mp/response/TextResponse.java | 56 +++++ .../mp/response/TransferResponse.java | 16 +- .../weixin4j/mp/response/VideoResponse.java | 27 +- .../weixin4j/mp/response/VoiceResponse.java | 31 ++- .../com/foxinmy/weixin4j/mp}/server/README.md | 0 .../mp}/server/WeixinActionMapping.java | 6 +- .../mp}/server/WeixinServerHandler.java | 4 +- .../mp}/server/WeixinServerInitializer.java | 2 +- .../foxinmy/weixin4j/mp/spider/MpWeixin.java | 5 + .../com/foxinmy/weixin4j/mp}/spider/README.md | 0 .../weixin4j/mp}/spider/WeixinExecutor.java | 8 +- .../mp/statrup}/WeixinServiceBootstrap.java | 4 +- .../weixin4j/mp/type/ResponseType.java | 37 +++ .../src}/main/resources/error.xml | 0 .../src}/main/resources/logback.xml | 0 .../src}/main/resources/netty.properties | 0 .../src}/main/resources/weixin.properties | 0 {src => weixin4j-mp/src}/main/startup.sh | 2 +- .../foxinmy/weixin4j/mp}/test/GroupTest.java | 6 +- .../foxinmy/weixin4j/mp}/test/MediaTest.java | 4 +- .../foxinmy/weixin4j/mp}/test/MenuTest.java | 6 +- .../com/foxinmy/weixin4j/mp}/test/QRTest.java | 8 +- .../foxinmy/weixin4j/mp}/test/TokenTest.java | 6 +- .../foxinmy/weixin4j/mp}/test/UserTest.java | 6 +- .../weixin4j/mp}/test/msg/EventMsgTest.java | 2 +- .../weixin4j/mp}/test/msg/InMsgTest.java | 2 +- .../weixin4j/mp}/test/msg/MassMsgTest.java | 10 +- .../weixin4j/mp}/test/msg/MessagePush.java | 4 +- .../weixin4j/mp}/test/msg/NotifyMsgTest.java | 22 +- .../weixin4j/mp}/test/msg/OutMsgTest.java | 22 +- .../mp}/test/msg/TemplateMsgTest.java | 8 +- weixin4j-qy/.gitignore | 28 +++ weixin4j-qy/README.md | 11 + weixin4j-qy/pom.xml | 13 + .../src/main/java/com/weixin4j/qy/App.java | 13 + .../test/java/com/weixin4j/qy/AppTest.java | 38 +++ 169 files changed, 1308 insertions(+), 798 deletions(-) delete mode 100644 src/main/java/com/foxinmy/weixin4j/action/BlankAction.java delete mode 100644 src/main/java/com/foxinmy/weixin4j/http/README.md delete mode 100644 src/main/java/com/foxinmy/weixin4j/spider/MpWeixin.java create mode 100644 weixin4j-base/.classpath create mode 100644 weixin4j-base/.gitignore create mode 100644 weixin4j-base/.project create mode 100644 weixin4j-base/.settings/org.eclipse.core.resources.prefs create mode 100644 weixin4j-base/.settings/org.eclipse.jdt.core.prefs create mode 100644 weixin4j-base/.settings/org.eclipse.m2e.core.prefs create mode 100644 weixin4j-base/README.md create mode 100644 weixin4j-base/pom.xml create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/PayException.java rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/exception/WeixinException.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/http/BaseResult.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/http/HttpRequest.java (95%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/http/Parameter.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/http/PartParameter.java (100%) create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/README.md rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/http/Response.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/model/Token.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/BaseMessage.java (100%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/ImageMessage.java (91%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/LinkMessage.java (91%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/LocationMessage.java (91%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/README.md (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/TextMessage.java (100%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/VideoMessage.java (91%) rename {src/main/java/com/foxinmy/weixin4j/msg/in => weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg}/VoiceMessage.java (92%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/EventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/LocationEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/MassEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/README.md (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/ScanEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/ScribeEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/TemplatesendjobfinishMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuLocationEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuPhotoEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuScanEventMessage.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/msg/event/menu/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j/api => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/token/AbstractTokenApi.java (91%) rename {src/main/java/com/foxinmy/weixin4j/api => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/token/FileTokenApi.java (91%) rename {src/main/java/com/foxinmy/weixin4j/api => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/token/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j/api => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/token/RedisTokenApi.java (89%) rename {src/main/java/com/foxinmy/weixin4j/api => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/token/TokenApi.java (60%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/type/ButtonType.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/type/EventType.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/type/MediaType.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/type/MessageType.java (53%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/type/README.md (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/util/ClassUtil.java (81%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/util/ConfigUtil.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/util/IOUtil.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/util/MessageUtil.java (88%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/util/RandomUtil.java (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/xml/README.md (100%) rename {src => weixin4j-base/src}/main/java/com/foxinmy/weixin4j/xml/XStream.java (100%) create mode 100644 weixin4j-mp/.gitignore create mode 100644 weixin4j-mp/README.md create mode 100644 weixin4j-mp/pom.xml rename {src => weixin4j-mp/src}/main/assembly.xml (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/WeixinProxy.java (72%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/AbstractAction.java (83%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/Action.java (88%) create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/BlankAction.java rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/DebugAction.java (56%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/ImageAction.java (63%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/LinkAction.java (63%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/LocationAction.java (63%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/SignatureAction.java (94%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/TextAction.java (62%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/VideoAction.java (63%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/VoiceAction.java (63%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/WeixinAction.java (53%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/LocationAction.java (74%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MassSendAction.java (75%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MenuClickAction.java (75%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MenuLocationAction.java (76%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MenuPhotoAction.java (77%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MenuScanAction.java (76%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/MenuViewAction.java (74%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/ScanAction.java (73%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/SubscribeAction.java (74%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/TemplateSendAction.java (76%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/action/event/UnsubscribeAction.java (74%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/BaseApi.java (85%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/GroupApi.java (86%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/HelperApi.java (90%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/MassApi.java (77%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/MediaApi.java (91%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/MenuApi.java (85%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/NotifyApi.java (70%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/QrApi.java (86%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/TmplApi.java (85%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/api/UserApi.java (87%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/AuthResult.java (94%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/Button.java (94%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/CustomRecord.java (98%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/Following.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/Group.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/MpArticle.java (98%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/QRParameter.java (95%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/User.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/model/UserToken.java (79%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Article.java (97%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/BaseMsg.java (92%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Image.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Music.java (97%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Text.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Video.java (97%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/model/Voice.java (93%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/ArticleNotify.java (85%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/BaseNotify.java (71%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/ImageNotify.java (66%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/MusicNotify.java (69%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/TextNotify.java (68%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/VideoNotify.java (68%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/msg/notify/VoiceNotify.java (66%) rename src/main/java/com/foxinmy/weixin4j/msg/out/ArticleMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/ArticleResponse.java (79%) create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/BaseResponse.java rename src/main/java/com/foxinmy/weixin4j/msg/out/ImageMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/ImageResponse.java (60%) rename src/main/java/com/foxinmy/weixin4j/msg/out/MusicMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/MusicResponse.java (67%) rename {src/main/java/com/foxinmy/weixin4j/msg/out => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response}/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j/msg/out => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response}/TemplateMessage.java (98%) create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/TextResponse.java rename src/main/java/com/foxinmy/weixin4j/msg/out/TransferMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/TransferResponse.java (50%) rename src/main/java/com/foxinmy/weixin4j/msg/out/VideoMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/VideoResponse.java (64%) rename src/main/java/com/foxinmy/weixin4j/msg/out/VoiceMessage.java => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/VoiceResponse.java (58%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/server/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/server/WeixinActionMapping.java (89%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/server/WeixinServerHandler.java (97%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/server/WeixinServerInitializer.java (95%) create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/spider/MpWeixin.java rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/spider/README.md (100%) rename {src/main/java/com/foxinmy/weixin4j => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp}/spider/WeixinExecutor.java (99%) rename {src/main/java/com/foxinmy/weixin4j/server => weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/statrup}/WeixinServiceBootstrap.java (93%) create mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/type/ResponseType.java rename {src => weixin4j-mp/src}/main/resources/error.xml (100%) rename {src => weixin4j-mp/src}/main/resources/logback.xml (100%) rename {src => weixin4j-mp/src}/main/resources/netty.properties (100%) rename {src => weixin4j-mp/src}/main/resources/weixin.properties (100%) rename {src => weixin4j-mp/src}/main/startup.sh (97%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/GroupTest.java (87%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/MediaTest.java (88%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/MenuTest.java (86%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/QRTest.java (78%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/TokenTest.java (73%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/UserTest.java (85%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/EventMsgTest.java (96%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/InMsgTest.java (96%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/MassMsgTest.java (91%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/MessagePush.java (94%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/NotifyMsgTest.java (77%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/OutMsgTest.java (65%) rename {src/test/java/com/foxinmy/weixin4j => weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp}/test/msg/TemplateMsgTest.java (76%) create mode 100644 weixin4j-qy/.gitignore create mode 100644 weixin4j-qy/README.md create mode 100644 weixin4j-qy/pom.xml create mode 100644 weixin4j-qy/src/main/java/com/weixin4j/qy/App.java create mode 100644 weixin4j-qy/src/test/java/com/weixin4j/qy/AppTest.java diff --git a/.gitignore b/.gitignore index 631fb660..c880f664 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -ass - # Mobile Tools for Java (J2ME) .mtj.tmp/ @@ -27,4 +25,4 @@ target/* *.tmp Thumbs.db /target/ -.DS_Store \ No newline at end of file +.DS_Store diff --git a/README.md b/README.md index 95ee5e4b..9cc3c7e4 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,24 @@ weixin4j ======== -tencent weixin platform java sdk 微信公众平台开发工具包 http://mp.weixin.qq.com/wiki +微信开发工具包 功能列表 ------- -* TokenApi token实现API +* 公众平台API封装 -* MediaApi 上传/下载媒体文件API - -* NotifyApi 客服消息API - -* MassApi 群发消息API - -* UserApi 用户管理API - -* GroupApi 分组管理API - -* MenuApi 底部菜单API - -* QrApi 二维码API - -* TmplApi 模板消息API - -* HelperApi 辅助API - -* netty服务器 & 消息分发 - - -如何使用 --------- - -1.编辑weixin.properties文件,填入appid/appsecret信息,当然也可通过构造函数传入. - -2.实例化一个WeixinProxy对象,如无特别指明appid/appsecret则使用weixin.properties中的值. - - WeixinProxy weixinProxy = new WeixinProxy(); - // weixinProxy = new WeixinProxy(appid,appsecret); - weixinProxy.getUser(openId); - -3.针对token存储有两种方案,File存储/Redis存储,当然也可自己实现TokenApi,如无特别指明默认使用文件(xml)的方式保存token,如果环境中支持redis,建议使用RedisTokenApi. - - WeixinProxy weixinProxy = new WeixinProxy(new RedisTokenApi()); - // weixinProxy = new WeixinProxy(new RedisTokenApi(appid,appsecret)); - -4.mvn package,得到一个zip的压缩包,解压到启动目录(见src/main/startup.sh/APP_HOME) - -5.启动netty服务 - - com.foxinmy.weixin4j.server.WeixinServiceBootstrap - sh startup.sh start 更新LOG ------- 2014-10-27 - - 1).用netty构建http服务器并支持消息分发 + +1).maven多模块分离 + +2).weixin4j-mp:用netty构建http服务器并支持消息分发 接下来 ------ -maven多模块分离 +公众号支付模块引入 -微信支付模块引入 +企业号API封装 diff --git a/pom.xml b/pom.xml index e2c16f26..bf447c24 100644 --- a/pom.xml +++ b/pom.xml @@ -1,13 +1,35 @@ - - + + 4.0.0 - com.foxinmy.weixin - 0.0.1-SNAPSHOT + com.foxinmy.weixin4j weixin4j + 0.0.1-SNAPSHOT + pom weixin4j - + + weixin4j-base + weixin4j-mp + weixin4j-qy + + + 0.0.1-SNAPSHOT + 4.8.2 + 1.6.1 + 1.0.9 + 1.7.6 + 1.7.6 + 1.4.7 + 4.2.5 + 1.9 + 1.1.9 + 1.7.3 + 1.1.6 + 2.6.0 + 4.0.23.Final + 3.3.2 + UTF-8 + @@ -27,27 +49,7 @@ ${project.build.sourceEncoding} - - org.apache.maven.plugins - maven-assembly-plugin - 2.2.1 - - - src/main/assembly.xml - - - - - make-assembly - package - - single - - - - - weixin4j @@ -56,122 +58,7 @@ ${junit.version} test - - com.thoughtworks.xstream - xstream - ${xstream.version} - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - commons-logging - commons-logging - - - commons-codec - commons-codec - - - - - org.apache.httpcomponents - httpmime - ${httpclient.version} - - - commons-codec - commons-codec - ${commons.codec.version} - - - com.alibaba - fastjson - ${fastjson.version} - - - dom4j - dom4j - ${dom4j.version} - - - ch.qos.logback - logback-core - ${logback.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - logback-core - ch.qos.logback - - - - - org.slf4j - jcl-over-slf4j - ${jcl.over.version} - - - org.slf4j - slf4j-api - - - - - org.slf4j - log4j-over-slf4j - ${log4j.over.version} - - - org.slf4j - slf4j-api - - - - - org.jsoup - jsoup - ${jsoup.version} - - - jaxen - jaxen - ${jaxen.version} - - - redis.clients - jedis - ${jedis.version} - - - io.netty - netty-all - ${netty.version} - - - - 4.8.2 - 1.6.1 - 1.0.9 - 1.7.6 - 1.7.6 - 1.4.7 - 4.2.5 - 1.9 - 1.1.9 - 1.7.3 - 1.1.6 - 2.6.0 - 4.0.23.Final - UTF-8 - default @@ -183,4 +70,4 @@ - + \ No newline at end of file diff --git a/src/main/java/com/foxinmy/weixin4j/action/BlankAction.java b/src/main/java/com/foxinmy/weixin4j/action/BlankAction.java deleted file mode 100644 index fb047971..00000000 --- a/src/main/java/com/foxinmy/weixin4j/action/BlankAction.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.foxinmy.weixin4j.action; - -import com.foxinmy.weixin4j.msg.BaseMessage; - -/** - * 返回空白消息 - * - * @className BlankAction - * @author jy.hu - * @date 2014年10月2日 - * @since JDK 1.7 - * @see - */ -public abstract class BlankAction extends - AbstractAction { - - private final String BLANK = ""; - - @Override - public String execute(M message) { - return BLANK; - } -} diff --git a/src/main/java/com/foxinmy/weixin4j/http/README.md b/src/main/java/com/foxinmy/weixin4j/http/README.md deleted file mode 100644 index 4c6120af..00000000 --- a/src/main/java/com/foxinmy/weixin4j/http/README.md +++ /dev/null @@ -1 +0,0 @@ -基于HttpClient封装的针对微信公众平台API的HttpRequest \ No newline at end of file diff --git a/src/main/java/com/foxinmy/weixin4j/spider/MpWeixin.java b/src/main/java/com/foxinmy/weixin4j/spider/MpWeixin.java deleted file mode 100644 index edd5f2b4..00000000 --- a/src/main/java/com/foxinmy/weixin4j/spider/MpWeixin.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.foxinmy.weixin4j.spider; - -public final class MpWeixin { - -} diff --git a/weixin4j-base/.classpath b/weixin4j-base/.classpath new file mode 100644 index 00000000..4214a972 --- /dev/null +++ b/weixin4j-base/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/weixin4j-base/.gitignore b/weixin4j-base/.gitignore new file mode 100644 index 00000000..b83d2226 --- /dev/null +++ b/weixin4j-base/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/weixin4j-base/.project b/weixin4j-base/.project new file mode 100644 index 00000000..5adf318e --- /dev/null +++ b/weixin4j-base/.project @@ -0,0 +1,23 @@ + + + weixin4j-base + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/weixin4j-base/.settings/org.eclipse.core.resources.prefs b/weixin4j-base/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..f9fe3459 --- /dev/null +++ b/weixin4j-base/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/weixin4j-base/.settings/org.eclipse.jdt.core.prefs b/weixin4j-base/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..6b5aebc4 --- /dev/null +++ b/weixin4j-base/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/weixin4j-base/.settings/org.eclipse.m2e.core.prefs b/weixin4j-base/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..f897a7f1 --- /dev/null +++ b/weixin4j-base/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/weixin4j-base/README.md b/weixin4j-base/README.md new file mode 100644 index 00000000..f0e6446f --- /dev/null +++ b/weixin4j-base/README.md @@ -0,0 +1,4 @@ +weixin4j-base +============= + +tencent weixin base java sdk 微信开发基础工程 \ No newline at end of file diff --git a/weixin4j-base/pom.xml b/weixin4j-base/pom.xml new file mode 100644 index 00000000..597ec926 --- /dev/null +++ b/weixin4j-base/pom.xml @@ -0,0 +1,104 @@ + + + 4.0.0 + + com.foxinmy.weixin4j + weixin4j + 0.0.1-SNAPSHOT + + weixin4j-base + weixin4j-base + https://github.com/foxinmy + + + com.thoughtworks.xstream + xstream + ${xstream.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-logging + commons-logging + + + commons-codec + commons-codec + + + + + org.apache.httpcomponents + httpmime + ${httpclient.version} + + + org.apache.commons + commons-lang3 + ${commons.lang.version} + + + com.alibaba + fastjson + ${fastjson.version} + + + dom4j + dom4j + ${dom4j.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + logback-core + ch.qos.logback + + + + + org.slf4j + jcl-over-slf4j + ${jcl.over.version} + + + org.slf4j + slf4j-api + + + + + org.slf4j + log4j-over-slf4j + ${log4j.over.version} + + + org.slf4j + slf4j-api + + + + + redis.clients + jedis + ${jedis.version} + + + commons-codec + commons-codec + ${commons.codec.version} + + + diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/PayException.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/PayException.java new file mode 100644 index 00000000..1d928d1d --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/PayException.java @@ -0,0 +1,32 @@ +package com.foxinmy.weixin4j.exception; + +public class PayException extends Exception { + + private static final long serialVersionUID = 7148145661883468514L; + + private String errorCode; + private String errorMsg; + + public PayException(String errorCode, String errorMsg) { + this.errorCode = errorCode; + this.errorMsg = errorMsg; + } + + public PayException(String errorMsg) { + this.errorCode = "-1"; + this.errorMsg = errorMsg; + } + + public String getErrorCode() { + return this.errorCode; + } + + public String getErrorMsg() { + return this.errorMsg; + } + + @Override + public String getMessage() { + return String.format("%s,%s", getErrorMsg(), getErrorCode()); + } +} diff --git a/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java diff --git a/src/main/java/com/foxinmy/weixin4j/http/BaseResult.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/BaseResult.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/http/BaseResult.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/BaseResult.java diff --git a/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java similarity index 95% rename from src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java index 087eaca9..c8076612 100644 --- a/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java @@ -6,7 +6,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.codec.binary.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.Consts; import org.apache.http.Header; import org.apache.http.HttpEntity; @@ -170,7 +170,7 @@ public class HttpRequest { response.setStatusCode(status); response.setStatusText(statusLine.getReasonPhrase()); response.setStream(new ByteArrayInputStream(data)); - response.setText(StringUtils.newStringUtf8(data)); + response.setText(StringUtils.join(data)); Header contentType = httpResponse .getFirstHeader(HttpHeaders.CONTENT_TYPE); diff --git a/src/main/java/com/foxinmy/weixin4j/http/Parameter.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/Parameter.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/http/Parameter.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/Parameter.java diff --git a/src/main/java/com/foxinmy/weixin4j/http/PartParameter.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/PartParameter.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/http/PartParameter.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/PartParameter.java diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/README.md new file mode 100644 index 00000000..25446380 --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/README.md @@ -0,0 +1 @@ +基于HttpClient封装的针对微信公众平台、微信企业号API的HttpRequest \ No newline at end of file diff --git a/src/main/java/com/foxinmy/weixin4j/http/Response.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/Response.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/http/Response.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/Response.java diff --git a/src/main/java/com/foxinmy/weixin4j/model/Token.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Token.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/model/Token.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Token.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/BaseMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/BaseMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/BaseMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/BaseMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/ImageMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/ImageMessage.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/msg/in/ImageMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/ImageMessage.java index 37b5e9c7..bc53425a 100644 --- a/src/main/java/com/foxinmy/weixin4j/msg/in/ImageMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/ImageMessage.java @@ -1,6 +1,5 @@ -package com.foxinmy.weixin4j.msg.in; +package com.foxinmy.weixin4j.msg; -import com.foxinmy.weixin4j.msg.BaseMessage; import com.foxinmy.weixin4j.type.MessageType; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/LinkMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LinkMessage.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/msg/in/LinkMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LinkMessage.java index 7faca8d8..81c59f90 100644 --- a/src/main/java/com/foxinmy/weixin4j/msg/in/LinkMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LinkMessage.java @@ -1,6 +1,5 @@ -package com.foxinmy.weixin4j.msg.in; +package com.foxinmy.weixin4j.msg; -import com.foxinmy.weixin4j.msg.BaseMessage; import com.foxinmy.weixin4j.type.MessageType; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/LocationMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LocationMessage.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/msg/in/LocationMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LocationMessage.java index 70b19da2..b8786fc8 100644 --- a/src/main/java/com/foxinmy/weixin4j/msg/in/LocationMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/LocationMessage.java @@ -1,6 +1,5 @@ -package com.foxinmy.weixin4j.msg.in; +package com.foxinmy.weixin4j.msg; -import com.foxinmy.weixin4j.msg.BaseMessage; import com.foxinmy.weixin4j.type.MessageType; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/in/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/msg/TextMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/TextMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/TextMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/TextMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/VideoMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VideoMessage.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/msg/in/VideoMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VideoMessage.java index 053c1974..1bdc5dcd 100644 --- a/src/main/java/com/foxinmy/weixin4j/msg/in/VideoMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VideoMessage.java @@ -1,6 +1,5 @@ -package com.foxinmy.weixin4j.msg.in; +package com.foxinmy.weixin4j.msg; -import com.foxinmy.weixin4j.msg.BaseMessage; import com.foxinmy.weixin4j.type.MessageType; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/src/main/java/com/foxinmy/weixin4j/msg/in/VoiceMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VoiceMessage.java similarity index 92% rename from src/main/java/com/foxinmy/weixin4j/msg/in/VoiceMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VoiceMessage.java index 57fde9ec..43d5c8bf 100644 --- a/src/main/java/com/foxinmy/weixin4j/msg/in/VoiceMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/VoiceMessage.java @@ -1,6 +1,5 @@ -package com.foxinmy.weixin4j.msg.in; +package com.foxinmy.weixin4j.msg; -import com.foxinmy.weixin4j.msg.BaseMessage; import com.foxinmy.weixin4j.type.MessageType; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/EventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/EventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/EventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/EventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/LocationEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/LocationEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/LocationEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/LocationEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/MassEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/MassEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/MassEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/MassEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/ScanEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/ScanEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/ScanEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/ScanEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/ScribeEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/ScribeEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/ScribeEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/ScribeEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/TemplatesendjobfinishMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/TemplatesendjobfinishMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/TemplatesendjobfinishMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/TemplatesendjobfinishMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuLocationEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuLocationEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuLocationEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuLocationEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuPhotoEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuPhotoEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuPhotoEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuPhotoEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuScanEventMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuScanEventMessage.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuScanEventMessage.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/MenuScanEventMessage.java diff --git a/src/main/java/com/foxinmy/weixin4j/msg/event/menu/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/msg/event/menu/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/msg/event/menu/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/api/token/AbstractTokenApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenApi.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/api/token/AbstractTokenApi.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenApi.java index 45537ab4..d8f13d65 100644 --- a/src/main/java/com/foxinmy/weixin4j/api/token/AbstractTokenApi.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenApi.java @@ -1,4 +1,4 @@ -package com.foxinmy.weixin4j.api.token; +package com.foxinmy.weixin4j.token; import com.foxinmy.weixin4j.util.ConfigUtil; diff --git a/src/main/java/com/foxinmy/weixin4j/api/token/FileTokenApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenApi.java similarity index 91% rename from src/main/java/com/foxinmy/weixin4j/api/token/FileTokenApi.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenApi.java index 025c47cc..c9fe2f5f 100644 --- a/src/main/java/com/foxinmy/weixin4j/api/token/FileTokenApi.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenApi.java @@ -1,11 +1,11 @@ -package com.foxinmy.weixin4j.api.token; +package com.foxinmy.weixin4j.token; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; -import org.jsoup.helper.StringUtil; +import org.apache.commons.lang3.StringUtils; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.HttpRequest; @@ -56,7 +56,7 @@ public class FileTokenApi extends AbstractTokenApi { */ @Override public Token getToken() throws WeixinException { - if (StringUtil.isBlank(appid) || StringUtil.isBlank(appsecret)) { + if (StringUtils.isBlank(appid) || StringUtils.isBlank(appsecret)) { throw new IllegalArgumentException( "appid or appsecret not be null!"); } diff --git a/src/main/java/com/foxinmy/weixin4j/api/token/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/api/token/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/api/token/RedisTokenApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenApi.java similarity index 89% rename from src/main/java/com/foxinmy/weixin4j/api/token/RedisTokenApi.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenApi.java index 7448fd14..c1135dc6 100644 --- a/src/main/java/com/foxinmy/weixin4j/api/token/RedisTokenApi.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenApi.java @@ -1,6 +1,6 @@ -package com.foxinmy.weixin4j.api.token; +package com.foxinmy.weixin4j.token; -import org.jsoup.helper.StringUtil; +import org.apache.commons.lang3.StringUtils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @@ -53,7 +53,7 @@ public class RedisTokenApi extends AbstractTokenApi { @Override public Token getToken() throws WeixinException { - if (StringUtil.isBlank(appid) || StringUtil.isBlank(appsecret)) { + if (StringUtils.isBlank(appid) || StringUtils.isBlank(appsecret)) { throw new IllegalArgumentException( "appid or appsecret not be null!"); } @@ -63,7 +63,7 @@ public class RedisTokenApi extends AbstractTokenApi { jedis = jedisPool.getResource(); String key = String.format("token:%s", appid); String accessToken = jedis.get(key); - if (StringUtil.isBlank(accessToken)) { + if (StringUtils.isBlank(accessToken)) { String api_token_uri = String.format( ConfigUtil.getValue("api_token_uri"), appid, appsecret); token = request.get(api_token_uri).getAsObject(Token.class); diff --git a/src/main/java/com/foxinmy/weixin4j/api/token/TokenApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenApi.java similarity index 60% rename from src/main/java/com/foxinmy/weixin4j/api/token/TokenApi.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenApi.java index b2472ead..e5574745 100644 --- a/src/main/java/com/foxinmy/weixin4j/api/token/TokenApi.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenApi.java @@ -1,4 +1,4 @@ -package com.foxinmy.weixin4j.api.token; +package com.foxinmy.weixin4j.token; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; @@ -11,9 +11,9 @@ import com.foxinmy.weixin4j.model.Token; * @date 2014年9月27日 * @since JDK 1.7 * @see com.foxinmy.weixin4j.model.Token - * @see com.foxinmy.weixin4j.api.token.AbstractTokenApi - * @see com.foxinmy.weixin4j.api.token.FileTokenApi - * @see com.foxinmy.weixin4j.api.token.RedisTokenApi + * @see com.foxinmy.weixin4j.token.AbstractTokenApi + * @see com.foxinmy.weixin4j.token.FileTokenApi + * @see com.foxinmy.weixin4j.token.RedisTokenApi */ public interface TokenApi { public Token getToken() throws WeixinException; diff --git a/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/type/ButtonType.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java diff --git a/src/main/java/com/foxinmy/weixin4j/type/EventType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/EventType.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/type/EventType.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/EventType.java diff --git a/src/main/java/com/foxinmy/weixin4j/type/MediaType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/type/MediaType.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java diff --git a/src/main/java/com/foxinmy/weixin4j/type/MessageType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java similarity index 53% rename from src/main/java/com/foxinmy/weixin4j/type/MessageType.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java index 933365b6..669569a1 100644 --- a/src/main/java/com/foxinmy/weixin4j/type/MessageType.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java @@ -1,16 +1,13 @@ package com.foxinmy.weixin4j.type; import com.foxinmy.weixin4j.msg.BaseMessage; +import com.foxinmy.weixin4j.msg.ImageMessage; +import com.foxinmy.weixin4j.msg.LinkMessage; +import com.foxinmy.weixin4j.msg.LocationMessage; import com.foxinmy.weixin4j.msg.TextMessage; +import com.foxinmy.weixin4j.msg.VideoMessage; +import com.foxinmy.weixin4j.msg.VoiceMessage; import com.foxinmy.weixin4j.msg.event.EventMessage; -import com.foxinmy.weixin4j.msg.in.ImageMessage; -import com.foxinmy.weixin4j.msg.in.LinkMessage; -import com.foxinmy.weixin4j.msg.in.LocationMessage; -import com.foxinmy.weixin4j.msg.in.VideoMessage; -import com.foxinmy.weixin4j.msg.in.VoiceMessage; -import com.foxinmy.weixin4j.msg.out.ArticleMessage; -import com.foxinmy.weixin4j.msg.out.MusicMessage; -import com.foxinmy.weixin4j.msg.out.TransferMessage; /** * @@ -20,16 +17,10 @@ import com.foxinmy.weixin4j.msg.out.TransferMessage; * */ public enum MessageType { - // 接收到的消息类型 text(TextMessage.class), image(ImageMessage.class), voice( VoiceMessage.class), video(VideoMessage.class), location( LocationMessage.class), link(LinkMessage.class), event( - EventMessage.class), - // 发送的消息类型 - music(MusicMessage.class), news(ArticleMessage.class), transfer_customer_service( - TransferMessage.class), - // 微信消息认证 - signature(null); + EventMessage.class), signature(null); private Class messageClass; MessageType(Class messageClass) { diff --git a/src/main/java/com/foxinmy/weixin4j/type/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/type/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java similarity index 81% rename from src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java index 48725281..12f2a0b2 100644 --- a/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java @@ -2,13 +2,10 @@ package com.foxinmy.weixin4j.util; import java.io.File; import java.io.FilenameFilter; -import java.io.IOException; import java.net.URL; import java.util.HashSet; import java.util.Set; -import com.foxinmy.weixin4j.action.WeixinAction; - public class ClassUtil { public static Set> getClasses(Package _package) { @@ -48,9 +45,4 @@ public class ClassUtil { } return classes; } - - public static void main(String[] args) throws ClassNotFoundException, - IOException, InstantiationException, IllegalAccessException { - System.out.println(getClasses(WeixinAction.class.getPackage())); - } } diff --git a/src/main/java/com/foxinmy/weixin4j/util/ConfigUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/ConfigUtil.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/util/ConfigUtil.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/ConfigUtil.java diff --git a/src/main/java/com/foxinmy/weixin4j/util/IOUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/IOUtil.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/util/IOUtil.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/IOUtil.java diff --git a/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java similarity index 88% rename from src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java index 275287b9..f0a150f6 100644 --- a/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java @@ -4,11 +4,11 @@ import java.io.InputStream; import java.util.Arrays; import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.io.SAXReader; -import org.jsoup.helper.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,12 +42,12 @@ public class MessageUtil { */ public static String signature(String token, String echostr, String timestamp, String nonce, String signature) { - if (StringUtil.isBlank(token)) { + if (StringUtils.isBlank(token)) { log.error("signature fail : token is null!"); return null; } - if (StringUtil.isBlank(echostr) || StringUtil.isBlank(timestamp) - || StringUtil.isBlank(nonce)) { + if (StringUtils.isBlank(echostr) || StringUtils.isBlank(timestamp) + || StringUtils.isBlank(nonce)) { log.error("signature fail : invalid parameter!"); return null; } @@ -73,6 +73,7 @@ public class MessageUtil { /** * 获取对应的mapping key + * * @param xmlMsg * @return * @throws DocumentException @@ -104,11 +105,11 @@ public class MessageUtil { * @see com.foxinmy.weixin4j.type.MessageType * @see com.feican.weixin.msg.BaeMessage * @see com.foxinmy.weixin4j.msg.TextMessage - * @see com.foxinmy.weixin4j.msg.in.ImageMessage - * @see com.foxinmy.weixin4j.msg.in.VoiceMessage - * @see com.foxinmy.weixin4j.msg.in.VideoMessage - * @see com.foxinmy.weixin4j.msg.in.LocationMessage - * @see com.foxinmy.weixin4j.msg.in.LinkMessage + * @see com.foxinmy.weixin4j.msg.ImageMessage + * @see com.foxinmy.weixin4j.msg.VoiceMessage + * @see com.foxinmy.weixin4j.msg.VideoMessage + * @see com.foxinmy.weixin4j.msg.LocationMessage + * @see com.foxinmy.weixin4j.msg.LinkMessage * @see com.foxinmy.weixin4j.msg.event.ScribeEventMessage * @see com.foxinmy.weixin4j.msg.event.ScanEventMessage * @see com.foxinmy.weixin4j.msg.event.LocationEventMessage @@ -117,7 +118,7 @@ public class MessageUtil { public static BaseMessage xml2msg(String xmlMsg) throws DocumentException { Document doc = DocumentHelper.parseText(xmlMsg); String type = doc.selectSingleNode("/xml/MsgType").getStringValue(); - if (StringUtil.isBlank(type)) { + if (StringUtils.isBlank(type)) { return null; } MessageType messageType = MessageType.valueOf(type.toLowerCase()); diff --git a/src/main/java/com/foxinmy/weixin4j/util/RandomUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/RandomUtil.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/util/RandomUtil.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/RandomUtil.java diff --git a/src/main/java/com/foxinmy/weixin4j/xml/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/xml/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/xml/README.md rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/xml/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/xml/XStream.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/xml/XStream.java similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/xml/XStream.java rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/xml/XStream.java diff --git a/weixin4j-mp/.gitignore b/weixin4j-mp/.gitignore new file mode 100644 index 00000000..c880f664 --- /dev/null +++ b/weixin4j-mp/.gitignore @@ -0,0 +1,28 @@ +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# eclipse ignore +*.settings/* +/.project +/.classpath +/.tomcatplugin + +# maven ignore +target/* + +# other ignore +*.log +*.tmp +Thumbs.db +/target/ +.DS_Store diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md new file mode 100644 index 00000000..c34d89b0 --- /dev/null +++ b/weixin4j-mp/README.md @@ -0,0 +1,59 @@ +weixin4j-mp +=========== + +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.编辑weixin.properties文件,填入appid/appsecret信息,当然也可通过构造函数传入. + +2.实例化一个WeixinProxy对象,如无特别指明appid/appsecret则使用weixin.properties中的值. + + WeixinProxy weixinProxy = new WeixinProxy(); + // weixinProxy = new WeixinProxy(appid,appsecret); + weixinProxy.getUser(openId); + +3.针对token存储有两种方案,File存储/Redis存储,当然也可自己实现TokenApi,如无特别指明默认使用文件(xml)的方式保存token,如果环境中支持redis,建议使用RedisTokenApi. + + WeixinProxy weixinProxy = new WeixinProxy(new RedisTokenApi()); + // weixinProxy = new WeixinProxy(new RedisTokenApi(appid,appsecret)); + +4.mvn package,得到一个zip的压缩包,解压到启动目录(见src/main/startup.sh/APP_HOME) + +5.启动netty服务 + + com.foxinmy.weixin4j.mp.startup.WeixinServiceBootstrap + sh startup.sh start + +更新LOG +------- +2014-10-27 + + 1).用netty构建http服务器并支持消息分发 diff --git a/weixin4j-mp/pom.xml b/weixin4j-mp/pom.xml new file mode 100644 index 00000000..d04b19a4 --- /dev/null +++ b/weixin4j-mp/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + com.foxinmy.weixin4j + weixin4j + 0.0.1-SNAPSHOT + + com.foxinmy.weixin + weixin4j-mp + weixin4j-mp + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2.1 + + + src/main/assembly.xml + + + + + make-assembly + package + + single + + + + + + weixin4j-mp + + + + org.jsoup + jsoup + ${jsoup.version} + + + jaxen + jaxen + ${jaxen.version} + + + io.netty + netty-all + ${netty.version} + + + com.foxinmy.weixin4j + weixin4j-base + ${weixin4j.version} + + + diff --git a/src/main/assembly.xml b/weixin4j-mp/src/main/assembly.xml similarity index 100% rename from src/main/assembly.xml rename to weixin4j-mp/src/main/assembly.xml diff --git a/src/main/java/com/foxinmy/weixin4j/README.md b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/README.md similarity index 100% rename from src/main/java/com/foxinmy/weixin4j/README.md rename to weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/README.md diff --git a/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java similarity index 72% rename from src/main/java/com/foxinmy/weixin4j/WeixinProxy.java rename to weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index 84104082..e6fd7326 100644 --- a/src/main/java/com/foxinmy/weixin4j/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -1,35 +1,35 @@ -package com.foxinmy.weixin4j; +package com.foxinmy.weixin4j.mp; import java.io.File; import java.io.IOException; 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; -import com.foxinmy.weixin4j.api.NotifyApi; -import com.foxinmy.weixin4j.api.QrApi; -import com.foxinmy.weixin4j.api.TmplApi; -import com.foxinmy.weixin4j.api.UserApi; -import com.foxinmy.weixin4j.api.token.FileTokenApi; -import com.foxinmy.weixin4j.api.token.TokenApi; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.BaseResult; -import com.foxinmy.weixin4j.model.Button; -import com.foxinmy.weixin4j.model.CustomRecord; -import com.foxinmy.weixin4j.model.Following; -import com.foxinmy.weixin4j.model.Group; -import com.foxinmy.weixin4j.model.MpArticle; -import com.foxinmy.weixin4j.model.QRParameter; -import com.foxinmy.weixin4j.model.User; -import com.foxinmy.weixin4j.model.UserToken; -import com.foxinmy.weixin4j.msg.model.Article; -import com.foxinmy.weixin4j.msg.model.BaseMsg; -import com.foxinmy.weixin4j.msg.notify.BaseNotify; -import com.foxinmy.weixin4j.msg.out.TemplateMessage; +import com.foxinmy.weixin4j.mp.api.GroupApi; +import com.foxinmy.weixin4j.mp.api.HelperApi; +import com.foxinmy.weixin4j.mp.api.MassApi; +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.TmplApi; +import com.foxinmy.weixin4j.mp.api.UserApi; +import com.foxinmy.weixin4j.mp.model.Button; +import com.foxinmy.weixin4j.mp.model.CustomRecord; +import com.foxinmy.weixin4j.mp.model.Following; +import com.foxinmy.weixin4j.mp.model.Group; +import com.foxinmy.weixin4j.mp.model.MpArticle; +import com.foxinmy.weixin4j.mp.model.QRParameter; +import com.foxinmy.weixin4j.mp.model.User; +import com.foxinmy.weixin4j.mp.model.UserToken; +import com.foxinmy.weixin4j.mp.msg.model.Article; +import com.foxinmy.weixin4j.mp.msg.model.BaseMsg; +import com.foxinmy.weixin4j.mp.msg.notify.BaseNotify; +import com.foxinmy.weixin4j.mp.response.TemplateMessage; +import com.foxinmy.weixin4j.token.FileTokenApi; +import com.foxinmy.weixin4j.token.TokenApi; import com.foxinmy.weixin4j.type.MediaType; /** @@ -98,7 +98,7 @@ public class WeixinProxy { * @see 上传下载说明 * @see com.foxinmy.weixin4j.type.MediaType - * @see com.foxinmy.weixin4j.api.MediaApi + * @see com.foxinmy.weixin4j.mp.api.MediaApi */ public String uploadMedia(File file, MediaType mediaType) throws WeixinException, IOException { @@ -114,8 +114,8 @@ public class WeixinProxy { * 媒体类型 * @return 上传到微信服务器返回的媒体标识 * @throws WeixinException - * @see com.foxinmy.weixin4j.api.MediaApi - * @see {@link com.foxinmy.weixin4j.WeixinProxy#uploadMedia(File, MediaType)} + * @see com.foxinmy.weixin4j.mp.api.MediaApi + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#uploadMedia(File, MediaType)} */ public String uploadMedia(String fileName, byte[] data, MediaType mediaType) throws WeixinException { @@ -138,7 +138,7 @@ public class WeixinProxy { * @see 上传下载说明 * @see com.foxinmy.weixin4j.type.MediaType - * @see com.foxinmy.weixin4j.api.MediaApi + * @see com.foxinmy.weixin4j.mp.api.MediaApi */ public File downloadMedia(String mediaId, MediaType mediaType) throws WeixinException, IOException { @@ -152,8 +152,8 @@ public class WeixinProxy { * @param mediaType * @return 二进制数据包 * @throws WeixinException - * @see com.foxinmy.weixin4j.api.MediaApi - * @see {@link com.foxinmy.weixin4j.WeixinProxy#downloadMedia(String, MediaType)} + * @see com.foxinmy.weixin4j.mp.api.MediaApi + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#downloadMedia(String, MediaType)} */ public byte[] downloadMediaData(String mediaId, MediaType mediaType) throws WeixinException { @@ -168,13 +168,13 @@ public class WeixinProxy { * @throws WeixinException * @see 发送客服消息 - * @see com.foxinmy.weixin4j.msg.notify.TextNotify - * @see com.foxinmy.weixin4j.msg.notify.ImageNotify - * @see com.foxinmy.weixin4j.msg.notify.MusicNotify - * @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 + * @see com.foxinmy.weixin4j.mp.msg.notify.TextNotify + * @see com.foxinmy.weixin4j.mp.msg.notify.ImageNotify + * @see com.foxinmy.weixin4j.mp.msg.notify.MusicNotify + * @see com.foxinmy.weixin4j.mp.msg.notify.VideoNotify + * @see com.foxinmy.weixin4j.mp.msg.notify.VoiceNotify + * @see com.foxinmy.weixin4j.mp.msg.notify.ArticleNotify + * @see com.foxinmy.weixin4j.mp.api.NotifyApi */ public BaseResult sendNotify(BaseNotify notify) throws WeixinException { return notifyApi.sendNotify(notify); @@ -189,9 +189,9 @@ public class WeixinProxy { * 图文列表 * @return 发送结果 * @throws WeixinException - * @see com.foxinmy.weixin4j.msg.model.Article - * @see com.foxinmy.weixin4j.msg.notify.ArticleNotify - * @see com.foxinmy.weixin4j.api.NotifyApi + * @see com.foxinmy.weixin4j.mp.msg.model.Article + * @see com.foxinmy.weixin4j.mp.msg.notify.ArticleNotify + * @see com.foxinmy.weixin4j.mp.api.NotifyApi */ public BaseResult sendNotify(String touser, List
articles) throws WeixinException { @@ -207,12 +207,12 @@ public class WeixinProxy { * 消息类型 * @return 发送结果 * @throws WeixinException - * @see com.foxinmy.weixin4j.msg.model.Text - * @see com.foxinmy.weixin4j.msg.model.Image - * @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 + * @see com.foxinmy.weixin4j.mp.msg.model.Text + * @see com.foxinmy.weixin4j.mp.msg.model.Image + * @see com.foxinmy.weixin4j.mp.msg.model.Music + * @see com.foxinmy.weixin4j.mp.msg.model.Video + * @see com.foxinmy.weixin4j.mp.msg.model.Voice + * @see com.foxinmy.weixin4j.mp.api.NotifyApi */ public BaseResult sendNotify(String touser, BaseMsg baseMsg) throws WeixinException { @@ -233,8 +233,8 @@ public class WeixinProxy { * @param pageindex * 查询第几页 从1开始 * @throws WeixinException - * @see com.foxinmy.weixin4j.model.CustomRecord - * @see com.foxinmy.weixin4j.api.NotifyApi + * @see com.foxinmy.weixin4j.mp.model.CustomRecord + * @see com.foxinmy.weixin4j.mp.api.NotifyApi * @see 查询客服聊天记录 */ @@ -255,8 +255,8 @@ public class WeixinProxy { * href="http://mp.weixin.qq.com/wiki/index.php?title=%E9%AB%98%E7%BA%A7%E7%BE%A4%E5%8F%91%E6%8E%A5%E5%8F%A3">高级群发 * @see 上传图文消息 - * @see com.foxinmy.weixin4j.model.MpArticle - * @see com.foxinmy.weixin4j.api.MassApi + * @see com.foxinmy.weixin4j.mp.model.MpArticle + * @see com.foxinmy.weixin4j.mp.api.MassApi */ public String uploadArticle(List articles) throws WeixinException { @@ -277,8 +277,8 @@ public class WeixinProxy { * * @see 高级群发 - * @see com.foxinmy.weixin4j.api.MassApi - * @see {@link com.foxinmy.weixin4j.api.MediaApi#uploadMedia(File, MediaType)} + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File, MediaType)} */ public String uploadVideo(String mediaId, String title, String desc) throws WeixinException { @@ -296,12 +296,12 @@ public class WeixinProxy { * 分组ID * @return * @throws WeixinException - * @see com.foxinmy.weixin4j.model.Group + * @see com.foxinmy.weixin4j.mp.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()} + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File, MediaType)} + * @see {@link com.foxinmy.weixin4j.mp.api.GroupApi#getGroupByOpenId(String)} + * @see {@link com.foxinmy.weixin4j.mp.api.GroupApi#getGroups()} */ public String massByGroup(String mediaId, MediaType mediaType, String groupId) throws WeixinException { @@ -317,12 +317,12 @@ public class WeixinProxy { * 分组ID * @return 发送出去的消息ID * @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)} + * @see com.foxinmy.weixin4j.mp.model.MpArticle + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File, MediaType)} + * @see {@link com.foxinmy.weixin4j.mp.api.MassApi#uploadNews(List)} + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#massByGroup(String,MediaType,String)} */ public String massArticleByGroup(List articles, String groupId) throws WeixinException { @@ -340,11 +340,11 @@ public class WeixinProxy { * openId列表 * @return * @throws WeixinException - * @see com.foxinmy.weixin4j.model.User + * @see com.foxinmy.weixin4j.mp.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...)} + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File, MediaType)} + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#massByOpenIds(JSONObject,String...)} */ public String massByOpenIds(String mediaId, MediaType mediaType, String... openIds) throws WeixinException { @@ -360,12 +360,12 @@ public class WeixinProxy { * 目标ID列表 * @return 发送出去的消息ID * @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...)} + * @see com.foxinmy.weixin4j.mp.model.MpArticle + * @see com.foxinmy.weixin4j.mp.model.User + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File, MediaType)} + * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadNews(List)} + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#massByOpenIds(String,MediaType,String...)} */ public String massArticleByOpenIds(List articles, String... openIds) throws WeixinException { @@ -383,9 +383,9 @@ 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...) + * @see com.foxinmy.weixin4j.mp.api.MassApi + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#massByGroup(JSONObject, String)} + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#massByOpenIds(JSONObject, String...) */ public BaseResult deleteMassNews(String msgid) throws WeixinException { return massApi.deleteMassNews(msgid); @@ -400,8 +400,8 @@ public class WeixinProxy { * @throws WeixinException * @see 获取用户token - * @see com.foxinmy.weixin4j.model.UserToken - * @see com.foxinmy.weixin4j.api.UserApi + * @see com.foxinmy.weixin4j.mp.model.UserToken + * @see com.foxinmy.weixin4j.mp.api.UserApi */ public UserToken getAccessToken(String code) throws WeixinException { return userApi.getAccessToken(code); @@ -416,10 +416,10 @@ public class WeixinProxy { * @throws WeixinException * @see 拉取用户信息 - * @see com.foxinmy.weixin4j.model.User - * @see com.foxinmy.weixin4j.model.UserToken - * @see com.foxinmy.weixin4j.api.UserApi - * @see {@link com.foxinmy.weixin4j.WeixinProxy#getAccessToken(String)} + * @see com.foxinmy.weixin4j.mp.model.User + * @see com.foxinmy.weixin4j.mp.model.UserToken + * @see com.foxinmy.weixin4j.mp.api.UserApi + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#getAccessToken(String)} */ public User getUser(UserToken token) throws WeixinException { return userApi.getUser(token); @@ -438,8 +438,8 @@ public class WeixinProxy { * @throws WeixinException * @see 获取用户信息 - * @see com.foxinmy.weixin4j.model.User - * @see com.foxinmy.weixin4j.api.UserApi + * @see com.foxinmy.weixin4j.mp.model.User + * @see com.foxinmy.weixin4j.mp.api.UserApi */ public User getUser(String openId) throws WeixinException { return userApi.getUser(openId); @@ -454,8 +454,8 @@ public class WeixinProxy { * @throws WeixinException * @see 获取关注者列表 - * @see com.foxinmy.weixin4j.model.Following - * @see com.foxinmy.weixin4j.api.UserApi + * @see com.foxinmy.weixin4j.mp.model.Following + * @see com.foxinmy.weixin4j.mp.api.UserApi */ public Following getFollowing(String nextOpenId) throws WeixinException { return userApi.getFollowing(nextOpenId); @@ -472,9 +472,9 @@ public class WeixinProxy { * @throws WeixinException * @see 获取关注者列表 - * @see com.foxinmy.weixin4j.model.Following - * @see com.foxinmy.weixin4j.api.UserApi - * @see {@link com.foxinmy.weixin4j.WeixinProxy#getFollowing(String)} + * @see com.foxinmy.weixin4j.mp.model.Following + * @see com.foxinmy.weixin4j.mp.api.UserApi + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#getFollowing(String)} */ public List getAllFollowing() throws WeixinException { return userApi.getAllFollowing(); @@ -490,7 +490,7 @@ public class WeixinProxy { * @throws WeixinException * @see 设置用户备注名 - * @see com.foxinmy.weixin4j.api.UserApi + * @see com.foxinmy.weixin4j.mp.api.UserApi */ public BaseResult remarkUserName(String openId, String remark) throws WeixinException { @@ -506,9 +506,9 @@ public class WeixinProxy { * @throws WeixinException * @see 创建分组 - * @see com.foxinmy.weixin4j.model.Group - * @see com.foxinmy.weixin4j.model.Group#toCreateJson() - * @see com.foxinmy.weixin4j.api.GroupApi + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.model.Group#toCreateJson() + * @see com.foxinmy.weixin4j.mp.api.GroupApi */ public Group createGroup(String name) throws WeixinException { return groupApi.createGroup(name); @@ -521,8 +521,8 @@ public class WeixinProxy { * @throws WeixinException * @see 查询所有分组 - * @see com.foxinmy.weixin4j.model.Group - * @see com.foxinmy.weixin4j.api.GroupApi + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.api.GroupApi */ public List getGroups() throws WeixinException { return groupApi.getGroups(); @@ -537,8 +537,8 @@ public class WeixinProxy { * @throws WeixinException * @see 查询用户所在分组 - * @see com.foxinmy.weixin4j.model.Group - * @see com.foxinmy.weixin4j.api.GroupApi + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.api.GroupApi */ public int getGroupByOpenId(String openId) throws WeixinException { return groupApi.getGroupByOpenId(openId); @@ -554,9 +554,9 @@ public class WeixinProxy { * @throws WeixinException * @see 修改分组名 - * @see com.foxinmy.weixin4j.model.Group - * @see com.foxinmy.weixin4j.model.Group#toModifyJson() - * @see com.foxinmy.weixin4j.api.GroupApi + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.model.Group#toModifyJson() + * @see com.foxinmy.weixin4j.mp.api.GroupApi */ public BaseResult modifyGroup(int groupId, String name) throws WeixinException { @@ -573,8 +573,8 @@ public class WeixinProxy { * @throws WeixinException * @see 移动分组 - * @see com.foxinmy.weixin4j.model.Group - * @see com.foxinmy.weixin4j.api.GroupApi + * @see com.foxinmy.weixin4j.mp.model.Group + * @see com.foxinmy.weixin4j.mp.api.GroupApi */ public BaseResult moveGroup(String openId, int groupId) throws WeixinException { @@ -588,9 +588,9 @@ public class WeixinProxy { * @throws WeixinException * @see 创建自定义菜单 - * @see com.foxinmy.weixin4j.model.Button + * @see com.foxinmy.weixin4j.mp.model.Button * @see com.foxinmy.weixin4j.type.ButtonType - * @see com.foxinmy.weixin4j.api.MenuApi + * @see com.foxinmy.weixin4j.mp.api.MenuApi */ public BaseResult createMenu(List