From a31b2ff18ca0a6d29456076e02926d88131099c5 Mon Sep 17 00:00:00 2001 From: jinyu Date: Wed, 16 Dec 2015 17:56:32 +0800 Subject: [PATCH] WeixinSuiteMessage rename SuiteMessage --- .../dispatcher/DefaultMessageMatcher.java | 8 ++++--- .../dispatcher/WeixinMessageDispatcher.java | 23 ++++++++----------- ...xinSuiteMessage.java => SuiteMessage.java} | 6 ++--- .../com/foxinmy/weixin4j/type/EventType.java | 7 +++++- .../weixin4j/xml/MessageTransferHandler.java | 12 ++++++---- 5 files changed, 31 insertions(+), 25 deletions(-) rename weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/{WeixinSuiteMessage.java => SuiteMessage.java} (91%) diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/DefaultMessageMatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/DefaultMessageMatcher.java index 4c73e6cd..9f9bc073 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/DefaultMessageMatcher.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/DefaultMessageMatcher.java @@ -173,13 +173,15 @@ public class DefaultMessageMatcher implements WeixinMessageMatcher { private void initQyEventMessageClass() { String messageType = MessageType.event.name(); - // batch_job_result消息不好区分微信号类型 messageClassMap.put(new WeixinMessageKey(messageType, - EventType.batch_job_result.name(), AccountType.MP), + EventType.batch_job_result.name(), AccountType.QY), BatchjobresultMessage.class); messageClassMap.put(new WeixinMessageKey(messageType, EventType.enter_agent.name(), AccountType.QY), EnterAgentEventMessage.class); + //messageClassMap.put(new WeixinMessageKey(messageType, + // EventType.suite.name(), AccountType.QY), + //SuiteMessage.class); } @Override @@ -190,7 +192,7 @@ public class DefaultMessageMatcher implements WeixinMessageMatcher { @Override public void regist(WeixinMessageKey messageKey, Class messageClass) { - Class clazz = messageClassMap.get(messageKey); + Class clazz = match(messageKey); if (clazz != null) { throw new IllegalArgumentException("duplicate messagekey '" + messageKey + "' define for " + clazz); diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java index 8dd2bed9..bfdec81b 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java @@ -30,7 +30,6 @@ import com.foxinmy.weixin4j.request.WeixinRequest; import com.foxinmy.weixin4j.response.BlankResponse; import com.foxinmy.weixin4j.response.WeixinResponse; import com.foxinmy.weixin4j.socket.WeixinMessageTransfer; -import com.foxinmy.weixin4j.type.AccountType; import com.foxinmy.weixin4j.util.ClassUtil; import com.foxinmy.weixin4j.util.Consts; import com.foxinmy.weixin4j.util.HttpUtil; @@ -115,9 +114,7 @@ public class WeixinMessageDispatcher { public void doDispatch(final ChannelHandlerContext context, final WeixinRequest request, final WeixinMessageTransfer messageTransfer) throws WeixinException { - WeixinMessageKey messageKey = defineMessageKey( - messageTransfer.getMsgType(), messageTransfer.getEventType(), - messageTransfer.getAccountType()); + WeixinMessageKey messageKey = defineMessageKey(messageTransfer, request); Class targetClass = messageMatcher .match(messageKey); Object message = messageRead(request.getOriginalContent(), targetClass); @@ -149,17 +146,17 @@ public class WeixinMessageDispatcher { /** * 声明messagekey * - * @param messageType - * 消息类型 - * @param eventType - * 事件类型 - * @param accountType - * 账号类型 + * @param messageTransfer + * 基础消息 + * @param request + * 请求信息 * @return */ - protected WeixinMessageKey defineMessageKey(String messageType, - String eventType, AccountType accountType) { - return new WeixinMessageKey(messageType, eventType, accountType); + protected WeixinMessageKey defineMessageKey( + WeixinMessageTransfer messageTransfer, WeixinRequest request) { + return new WeixinMessageKey(messageTransfer.getMsgType(), + messageTransfer.getEventType(), + messageTransfer.getAccountType()); } /** diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteMessage.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteMessage.java similarity index 91% rename from weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteMessage.java rename to weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteMessage.java index 110142f9..507016dd 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteMessage.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteMessage.java @@ -12,7 +12,7 @@ import javax.xml.bind.annotation.XmlTransient; /** * 套件消息 * - * @className WeixinSuiteMessage + * @className SuiteMessage * @author jy * @date 2015年6月23日 * @since JDK 1.6 @@ -20,7 +20,7 @@ import javax.xml.bind.annotation.XmlTransient; */ @XmlRootElement(name = "xml") @XmlAccessorType(XmlAccessType.FIELD) -public class WeixinSuiteMessage implements Serializable { +public class SuiteMessage implements Serializable { private static final long serialVersionUID = 6457919241019021514L; /** @@ -81,7 +81,7 @@ public class WeixinSuiteMessage implements Serializable { @Override public String toString() { - return "WeixinSuiteMessage [suiteId=" + suiteId + ", eventType=" + return "SuiteMessage [suiteId=" + suiteId + ", eventType=" + eventType + ", timeStamp=" + timeStamp + ", SuiteTicket=" + SuiteTicket + ", authCorpId=" + authCorpId + "]"; } diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/type/EventType.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/type/EventType.java index ff8285c3..af6777df 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/type/EventType.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/type/EventType.java @@ -150,5 +150,10 @@ public enum EventType { * * @see com.foxinmy.weixin4j.qy.event.EnterAgentEventMessage */ - enter_agent; + enter_agent, + /** + * 第三方应用套件消息 + * @see com.foxinmy.weixin4j.qy.suite.WeixinSuiteMessage + */ + suite; } diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java index e799624f..f8e26986 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java @@ -32,7 +32,7 @@ public class MessageTransferHandler extends DefaultHandler { private String toUserName; private String msgType; private String eventType; - private boolean hasAgent; + private boolean isQY; private Set nodeNames; private String content; @@ -43,7 +43,7 @@ public class MessageTransferHandler extends DefaultHandler { toUserName = null; msgType = null; eventType = null; - hasAgent = false; + isQY = false; nodeNames = new HashSet(); } @@ -59,8 +59,10 @@ public class MessageTransferHandler extends DefaultHandler { msgType = content.toLowerCase(); } else if (localName.equalsIgnoreCase("event")) { eventType = content.toLowerCase(); - } else if (localName.startsWith("agent")) { - hasAgent = true; + } else if (localName.startsWith("agent") // 应用信息 + || localName.startsWith("suite") // 套件信息 + || localName.equalsIgnoreCase("batchJob")) { // 批量任务 + isQY = true; } } @@ -71,7 +73,7 @@ public class MessageTransferHandler extends DefaultHandler { } private AccountType getAccountType() { - if (hasAgent) { + if (isQY) { return AccountType.QY; } if (StringUtil.isBlank(msgType) && StringUtil.isBlank(eventType)) {