简要描述
当审批人批量审批时,同一个提交人提交了两个审批,由于时间也一致,导致其中一条消息被排重了。
模块版本情况
- WxJava 模块名: weixin-java-cp
- WxJava 版本号: 4.4.4.B (最新版本没有改动)
可能的解决方法
WxCpMessageRouter类中的isMsgDuplicated方法,增加审批编号的判定:
private boolean isMsgDuplicated(WxCpXmlMessage wxMessage) {
StringBuilder messageId = new StringBuilder();
if (wxMessage.getMsgId() == null) {
messageId.append(wxMessage.getCreateTime())
.append("-").append(StringUtils.trimToEmpty(String.valueOf(wxMessage.getAgentId())))
.append("-").append(wxMessage.getFromUserName())
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey()))
.append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent()));
} else {
messageId.append(wxMessage.getMsgId())
.append("-").append(wxMessage.getCreateTime())
.append("-").append(wxMessage.getFromUserName());
}
append(messageId, wxMessage.getUserId());
append(messageId, wxMessage.getChangeType());
append(messageId, wxMessage.getTagId());
append(messageId, wxMessage.getId());
append(messageId, wxMessage.getChatId());
append(messageId, wxMessage.getExternalUserId());
//这里,增加审批编号
if(StringUtils.isNotBlank(wxMessage.getApprovalInfo().getSpNo())){
append(messageId, wxMessage.getApprovalInfo().getSpNo());
}
return this.messageDuplicateChecker.isDuplicate(messageId.toString());
}
- 或者是此类中是否可以增加个类似
setMessageId的相关方法,方便后续开发者自己来定义自己的规则来生成messageId
简要描述
当审批人批量审批时,同一个提交人提交了两个审批,由于时间也一致,导致其中一条消息被排重了。
模块版本情况
可能的解决方法
WxCpMessageRouter类中的isMsgDuplicated方法,增加审批编号的判定:setMessageId的相关方法,方便后续开发者自己来定义自己的规则来生成messageId