Skip to content

[企业微信] 批量审批回调时去重异常 #3088

Description

@nadirvishun

简要描述

当审批人批量审批时,同一个提交人提交了两个审批,由于时间也一致,导致其中一条消息被排重了。

模块版本情况

  • 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions