首页 > 解决方案 > 如何获取 Liferay 6.2 站点的用户列表

问题描述

我正在尝试获取 Liferay 6.2 站点的用户列表,但我似乎找不到这样做的方法。我有 groupId,我知道这是正确的,因为我可以获取文档,但查询只能获取直接添加的用户,而不是继承的用户(例如来自组织的用户)。

我只是使用方法UserLocalService.getGroupUsers(groupId),然后遍历它们。如何获得所有用户(即与站点管理中的站点成员身份相同,但没有分页)?

更新

我有一个 Liferay 门户实例,它有几个具有关联站点的组织。组织 A 具有用户 1、2、3 等。组织 B 具有用户 4、5、6。他们具有相同的公司 ID(因为它们属于同一门户),但组 ID 不同。我只想要那些在 Org A 中的人(直接添加,已分配的任何用户组或组织的一部分)。该站点也可以是非组织站点(即分配的组织 A 和 B,但不是任何其他站点,例如新的组织 C),用于组织之间的文档共享。据我了解,所有站点在内部都称为组,与文档库一起工作。

标签: groovyliferayliferay-6.2

解决方案


您可以进行两次调用来获取站点和组织用户,然后调用一次来获取分配的组织,遍历它们并获取他们的用户。然后结合所有结果:

HashSet<User> groupAndOrganizationUsersSet = new LinkedHashSet<>();

groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getGroupUsers(groupId));
groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getOrganizationUsers(
        GroupLocalServiceUtil.getGroup(groupId).getOrganizationId()));

for (Organization organization : 
        OrganizationLocalServiceUtil.getGroupOrganizations(groupId)) {

    groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getOrganizationUsers(
            organization.getOrganizationId()));
}

List<User> groupAndOrganizationUsers = new ArrayList<>(groupAndOrganizationUsersSet);

推荐阅读