TRX 1 éve
szülő
commit
fe2d7dcb58

+ 9 - 11
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationUserDao.java

@@ -3,6 +3,7 @@ package com.zhongshu.card.server.core.dao.org;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.card.client.type.user.OrgUserState;
 import com.zhongshu.card.server.core.dao.org.extend.OrganizationUserDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
@@ -44,17 +45,6 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
     // 用户是否存在
     Boolean existsByOrganizationAndUser(Organization organization, UserAccount user);
 
-    // 统计用户所在的机构数量
-    long countByUserAndState(UserAccount user, UserState state);
-
-    long countByUserAndStateAndAuthType(UserAccount user, UserState state, AuthType authType);
-
-    long countByProjectOid(String projectOid);
-
-    long countByOrganization(Organization organization);
-
-    void deleteByOrganization(Organization organization);
-
     // 查询用户所在机构
     List<OrganizationUser> findByUserAndAuthTypeAndState(UserAccount userAccount, AuthType authType, UserState state);
 
@@ -66,4 +56,12 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
 
     List<OrganizationUser> findByUserIdAndProjectOid(String userId, String projectOid);
 
+    // 统计用户所在的机构数量
+    long countByUserIdAndProjectOid(String userId, String projectOid);
+
+    long countByProjectOidAndOrgUserState(String projectOid, OrgUserState orgUserState);
+
+    long countByOrganization(Organization organization);
+
+    void deleteByOrganization(Organization organization);
 }

+ 17 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -774,8 +774,22 @@ public class OrganizationUserServiceImpl extends SuperService {
         OrganizationUser organizationUser = organizationUserDao.findTopById(id);
         if (ObjectUtils.isNotEmpty(organizationUser)) {
             organizationUserDao.delete(organizationUser);
-
-
+            String projectOid = organizationUser.getProjectOid();
+            String userId = organizationUser.getUserId();
+
+            long number = organizationUserDao.countByUserIdAndProjectOid(userId, projectOid);
+            if (number <= 0) {
+                // 判断是否是项目管理员
+                Organization organization = organizationDao.findTopByOid(projectOid);
+                if (ObjectUtils.isNotEmpty(organization) && ObjectUtils.isNotEmpty(organization.getManagerUserIds())) {
+                    List<String> managerUserIds = organization.getManagerUserIds();
+                    if (managerUserIds.contains(userId)) {
+                        managerUserIds.remove(userId);
+                        organization.setManagerUserIds(managerUserIds);
+                        organizationDao.save(organization);
+                    }
+                }
+            }
             OrgUserBindUpdateSyncEvent event = new OrgUserBindUpdateSyncEvent(this, List.of(id), DataOperationType.Delete);
             applicationContext.publishEvent(event);
         }
@@ -1001,7 +1015,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         if (StringUtils.isEmpty(projectOid)) {
             return 0L;
         }
-        return organizationUserDao.countByProjectOid(projectOid);
+        return organizationUserDao.countByProjectOidAndOrgUserState(projectOid, OrgUserState.Formal);
     }
 
     /**