Closed
Description
简要描述
当审批人批量审批时,同一个提交人提交了两个审批,由于时间也一致,导致其中一条消息被排重了。
模块版本情况
- 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
Metadata
Metadata
Assignees
Labels
No labels