From 67ac4b37a25a0affef5f27bba588cfa37f53bdc2 Mon Sep 17 00:00:00 2001
From: laodaming <11058467+laudamine@user.noreply.gitee.com>
Date: Wed, 22 Nov 2023 12:30:50 +0800
Subject: [PATCH] fix

---
 .../logic/getldaporganizationmemberslogic.go   | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

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{