Skip to content

Commit e5bd65f

Browse files
committed
#333 修复消息验重问题(mp和cp同时存在的问题)
1 parent bea0646 commit e5bd65f

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouter.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import me.chanjar.weixin.cp.api.WxCpService;
1212
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
1313
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
14+
import org.apache.commons.lang3.StringUtils;
1415
import org.slf4j.Logger;
1516
import org.slf4j.LoggerFactory;
1617

@@ -215,17 +216,19 @@ public WxCpXmlOutMessage route(final WxCpXmlMessage wxMessage) {
215216
}
216217

217218
protected boolean isDuplicateMessage(WxCpXmlMessage wxMessage) {
218-
219-
String messageId = "";
219+
String messageId;
220220
if (wxMessage.getMsgId() == null) {
221221
messageId = String.valueOf(wxMessage.getCreateTime())
222-
+ "-" + String.valueOf(wxMessage.getAgentId() == null ? "" : wxMessage.getAgentId())
222+
+ "-" + StringUtils.trimToEmpty(String.valueOf(wxMessage.getAgentId()))
223223
+ "-" + wxMessage.getFromUserName()
224-
+ "-" + String.valueOf(wxMessage.getEventKey() == null ? "" : wxMessage.getEventKey())
225-
+ "-" + String.valueOf(wxMessage.getEvent() == null ? "" : wxMessage.getEvent())
224+
+ "-" + StringUtils.trimToEmpty(wxMessage.getEventKey())
225+
+ "-" + StringUtils.trimToEmpty(wxMessage.getEvent())
226226
;
227227
} else {
228-
messageId = String.valueOf(wxMessage.getMsgId());
228+
messageId = new StringBuilder().append(wxMessage.getMsgId())
229+
.append("-").append(wxMessage.getCreateTime())
230+
.append("-").append(wxMessage.getFromUserName())
231+
.toString();
229232
}
230233

231234
return this.messageDuplicateChecker.isDuplicate(messageId);

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import me.chanjar.weixin.common.util.LogExceptionHandler;
1111
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
1212
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
13+
import org.apache.commons.lang3.StringUtils;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
1516

@@ -195,16 +196,17 @@ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) {
195196
}
196197

197198
protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) {
198-
199199
StringBuilder messageId = new StringBuilder();
200200
if (wxMessage.getMsgId() == null) {
201201
messageId.append(wxMessage.getCreateTime())
202202
.append("-").append(wxMessage.getFromUser())
203-
.append("-").append(wxMessage.getEventKey() == null ? "" : wxMessage.getEventKey())
204-
.append("-").append(wxMessage.getEvent() == null ? "" : wxMessage.getEvent())
203+
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey()))
204+
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent()))
205205
;
206206
} else {
207-
messageId.append(wxMessage.getMsgId());
207+
messageId.append(wxMessage.getMsgId())
208+
.append("-").append(wxMessage.getCreateTime())
209+
.append("-").append(wxMessage.getFromUser());
208210
}
209211

210212
return this.messageDuplicateChecker.isDuplicate(messageId.toString());

0 commit comments

Comments
 (0)