From 2d5d65ff0bd9fd941b6841f4f9ac148b615f6064 Mon Sep 17 00:00:00 2001 From: "jy.hu" Date: Tue, 28 Oct 2014 16:45:47 +0800 Subject: [PATCH] ActionMapping->abstract --- README.md | 5 +++ .../foxinmy/weixin4j/util/MessageUtil.java | 18 -------- weixin4j-mp/README.md | 4 ++ .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 45 +++++++++++++++++++ .../weixin4j/mp/action/ImageAction.java | 1 + .../weixin4j/mp/action/LinkAction.java | 1 + .../weixin4j/mp/action/LocationAction.java | 1 + .../weixin4j/mp/action/SignatureAction.java | 1 + .../weixin4j/mp/action/TextAction.java | 1 + .../weixin4j/mp/action/VideoAction.java | 1 + .../weixin4j/mp/action/VoiceAction.java | 1 + .../mp/action/event/LocationAction.java | 2 +- .../mp/action/event/MassSendAction.java | 2 +- .../mp/action/event/MenuClickAction.java | 2 +- .../mp/action/event/MenuLocationAction.java | 2 +- .../mp/action/event/MenuPhotoAction.java | 2 +- .../mp/action/event/MenuScanAction.java | 2 +- .../mp/action/event/MenuViewAction.java | 2 +- .../weixin4j/mp/action/event/ScanAction.java | 2 +- .../mp/action/event/SubscribeAction.java | 2 +- .../mp/action/event/TemplateSendAction.java | 2 +- .../mp/action/event/UnsubscribeAction.java | 2 +- .../mp/{action => mapping}/Action.java | 2 +- .../AnnotationActionMapping.java} | 23 +++++++--- .../weixin4j/mp/response/BaseResponse.java | 2 +- .../mp/server/WeixinServerHandler.java | 11 +++-- .../mp/server/WeixinServerInitializer.java | 9 ++-- .../src/main/resources/weixin.properties | 4 ++ 28 files changed, 106 insertions(+), 46 deletions(-) rename weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/{action => mapping}/Action.java (88%) rename weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/{server/WeixinActionMapping.java => mapping/AnnotationActionMapping.java} (68%) diff --git a/README.md b/README.md index cfa75ee1..203ed8ed 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ weixin4j 2).weixin4j-mp:用netty构建http服务器并支持消息分发 +* 2014-10-28 + + 1).weixin4j-mp:调整ActionMapping抽象化 + + 接下来 ------ 公众号支付模块引入 diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java index f0a150f6..f55b7fc4 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java @@ -71,24 +71,6 @@ public class MessageUtil { } } - /** - * 获取对应的mapping key - * - * @param xmlMsg - * @return - * @throws DocumentException - * @see com.foxinmy.weixin4j.server.WeixinActionMapping - */ - public static String getMappingKey(String xmlMsg) throws DocumentException { - Document doc = DocumentHelper.parseText(xmlMsg); - String msgType = doc.selectSingleNode("/xml/MsgType").getStringValue(); - if (msgType.equalsIgnoreCase(MessageType.event.name())) { - msgType += "_" - + doc.selectSingleNode("/xml/Event").getStringValue(); - } - return msgType; - } - /** * xml消息转换为消息对象 * diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md index 868ccb72..2f23022a 100644 --- a/weixin4j-mp/README.md +++ b/weixin4j-mp/README.md @@ -57,3 +57,7 @@ tencent weixin platform java sdk 微信公众平台开发工具包 http://mp.wei * 2014-10-27 1).用netty构建http服务器并支持消息分发 + +* 2014-10-28 + + 1).调整ActionMapping抽象化 \ No newline at end of file diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index e6fd7326..91de198e 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -7,12 +7,14 @@ import java.util.List; import com.alibaba.fastjson.JSONObject; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.BaseResult; +import com.foxinmy.weixin4j.model.WeixinAccountV2; 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.PayApi; import com.foxinmy.weixin4j.mp.api.QrApi; import com.foxinmy.weixin4j.mp.api.TmplApi; import com.foxinmy.weixin4j.mp.api.UserApi; @@ -27,6 +29,7 @@ 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.payment.Order; import com.foxinmy.weixin4j.mp.response.TemplateMessage; import com.foxinmy.weixin4j.token.FileTokenApi; import com.foxinmy.weixin4j.token.TokenApi; @@ -51,6 +54,7 @@ public class WeixinProxy { private final QrApi qrApi; private final TmplApi tmplApi; private final HelperApi helperApi; + private final PayApi payApi; /** * 默认采用文件存放Token跟配置文件中的appi信息 @@ -79,6 +83,7 @@ public class WeixinProxy { this.qrApi = new QrApi(tokenApi); this.tmplApi = new TmplApi(tokenApi); this.helperApi = new HelperApi(tokenApi); + this.payApi = new PayApi(tokenApi); } /** @@ -704,4 +709,44 @@ public class WeixinProxy { public String getShorturl(String url) throws WeixinException { return helperApi.getShorturl(url); } + + /** + * 发货通知 + * + * @param weixinConfig + * V2版本 + * @param transid + * 交易单号 + * @param orderNo + * 订单号 + * @param status + * 成功|失败 + * @param statusMsg + * status为失败时携带的信息 + * @return + * @throws WeixinException + * @see com.foxinmy.weixin4j.mp.api.PayApi + */ + public BaseResult deliverNotify(WeixinAccountV2 weixinConfig, + String transid, String orderNo, boolean status, String statusMsg) + throws WeixinException { + return payApi.deliverNotify(weixinConfig, transid, orderNo, status, + statusMsg); + } + + /** + * 订单查询 + * + * @param weixinConfig + * V2版本 + * @param orderNo + * 订单号 + * @return + * @throws WeixinException + * @see com.foxinmy.weixin4j.mp.api.PayApi + */ + public Order orderQuery(WeixinAccountV2 weixinConfig, String orderNo) + throws WeixinException { + return payApi.orderQuery(weixinConfig, orderNo); + } } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/ImageAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/ImageAction.java index 95112986..632d7073 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/ImageAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/ImageAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.ImageMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LinkAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LinkAction.java index e66a2907..0ac9cf62 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LinkAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LinkAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.LinkMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LocationAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LocationAction.java index 8cb5c135..481f4cf9 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LocationAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/LocationAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.LocationMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/SignatureAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/SignatureAction.java index 2fd85dc6..1fabda68 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/SignatureAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/SignatureAction.java @@ -7,6 +7,7 @@ import java.util.Map; import org.dom4j.DocumentException; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.type.MessageType; import com.foxinmy.weixin4j.util.ConfigUtil; import com.foxinmy.weixin4j.util.MessageUtil; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/TextAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/TextAction.java index b680a068..221e0fe1 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/TextAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/TextAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.mp.response.TextResponse; import com.foxinmy.weixin4j.msg.TextMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VideoAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VideoAction.java index bdf052d6..bdb015b5 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VideoAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VideoAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.VideoMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VoiceAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VoiceAction.java index e3f21ca9..f0d08535 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VoiceAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/VoiceAction.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.mp.action; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.VoiceMessage; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/LocationAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/LocationAction.java index 14f5bf3c..f8b4114c 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/LocationAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/LocationAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.LocationEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MassSendAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MassSendAction.java index b588c891..13795a85 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MassSendAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MassSendAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.MassEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuClickAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuClickAction.java index ceb73927..a2425bb3 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuClickAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuClickAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuLocationAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuLocationAction.java index 000a0de7..c1cb2253 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuLocationAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuLocationAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.menu.MenuLocationEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuPhotoAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuPhotoAction.java index 51058687..c3a3299f 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuPhotoAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuPhotoAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.menu.MenuPhotoEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuScanAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuScanAction.java index a06575a7..2e93efb3 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuScanAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuScanAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.menu.MenuScanEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuViewAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuViewAction.java index ca434590..5368fb13 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuViewAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/MenuViewAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/ScanAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/ScanAction.java index 43bb5c3c..3b070e64 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/ScanAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/ScanAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.ScanEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/SubscribeAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/SubscribeAction.java index 8ec83315..0183932b 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/SubscribeAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/SubscribeAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.ScribeEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/TemplateSendAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/TemplateSendAction.java index b91814e2..9b35ac55 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/TemplateSendAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/TemplateSendAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/UnsubscribeAction.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/UnsubscribeAction.java index aaef7169..9298f63f 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/UnsubscribeAction.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/event/UnsubscribeAction.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.mp.action.event; -import com.foxinmy.weixin4j.mp.action.Action; import com.foxinmy.weixin4j.mp.action.DebugAction; +import com.foxinmy.weixin4j.mp.mapping.Action; import com.foxinmy.weixin4j.msg.event.ScribeEventMessage; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/Action.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/Action.java similarity index 88% rename from weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/Action.java rename to weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/Action.java index cbe92f6e..937df8cd 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/action/Action.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/Action.java @@ -1,4 +1,4 @@ -package com.foxinmy.weixin4j.mp.action; +package com.foxinmy.weixin4j.mp.mapping; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinActionMapping.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/AnnotationActionMapping.java similarity index 68% rename from weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinActionMapping.java rename to weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/AnnotationActionMapping.java index a811d67a..0a6a1c8b 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinActionMapping.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/mapping/AnnotationActionMapping.java @@ -1,19 +1,29 @@ -package com.foxinmy.weixin4j.mp.server; +package com.foxinmy.weixin4j.mp.mapping; import java.util.HashMap; import java.util.Map; import java.util.Set; -import com.foxinmy.weixin4j.mp.action.Action; +import org.dom4j.DocumentException; + import com.foxinmy.weixin4j.mp.action.WeixinAction; import com.foxinmy.weixin4j.type.EventType; import com.foxinmy.weixin4j.type.MessageType; import com.foxinmy.weixin4j.util.ClassUtil; -public class WeixinActionMapping { +/** + * 注解实现的Mapping + * + * @className AnnotationActionMapping + * @author jy + * @date 2014年10月28日 + * @since JDK 1.7 + * @see com.foxinmy.weixin4j.mp.mapping.Action + */ +public class AnnotationActionMapping extends AbstractActionMapping { private final Map actionMap; - public WeixinActionMapping() { + public AnnotationActionMapping() { actionMap = new HashMap(); Set> weixinActions = ClassUtil.getClasses(WeixinAction.class .getPackage()); @@ -42,7 +52,8 @@ public class WeixinActionMapping { } } - public WeixinAction getAction(String key) { - return actionMap.get(key.toLowerCase()); + public WeixinAction getAction(String xmlMsg) throws DocumentException { + String key = getMappingKey(xmlMsg); + return actionMap.get(key); } } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/BaseResponse.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/BaseResponse.java index 997108dd..80e078c1 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/BaseResponse.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/response/BaseResponse.java @@ -46,7 +46,7 @@ public class BaseResponse implements Serializable { static { Class[] classes = ClassUtil.getClasses( - TextResponse.class.getPackage()).toArray(new Class[0]); + BaseResponse.class.getPackage()).toArray(new Class[0]); xmlStream.ignoreUnknownElements(); xmlStream.autodetectAnnotations(true); diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java index c3ccf022..36451068 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java @@ -25,16 +25,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.foxinmy.weixin4j.mp.action.WeixinAction; -import com.foxinmy.weixin4j.util.MessageUtil; +import com.foxinmy.weixin4j.mp.mapping.ActionMapping; public class WeixinServerHandler extends ChannelInboundHandlerAdapter { private final Logger log = LoggerFactory.getLogger(getClass()); - private final WeixinActionMapping weixinActionMapping; + private final ActionMapping actionMapping; - public WeixinServerHandler(WeixinActionMapping weixinActionMapping) { - this.weixinActionMapping = weixinActionMapping; + public WeixinServerHandler(ActionMapping actionMapping) { + this.actionMapping = actionMapping; } @Override @@ -54,8 +54,7 @@ public class WeixinServerHandler extends ChannelInboundHandlerAdapter { String xmlMsg = req.content().toString(StandardCharsets.UTF_8); log.info("\n=================message in=================\n{}", xmlMsg); - String key = MessageUtil.getMappingKey(xmlMsg); - WeixinAction action = weixinActionMapping.getAction(key); + WeixinAction action = actionMapping.getAction(xmlMsg); if (action == null) { ctx.write(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND)); diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerInitializer.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerInitializer.java index 79d30655..bd116ae1 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerInitializer.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerInitializer.java @@ -6,12 +6,15 @@ import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpServerCodec; +import com.foxinmy.weixin4j.mp.mapping.ActionMapping; +import com.foxinmy.weixin4j.mp.mapping.AnnotationActionMapping; + public class WeixinServerInitializer extends ChannelInitializer { - private final WeixinActionMapping weixinActionMapping; + private final ActionMapping actionMapping; public WeixinServerInitializer() { - this.weixinActionMapping = new WeixinActionMapping(); + this.actionMapping = new AnnotationActionMapping(); } @Override @@ -19,6 +22,6 @@ public class WeixinServerInitializer extends ChannelInitializer { ChannelPipeline pipeline = channel.pipeline(); pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); - pipeline.addLast(new WeixinServerHandler(weixinActionMapping)); + pipeline.addLast(new WeixinServerHandler(actionMapping)); } } diff --git a/weixin4j-mp/src/main/resources/weixin.properties b/weixin4j-mp/src/main/resources/weixin.properties index d115a0c2..c68460ec 100644 --- a/weixin4j-mp/src/main/resources/weixin.properties +++ b/weixin4j-mp/src/main/resources/weixin.properties @@ -69,6 +69,10 @@ shorturl_uri={api_base_url}/shorturl?access_token=%s updateremark_uri={api_base_url}/user/info/updateremark?access_token=%s # \u6a21\u677f\u6d88\u606f template_send_uri={api_base_url}/message/template/send?access_token=%s +# \u67e5\u8be2\u8ba2\u5355 +orderquery_uri={api_base_url}/pay/orderquery?access_token=%s +# \u53d1\u8d27\u901a\u77e5 +delivernotify_uri={api_base_url}/pay/delivernotify?access_token=%s # token\u5b58\u653e\u8def\u5f84 token_path=/tmp/weixin/token