@@ -11,6 +11,7 @@ import me.chanjar.weixin.common.util.LogExceptionHandler; | |||||
import me.chanjar.weixin.cp.api.WxCpService; | import me.chanjar.weixin.cp.api.WxCpService; | ||||
import me.chanjar.weixin.cp.bean.WxCpXmlMessage; | import me.chanjar.weixin.cp.bean.WxCpXmlMessage; | ||||
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; | import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -215,17 +216,19 @@ public class WxCpMessageRouter { | |||||
} | } | ||||
protected boolean isDuplicateMessage(WxCpXmlMessage wxMessage) { | protected boolean isDuplicateMessage(WxCpXmlMessage wxMessage) { | ||||
String messageId = ""; | |||||
String messageId; | |||||
if (wxMessage.getMsgId() == null) { | if (wxMessage.getMsgId() == null) { | ||||
messageId = String.valueOf(wxMessage.getCreateTime()) | messageId = String.valueOf(wxMessage.getCreateTime()) | ||||
+ "-" + String.valueOf(wxMessage.getAgentId() == null ? "" : wxMessage.getAgentId()) | |||||
+ "-" + StringUtils.trimToEmpty(String.valueOf(wxMessage.getAgentId())) | |||||
+ "-" + wxMessage.getFromUserName() | + "-" + 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 { | } 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); | return this.messageDuplicateChecker.isDuplicate(messageId); | ||||
@@ -10,6 +10,7 @@ import me.chanjar.weixin.common.session.WxSessionManager; | |||||
import me.chanjar.weixin.common.util.LogExceptionHandler; | import me.chanjar.weixin.common.util.LogExceptionHandler; | ||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; | ||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -195,16 +196,17 @@ public class WxMpMessageRouter { | |||||
} | } | ||||
protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { | protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { | ||||
StringBuilder messageId = new StringBuilder(); | StringBuilder messageId = new StringBuilder(); | ||||
if (wxMessage.getMsgId() == null) { | if (wxMessage.getMsgId() == null) { | ||||
messageId.append(wxMessage.getCreateTime()) | messageId.append(wxMessage.getCreateTime()) | ||||
.append("-").append(wxMessage.getFromUser()) | .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 { | } else { | ||||
messageId.append(wxMessage.getMsgId()); | |||||
messageId.append(wxMessage.getMsgId()) | |||||
.append("-").append(wxMessage.getCreateTime()) | |||||
.append("-").append(wxMessage.getFromUser()); | |||||
} | } | ||||
return this.messageDuplicateChecker.isDuplicate(messageId.toString()); | return this.messageDuplicateChecker.isDuplicate(messageId.toString()); | ||||