WeixinSuiteMessage rename SuiteMessage

This commit is contained in:
jinyu 2015-12-16 17:56:32 +08:00
parent 3ed53ed366
commit a31b2ff18c
5 changed files with 31 additions and 25 deletions

View File

@ -173,13 +173,15 @@ public class DefaultMessageMatcher implements WeixinMessageMatcher {
private void initQyEventMessageClass() { private void initQyEventMessageClass() {
String messageType = MessageType.event.name(); String messageType = MessageType.event.name();
// batch_job_result消息不好区分微信号类型
messageClassMap.put(new WeixinMessageKey(messageType, messageClassMap.put(new WeixinMessageKey(messageType,
EventType.batch_job_result.name(), AccountType.MP), EventType.batch_job_result.name(), AccountType.QY),
BatchjobresultMessage.class); BatchjobresultMessage.class);
messageClassMap.put(new WeixinMessageKey(messageType, messageClassMap.put(new WeixinMessageKey(messageType,
EventType.enter_agent.name(), AccountType.QY), EventType.enter_agent.name(), AccountType.QY),
EnterAgentEventMessage.class); EnterAgentEventMessage.class);
//messageClassMap.put(new WeixinMessageKey(messageType,
// EventType.suite.name(), AccountType.QY),
//SuiteMessage.class);
} }
@Override @Override
@ -190,7 +192,7 @@ public class DefaultMessageMatcher implements WeixinMessageMatcher {
@Override @Override
public void regist(WeixinMessageKey messageKey, public void regist(WeixinMessageKey messageKey,
Class<? extends WeixinMessage> messageClass) { Class<? extends WeixinMessage> messageClass) {
Class<?> clazz = messageClassMap.get(messageKey); Class<?> clazz = match(messageKey);
if (clazz != null) { if (clazz != null) {
throw new IllegalArgumentException("duplicate messagekey '" throw new IllegalArgumentException("duplicate messagekey '"
+ messageKey + "' define for " + clazz); + messageKey + "' define for " + clazz);

View File

@ -30,7 +30,6 @@ import com.foxinmy.weixin4j.request.WeixinRequest;
import com.foxinmy.weixin4j.response.BlankResponse; import com.foxinmy.weixin4j.response.BlankResponse;
import com.foxinmy.weixin4j.response.WeixinResponse; import com.foxinmy.weixin4j.response.WeixinResponse;
import com.foxinmy.weixin4j.socket.WeixinMessageTransfer; import com.foxinmy.weixin4j.socket.WeixinMessageTransfer;
import com.foxinmy.weixin4j.type.AccountType;
import com.foxinmy.weixin4j.util.ClassUtil; import com.foxinmy.weixin4j.util.ClassUtil;
import com.foxinmy.weixin4j.util.Consts; import com.foxinmy.weixin4j.util.Consts;
import com.foxinmy.weixin4j.util.HttpUtil; import com.foxinmy.weixin4j.util.HttpUtil;
@ -115,9 +114,7 @@ public class WeixinMessageDispatcher {
public void doDispatch(final ChannelHandlerContext context, public void doDispatch(final ChannelHandlerContext context,
final WeixinRequest request, final WeixinRequest request,
final WeixinMessageTransfer messageTransfer) throws WeixinException { final WeixinMessageTransfer messageTransfer) throws WeixinException {
WeixinMessageKey messageKey = defineMessageKey( WeixinMessageKey messageKey = defineMessageKey(messageTransfer, request);
messageTransfer.getMsgType(), messageTransfer.getEventType(),
messageTransfer.getAccountType());
Class<? extends WeixinMessage> targetClass = messageMatcher Class<? extends WeixinMessage> targetClass = messageMatcher
.match(messageKey); .match(messageKey);
Object message = messageRead(request.getOriginalContent(), targetClass); Object message = messageRead(request.getOriginalContent(), targetClass);
@ -149,17 +146,17 @@ public class WeixinMessageDispatcher {
/** /**
* 声明messagekey * 声明messagekey
* *
* @param messageType * @param messageTransfer
* 消息类型 * 基础消息
* @param eventType * @param request
* 事件类型 * 请求信息
* @param accountType
* 账号类型
* @return * @return
*/ */
protected WeixinMessageKey defineMessageKey(String messageType, protected WeixinMessageKey defineMessageKey(
String eventType, AccountType accountType) { WeixinMessageTransfer messageTransfer, WeixinRequest request) {
return new WeixinMessageKey(messageType, eventType, accountType); return new WeixinMessageKey(messageTransfer.getMsgType(),
messageTransfer.getEventType(),
messageTransfer.getAccountType());
} }
/** /**

View File

@ -12,7 +12,7 @@ import javax.xml.bind.annotation.XmlTransient;
/** /**
* 套件消息 * 套件消息
* *
* @className WeixinSuiteMessage * @className SuiteMessage
* @author jy * @author jy
* @date 2015年6月23日 * @date 2015年6月23日
* @since JDK 1.6 * @since JDK 1.6
@ -20,7 +20,7 @@ import javax.xml.bind.annotation.XmlTransient;
*/ */
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WeixinSuiteMessage implements Serializable { public class SuiteMessage implements Serializable {
private static final long serialVersionUID = 6457919241019021514L; private static final long serialVersionUID = 6457919241019021514L;
/** /**
@ -81,7 +81,7 @@ public class WeixinSuiteMessage implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "WeixinSuiteMessage [suiteId=" + suiteId + ", eventType=" return "SuiteMessage [suiteId=" + suiteId + ", eventType="
+ eventType + ", timeStamp=" + timeStamp + ", SuiteTicket=" + eventType + ", timeStamp=" + timeStamp + ", SuiteTicket="
+ SuiteTicket + ", authCorpId=" + authCorpId + "]"; + SuiteTicket + ", authCorpId=" + authCorpId + "]";
} }

View File

@ -150,5 +150,10 @@ public enum EventType {
* *
* @see com.foxinmy.weixin4j.qy.event.EnterAgentEventMessage * @see com.foxinmy.weixin4j.qy.event.EnterAgentEventMessage
*/ */
enter_agent; enter_agent,
/**
* 第三方应用套件消息
* @see com.foxinmy.weixin4j.qy.suite.WeixinSuiteMessage
*/
suite;
} }

View File

@ -32,7 +32,7 @@ public class MessageTransferHandler extends DefaultHandler {
private String toUserName; private String toUserName;
private String msgType; private String msgType;
private String eventType; private String eventType;
private boolean hasAgent; private boolean isQY;
private Set<String> nodeNames; private Set<String> nodeNames;
private String content; private String content;
@ -43,7 +43,7 @@ public class MessageTransferHandler extends DefaultHandler {
toUserName = null; toUserName = null;
msgType = null; msgType = null;
eventType = null; eventType = null;
hasAgent = false; isQY = false;
nodeNames = new HashSet<String>(); nodeNames = new HashSet<String>();
} }
@ -59,8 +59,10 @@ public class MessageTransferHandler extends DefaultHandler {
msgType = content.toLowerCase(); msgType = content.toLowerCase();
} else if (localName.equalsIgnoreCase("event")) { } else if (localName.equalsIgnoreCase("event")) {
eventType = content.toLowerCase(); eventType = content.toLowerCase();
} else if (localName.startsWith("agent")) { } else if (localName.startsWith("agent") // 应用信息
hasAgent = true; || localName.startsWith("suite") // 套件信息
|| localName.equalsIgnoreCase("batchJob")) { // 批量任务
isQY = true;
} }
} }
@ -71,7 +73,7 @@ public class MessageTransferHandler extends DefaultHandler {
} }
private AccountType getAccountType() { private AccountType getAccountType() {
if (hasAgent) { if (isQY) {
return AccountType.QY; return AccountType.QY;
} }
if (StringUtil.isBlank(msgType) && StringUtil.isBlank(eventType)) { if (StringUtil.isBlank(msgType) && StringUtil.isBlank(eventType)) {