如何获得 Liferay 6.2 站点的用户列表

How do you get a list of users for a Liferay 6.2 site

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

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

更新

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

也许这个

UserLocalServiceUtil.getCompanyUsers(long companyId, int start, int end)

对于标准的非分页结果(您知道风险)使用

UserLocalServiceUtil.getCompanyUsers(PortalUtil.getDefaultCompanyId(), -1, -1)

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

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);