diff --git a/server/ldap-admin/internal/logic/getldaporganizationmemberslogic.go b/server/ldap-admin/internal/logic/getldaporganizationmemberslogic.go index 675333c4..70a53e28 100644 --- a/server/ldap-admin/internal/logic/getldaporganizationmemberslogic.go +++ b/server/ldap-admin/internal/logic/getldaporganizationmemberslogic.go @@ -114,14 +114,16 @@ func (l *GetLdapOrganizationMembersLogic) GetLdapOrganizationMembers(req *types. Status: user.Status, }) } - //把通讯录中没有的也删除 - for _, memberDN := range memberDNList { - if _, ok := mapUser[memberDN]; ok { - continue - } - //从组织中移除没有帐号的用户 - if err = l.svcCtx.Ldap.RemoveUserFromOrganization(req.OrganizationDN, memberDN); err != nil { - logx.Error("移除用户成员失败!:", err) + //成员组成员DN数跟查出来的不一致有可能是帐号被物理删除了,则也把帐号从组织中移除 + if memberCount != len(userList) { + for _, memberDN := range memberDNList { + if _, ok := mapUser[memberDN]; ok { + continue + } + //从组织中移除没有帐号的用户 + if err = l.svcCtx.Ldap.RemoveUserFromOrganization(req.OrganizationDN, memberDN); err != nil { + logx.Error("移除用户成员失败!:", err) + } } } return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetLdapOrganizationMembersRsp{