Skip to content

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

Description

@nadirvishun

简要描述

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

模块版本情况

  • WxJava 模块名: weixin-java-cp
  • WxJava 版本号: 4.4.4.B (最新版本没有改动)

可能的解决方法

  • WxCpMessageRouter类中的isMsgDuplicated方法,增加审批编号的判定:
    privatebooleanisMsgDuplicated(WxCpXmlMessagewxMessage) {
    StringBuildermessageId = newStringBuilder();
    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());
    }
    returnthis.messageDuplicateChecker.isDuplicate(messageId.toString());
    }
  • 或者是此类中是否可以增加个类似setMessageId的相关方法,方便后续开发者自己来定义自己的规则来生成messageId

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