You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.1 KiB
62 lines
2.1 KiB
package kr.re.etri.autoflow.service;
|
|
|
|
import kr.re.etri.autoflow.payload.response.UserProjectResponse;
|
|
import kr.re.etri.autoflow.payload.response.UserInfoResponse;
|
|
import kr.re.etri.autoflow.repository.UserProjectMapRepository;
|
|
import kr.re.etri.autoflow.repository.UserRepository;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class UserService {
|
|
|
|
private final UserRepository userRepository;
|
|
private final UserProjectMapRepository userProjectMapRepository;
|
|
|
|
/**
|
|
* 사용자 ID로 조회
|
|
*/
|
|
public Optional<UserInfoResponse> getUserById(Long id) {
|
|
return userRepository.findById(id)
|
|
.map(user -> new UserInfoResponse(
|
|
user.getId(),
|
|
user.getUsername(),
|
|
user.getEmail(),
|
|
user.getRoles().stream()
|
|
.map(role -> role.getName().name())
|
|
.toList()
|
|
));
|
|
}
|
|
|
|
/**
|
|
* 전체 사용자 조회
|
|
*/
|
|
public List<UserInfoResponse> getAllUsers() {
|
|
return userRepository.findAll().stream()
|
|
.map(user -> new UserInfoResponse(
|
|
user.getId(),
|
|
user.getUsername(),
|
|
user.getEmail(),
|
|
user.getRoles().stream()
|
|
.map(role -> role.getName().name())
|
|
.toList()
|
|
))
|
|
.toList();
|
|
}
|
|
|
|
public List<UserProjectResponse> getUserProjects(Long userId) {
|
|
return userProjectMapRepository.findAllByUserId(userId).stream()
|
|
.map(mapping -> new UserProjectResponse(
|
|
mapping.getProject().getId(),
|
|
mapping.getProject().getPrjNm(),
|
|
mapping.getPermissions()
|
|
))
|
|
.collect(Collectors.toList());
|
|
}
|
|
}
|