From fef9f82b2353c36d8688542e38177b41ccf66466 Mon Sep 17 00:00:00 2001 From: Daniel Qian Date: Tue, 2 Sep 2014 15:20:14 +0800 Subject: [PATCH] =?UTF-8?q?issue=20#13=20=E6=B7=BB=E5=8A=A0=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E5=8C=B9=E9=85=8Dcontent=E8=B7=AF=E7=94=B1=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chanjarster/weixin/api/WxMessageRouter.java | 15 +++++++++++++++ .../weixin/api/WxMessageRouterTest.java | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/chanjarster/weixin/api/WxMessageRouter.java b/src/main/java/chanjarster/weixin/api/WxMessageRouter.java index 1f477a6d6..90a2d911b 100644 --- a/src/main/java/chanjarster/weixin/api/WxMessageRouter.java +++ b/src/main/java/chanjarster/weixin/api/WxMessageRouter.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.regex.Pattern; import chanjarster.weixin.bean.WxXmlMessage; import chanjarster.weixin.bean.WxXmlOutMessage; @@ -110,6 +111,8 @@ public class WxMessageRouter { private String content; + private String rContent; + private boolean reEnter = false; private List handlers = new ArrayList(); @@ -170,6 +173,16 @@ public class WxMessageRouter { return this; } + /** + * 如果content匹配该正则表达式 + * @param regex + * @return + */ + public Rule rContent(String regex) { + this.rContent = regex; + return this; + } + /** * 设置微信消息拦截器 * @param interceptor @@ -247,6 +260,8 @@ public class WxMessageRouter { (this.eventKey == null || this.eventKey.equals(wxMessage.getEventKey())) && (this.content == null || this.content.equals(wxMessage.getContent() == null ? null : wxMessage.getContent().trim())) + && + (this.rContent == null || Pattern.matches(this.rContent, wxMessage.getContent() == null ? "" : wxMessage.getContent().trim())) ; } diff --git a/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java b/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java index fa46bcc11..002686598 100644 --- a/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java +++ b/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java @@ -39,6 +39,7 @@ public class WxMessageRouterTest { .rule().async(async).event(WxConsts.EVT_CLICK).handler(new WxEchoMessageHandler(sb, WxConsts.EVT_CLICK)).end() .rule().async(async).eventKey("KEY_1").handler(new WxEchoMessageHandler(sb, "KEY_1")).end() .rule().async(async).content("CONTENT_1").handler(new WxEchoMessageHandler(sb, "CONTENT_1")).end() + .rule().async(async).rContent(".*bc.*").handler(new WxEchoMessageHandler(sb, "abcd")).end() .rule().async(async).handler(new WxEchoMessageHandler(sb, "ALL")).end(); ; } @@ -106,6 +107,9 @@ public class WxMessageRouterTest { WxXmlMessage message5 = new WxXmlMessage(); message5.setContent("BLA"); + WxXmlMessage message6 = new WxXmlMessage(); + message6.setContent("abcd"); + WxXmlMessage c2 = new WxXmlMessage(); c2.setMsgType(WxConsts.XML_MSG_TEXT); c2.setEvent(WxConsts.EVT_CLICK); @@ -127,6 +131,7 @@ public class WxMessageRouterTest { new Object[] { message3, "KEY_1," }, new Object[] { message4, "CONTENT_1," }, new Object[] { message5, "ALL," }, + new Object[] { message6, "abcd," }, new Object[] { c2, "COMBINE_2," }, new Object[] { c3, "COMBINE_3," }, new Object[] { c4, "COMBINE_4," }