Commit 32f9272a by gdj

fix user delete

parent 74962590
...@@ -84,7 +84,8 @@ public class UserOrgServiceImpl extends ServiceImpl<IUserOrgMapper, UserOrgEntit ...@@ -84,7 +84,8 @@ public class UserOrgServiceImpl extends ServiceImpl<IUserOrgMapper, UserOrgEntit
// entity.setUpdateTime(System.currentTimeMillis()); // entity.setUpdateTime(System.currentTimeMillis());
return updateById(entity); return updateById(entity);
} }
return false; // 已存在且启用状态 // return false; // 已存在且启用状态
throw new RuntimeException("user had join the org!");
} }
// 创建新关联 // 创建新关联
......
...@@ -421,31 +421,65 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem ...@@ -421,31 +421,65 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
if (userEntity.getRoleType() == RoleTypeEnum.SYS_ADMIN.getVal()) { if (userEntity.getRoleType() == RoleTypeEnum.SYS_ADMIN.getVal()) {
aboveSysAdminRoleAndThrowError(); aboveSysAdminRoleAndThrowError();
} }
// if (userEntity.getUserType() == UserTypeEnum.WEB.getVal()) { int delete;
// throw new RuntimeException("Failed to delete admin"); if (aboveSysAdminRole()) {
// } // 超级管理员 直接删除用户
// 然后 假如是删除管理员 不能删除 项目管理员 this.removeById(userEntity.getId());
if (userEntity.getRoleType() == RoleTypeEnum.ORG_ADMIN.getVal()) {
throw new RuntimeException("can't delete workspace project admin"); // 删除相关用户组织表
} LambdaQueryWrapper<UserOrgEntity> delUserOrgQueryWrapper = new LambdaQueryWrapper<>();
if (userEntity.getRoleType() == RoleTypeEnum.ADMIN.getVal()) { delUserOrgQueryWrapper.eq(UserOrgEntity::getUserId, userEntity.getUserId());
LambdaQueryWrapper<WorkspaceEntity> workspaceWrapper = new LambdaQueryWrapper<>(); delUserOrgQueryWrapper.eq(UserOrgEntity::getWorkspaceId, userEntity.getWorkspaceId());
workspaceWrapper.eq(WorkspaceEntity::getAdminUserId, userEntity.getUserId()); boolean userOrgDelRes = userOrgService.remove(delUserOrgQueryWrapper);
List<WorkspaceEntity> workspaceEntities = workspaceService.list(workspaceWrapper);
if (!CollectionUtils.isEmpty(workspaceEntities)) {
throw new RuntimeException("can't delete workspace admin");
}
}
int delete = mapper.delete(queryWrapper); } else {
// 普通管理员 删除用户,只删用户当前组织联系,当唯一关联才删用户
// 删除相关用户组织表 // 查询 组织关系
LambdaQueryWrapper<UserOrgEntity> userOrgQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<UserOrgEntity> userOrgQueryWrapper = new LambdaQueryWrapper<>();
userOrgQueryWrapper.eq(UserOrgEntity::getUserId, userEntity.getUserId()); userOrgQueryWrapper.eq(UserOrgEntity::getUserId, userEntity.getUserId());
userOrgQueryWrapper.eq(UserOrgEntity::getWorkspaceId, userEntity.getWorkspaceId()); userOrgQueryWrapper.eq(UserOrgEntity::getWorkspaceId, userEntity.getWorkspaceId());
boolean userOrgDelRes = userOrgService.remove(userOrgQueryWrapper); List<UserOrgEntity> userOrgEntities = userOrgService.list(userOrgQueryWrapper);
return delete > 0; // 没有组织关联 直接删除
if (CollectionUtils.isEmpty(userOrgEntities)) {
delete = mapper.delete(queryWrapper);
}
// 判断是否 有其他组织关系
List<UserOrgEntity> curUserOrgList = userOrgEntities.stream().filter(x -> getOrgId().equals(x.getOrgId())).collect(Collectors.toList());
List<UserOrgEntity> otherUserOrgList = userOrgEntities.stream().filter(x -> !getOrgId().equals(x.getOrgId())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(curUserOrgList)) {
UserOrgEntity userOrgEntity = curUserOrgList.get(0);
// if (userEntity.getUserType() == UserTypeEnum.WEB.getVal()) {
// throw new RuntimeException("Failed to delete admin");
// }
// 然后 假如是删除管理员 不能删除 项目管理员
if (userEntity.getRoleType() == RoleTypeEnum.ORG_ADMIN.getVal()) {
throw new RuntimeException("can't delete workspace project admin");
}
if (userEntity.getRoleType() == RoleTypeEnum.ADMIN.getVal()) {
LambdaQueryWrapper<WorkspaceEntity> workspaceWrapper = new LambdaQueryWrapper<>();
workspaceWrapper.eq(WorkspaceEntity::getAdminUserId, userEntity.getUserId());
List<WorkspaceEntity> workspaceEntities = workspaceService.list(workspaceWrapper);
if (!CollectionUtils.isEmpty(workspaceEntities)) {
throw new RuntimeException("can't delete workspace admin");
}
}
// 删除相关用户组织表
LambdaQueryWrapper<UserOrgEntity> delUserOrgQueryWrapper = new LambdaQueryWrapper<>();
delUserOrgQueryWrapper.eq(UserOrgEntity::getUserId, userEntity.getUserId());
delUserOrgQueryWrapper.eq(UserOrgEntity::getWorkspaceId, userEntity.getWorkspaceId());
delUserOrgQueryWrapper.eq(UserOrgEntity::getOrgId, getOrgId());
boolean userOrgDelRes = userOrgService.remove(delUserOrgQueryWrapper);
}
// 没有其他组织 则删除用户
if (CollectionUtils.isEmpty(otherUserOrgList)) {
delete = mapper.delete(queryWrapper);
}
}
return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment