Как получить список пользователей для сайта Liferay 6.2 - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь получить список пользователей для сайта Liferay 6.2, но я не могу найти способ сделать это. У меня есть groupId, который, я знаю, правильный, так как я могу получить документы, но запрос получает только напрямую добавленных пользователей, а не унаследованных (например, от организации).

Я просто использую метод UserLocalService.getGroupUsers(groupId), затем переберите их. Как я могу получить всех пользователей (т. Е. Таких же, как членство на сайте в администрировании сайта, но без подкачки страниц)?

обновление

У меня есть экземпляр портала Liferay, онимеет несколько организаций со связанными сайтами. В организации A есть пользователи 1, 2, 3 и т. Д. В организации B есть пользователи 4, 5, 6. У них одинаковые идентификаторы компании (поскольку они являются частью одного и того же портала), но разные идентификаторы группы. Я хочу только тех, кто находится в Org A (добавлено непосредственно, часть любых групп пользователей или организаций, которые были назначены). Сайт также может быть сайтом, не принадлежащим организации (т. Е. Назначенные организации A и B, но не любые другие, например, новая организация C), для обмена документами между организациями. Насколько я понимаю, все сайты внутренне известны как группы, от работы с библиотеками документов.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Вы можете сделать два вызова, чтобы получить сайт и пользователей организации, затем один вызов, чтобы получить назначенные организации, выполнить итерацию по ним и получить их пользователей. Затем объедините все результаты:

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);
0 голосов
/ 18 октября 2019

Может быть, это

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

для стандартного результата без нумерации страниц (вы знаете риск) используйте

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