fix:角色列表
This commit is contained in:
@@ -34,6 +34,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -129,12 +130,14 @@ public class AuthAdminServiceImpl implements AuthAdminService {
|
||||
String normalizedRoleFilter = normalizeRoleFilter(roleCode, rolesByCode);
|
||||
String normalizedStatusFilter = normalizeStatusFilter(status);
|
||||
List<AuthUserListItemResponse> filteredItems = accounts.stream()
|
||||
.map(account -> toUserListItem(account, rolesByCode.get(account.getRoleCode())))
|
||||
.flatMap(account -> toUserListItems(account, rolesByCode.get(account.getRoleCode())))
|
||||
.filter(item -> normalizedRoleFilter == null || normalizedRoleFilter.equals(item.getRoleCode()))
|
||||
.filter(item -> normalizedStatusFilter == null || normalizedStatusFilter.equals(item.getStatus()))
|
||||
.sorted(Comparator
|
||||
.comparingInt((AuthUserListItemResponse item) -> roleOrder(item.getRoleCode()))
|
||||
.thenComparing(AuthUserListItemResponse::getUid, Comparator.nullsLast(Integer::compareTo)))
|
||||
.thenComparing(AuthUserListItemResponse::getUid, Comparator.nullsLast(Integer::compareTo))
|
||||
.thenComparing(AuthUserListItemResponse::getUkeyBindingId, Comparator.nullsLast(Long::compareTo))
|
||||
.thenComparing(AuthUserListItemResponse::getUkeySerialNo, Comparator.nullsLast(String::compareTo)))
|
||||
.toList();
|
||||
|
||||
int fromIndex = Math.min((normalizedPage - 1) * normalizedPageSize, filteredItems.size());
|
||||
@@ -171,14 +174,18 @@ public class AuthAdminServiceImpl implements AuthAdminService {
|
||||
authFullAccountRepository.update(account);
|
||||
}
|
||||
|
||||
private AuthUserListItemResponse toUserListItem(AuthFullAccountEntity account, RoleAccountEntity role) {
|
||||
List<String> ukeySerials = roleUkeyBindingRepository
|
||||
private Stream<AuthUserListItemResponse> toUserListItems(AuthFullAccountEntity account, RoleAccountEntity role) {
|
||||
List<RoleUkeyBindingEntity> bindings = roleUkeyBindingRepository
|
||||
.findActiveByRoleCodeAndUid(account.getRoleCode(), account.getUid())
|
||||
.stream()
|
||||
.map(RoleUkeyBindingEntity::getUkeySerial)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.toList();
|
||||
if (bindings.isEmpty()) {
|
||||
return Stream.of(toUserListItem(account, role, null));
|
||||
}
|
||||
return bindings.stream().map(binding -> toUserListItem(account, role, binding));
|
||||
}
|
||||
|
||||
private AuthUserListItemResponse toUserListItem(AuthFullAccountEntity account, RoleAccountEntity role, RoleUkeyBindingEntity binding) {
|
||||
String effectiveStatus = effectiveStatus(role, account);
|
||||
AuthUserListItemResponse item = new AuthUserListItemResponse();
|
||||
item.setRoleCode(account.getRoleCode());
|
||||
@@ -191,8 +198,8 @@ public class AuthAdminServiceImpl implements AuthAdminService {
|
||||
item.setLastLoginAt(account.getLastLoginAt());
|
||||
item.setPasswordChangedAt(account.getPasswordChangedAt());
|
||||
item.setFailedCount(account.getFailedCount() == null ? 0 : account.getFailedCount());
|
||||
item.setUkeySerials(ukeySerials);
|
||||
item.setUkeySerialNo(String.join(",", ukeySerials));
|
||||
item.setUkeyBindingId(binding == null ? null : binding.getId());
|
||||
item.setUkeySerialNo(binding == null ? null : binding.getUkeySerial());
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user