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.
autoflow-server-mgmt/src/main/java/kr/re/etri/autoflow/service/UserService.java

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