#333 修复消息验重问题(mp和cp同时存在的问题)

This commit is contained in:
Binary Wang 2017-11-07 15:55:42 +08:00
parent bea0646f19
commit e5bd65f2db
2 changed files with 15 additions and 10 deletions

View File

@ -11,6 +11,7 @@ import me.chanjar.weixin.common.util.LogExceptionHandler;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -215,17 +216,19 @@ public class WxCpMessageRouter {
}
protected boolean isDuplicateMessage(WxCpXmlMessage wxMessage) {
String messageId = "";
String messageId;
if (wxMessage.getMsgId() == null) {
messageId = String.valueOf(wxMessage.getCreateTime())
+ "-" + String.valueOf(wxMessage.getAgentId() == null ? "" : wxMessage.getAgentId())
+ "-" + StringUtils.trimToEmpty(String.valueOf(wxMessage.getAgentId()))
+ "-" + wxMessage.getFromUserName()
+ "-" + String.valueOf(wxMessage.getEventKey() == null ? "" : wxMessage.getEventKey())
+ "-" + String.valueOf(wxMessage.getEvent() == null ? "" : wxMessage.getEvent())
+ "-" + StringUtils.trimToEmpty(wxMessage.getEventKey())
+ "-" + StringUtils.trimToEmpty(wxMessage.getEvent())
;
} else {
messageId = String.valueOf(wxMessage.getMsgId());
messageId = new StringBuilder().append(wxMessage.getMsgId())
.append("-").append(wxMessage.getCreateTime())
.append("-").append(wxMessage.getFromUserName())
.toString();
}
return this.messageDuplicateChecker.isDuplicate(messageId);

View File

@ -10,6 +10,7 @@ import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.common.util.LogExceptionHandler;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -195,16 +196,17 @@ public class WxMpMessageRouter {
}
protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) {
StringBuilder messageId = new StringBuilder();
if (wxMessage.getMsgId() == null) {
messageId.append(wxMessage.getCreateTime())
.append("-").append(wxMessage.getFromUser())
.append("-").append(wxMessage.getEventKey() == null ? "" : wxMessage.getEventKey())
.append("-").append(wxMessage.getEvent() == null ? "" : wxMessage.getEvent())
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey()))
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent()))
;
} else {
messageId.append(wxMessage.getMsgId());
messageId.append(wxMessage.getMsgId())
.append("-").append(wxMessage.getCreateTime())
.append("-").append(wxMessage.getFromUser());
}
return this.messageDuplicateChecker.isDuplicate(messageId.toString());