package jnpf.dmsPermission; import jnpf.base.UserInfo; import jnpf.dmsEntity.permission.model.DmsSubjectSet; import jnpf.permission.OrganizeApi; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.Collections; import java.util.List; @Component @RequiredArgsConstructor public class DmsSubjectResolver { private final OrganizeApi organizeApi; public DmsSubjectSet resolve(UserInfo user) { DmsSubjectSet subjects = new DmsSubjectSet(); subjects.setUserId(user.getUserId()); subjects.getDirectOrgIds().addAll(orEmpty(user.getOrganizeIds())); subjects.getPositionIds().addAll(orEmpty(user.getPositionIds())); subjects.getRoleIds().addAll(orEmpty(user.getRoleIds())); subjects.getPlatformGroupIds().addAll(orEmpty(user.getGroupIds())); subjects.getAncestorOrgIds().addAll(subjects.getDirectOrgIds()); for (String orgId : subjects.getDirectOrgIds()) { List ancestors = organizeApi.upWardRecursion(orgId); if (ancestors != null) { subjects.getAncestorOrgIds().addAll(ancestors); } } return subjects; } private List orEmpty(List values) { return values == null ? Collections.emptyList() : values; } }