Skip to content

Commit

Permalink
Merge pull request #181 from Gam-develop/fix/#180-getDiscoveryUsers-r…
Browse files Browse the repository at this point in the history
…eturn

[FIX] 둘러보기-유저 모든 작품 조회로 수정
  • Loading branch information
GaHee99 authored Jun 4, 2024
2 parents 1182813 + ba7f008 commit 303e7e4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 23 deletions.
1 change: 1 addition & 0 deletions src/main/java/com/gam/api/domain/user/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public class User extends TimeStamped {
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
List<MagazineScrap> magazineScraps = new ArrayList<>();

@Where(clause = "is_active = true")
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
List<Work> works = new ArrayList<>();

Expand Down
35 changes: 12 additions & 23 deletions src/main/java/com/gam/api/domain/user/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -283,38 +283,27 @@ public WorkPortfolioGetResponseDTO getPortfolio(Long requestUserId, Long userId)
public List<UserDiscoveryResponseDTO> getDiscoveryUsers(Long userId, int[] tags){
List<UserScrapUserQueryDto> users;

if (tags.length == 0) {
if (tags.length == 0) { // user 정보 조회 태그가 걸린 경우와 아닌 경우
users = userRepository.findAllDiscoveryUser(userId); //TODO - user 관련 쿼리 잡기 , 동적 쿼리 필요,,
}
else {
users = userRepository.findAllDiscoveryUserWithTag(userId, tags);
}

return users.stream().map((dto) -> {
val firstWorkId = dto.user().getFirstWorkId();
Work firstWork;

if (firstWorkId == null && !dto.user().getActiveWorks().isEmpty()) { // User 권한 에러
firstWork = workRepository.findFirstByUserIdAndIsActiveOrderByCreatedAtDesc(dto.user().getId(), true)
.orElse(Work.builder()
.user(dto.user())
.photoUrl("해당하는 작업물을 찾을 수 없습니다.")
.detail("해당하는 작업물을 찾을 수 없습니다.")
.title("해당하는 작업물을 찾을 수 없습니다.")
.build());
dto.user().setUserStatus(UserStatus.NOT_PERMITTED);
}
else {
firstWork = dto.user().getActiveWorks().stream()
.filter(work -> dto.user().getFirstWorkId().equals(work.getId()))
.findFirst().get();
}
Map<User, Boolean> scrapMap = users.stream()
.collect(Collectors.toMap(UserScrapUserQueryDto::user, UserScrapUserQueryDto::scrapStatus));
// 모든 work를 가져와 최근 수정된 날짜 기준으로 정리
List<Work> workAll = users.stream()
.flatMap(dto -> dto.user().getWorks().stream())
.sorted(Comparator.comparing(Work::getModifiedAt).reversed())
.toList();

val userScrap = dto.scrapStatus();
return workAll.stream().map((work) -> {
val userScrap = scrapMap.get(work.getUser().getId());
if (Objects.isNull(userScrap)) {
return UserDiscoveryResponseDTO.of(dto.user(), false, firstWork);
return UserDiscoveryResponseDTO.of(work.getUser(), false, work);
}
return UserDiscoveryResponseDTO.of(dto.user(), userScrap, firstWork);
return UserDiscoveryResponseDTO.of(work.getUser(), userScrap, work);
}).collect(Collectors.toList());
}

Expand Down

0 comments on commit 303e7e4

Please sign in to comment.