Skip to content

Commit

Permalink
Merge pull request #192 from teamterning/develop
Browse files Browse the repository at this point in the history
[🔥 !hotfix] 필터링 정보가 모두 null이면 전체 공고가 보이도록 수정
  • Loading branch information
junggyo1020 authored Jan 5, 2025
2 parents a89de38 + ee83ba1 commit 1d121ab
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ public interface InternshipRepositoryCustom {
Page<InternshipAnnouncement> searchInternshipAnnouncement(String keyword, String sortBy, Pageable pageable);

Page<Tuple> findFilteredInternshipsWithScrapInfo(User user, String sortBy, Pageable pageable);

Page<Tuple> findAllInternshipsWithScrapInfo(User user, String sortBy, Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,27 @@ private OrderSpecifier createOrderSpecifier(String sortBy) {
};
}

@Override
public Page<Tuple> findAllInternshipsWithScrapInfo(User user, String sortBy, Pageable pageable) {
List<Tuple> content = jpaQueryFactory
.select(internshipAnnouncement, scrap.id, scrap.color)
.from(internshipAnnouncement)
.leftJoin(internshipAnnouncement.scraps, scrap).on(scrap.user.eq(user))
.orderBy(
sortAnnouncementsByDeadline().asc(),
getSortOrder(sortBy)
)
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();

JPAQuery<Long> countQuery = jpaQueryFactory
.select(internshipAnnouncement.count())
.from(internshipAnnouncement);

return PageableExecutionUtils.getPage(content, pageable, countQuery::fetchOne);
}

@Override
public Page<Tuple> findFilteredInternshipsWithScrapInfo(User user, String sortBy, Pageable pageable) {
List<Tuple> content = jpaQueryFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.terning.terningserver.domain.Filter;
import org.terning.terningserver.domain.InternshipAnnouncement;
import org.terning.terningserver.domain.User;
import org.terning.terningserver.domain.enums.Color;
import org.terning.terningserver.domain.enums.JobType;
import org.terning.terningserver.dto.user.response.HomeAnnouncementsResponseDto;
import org.terning.terningserver.dto.user.response.HomeResponseDto;
import org.terning.terningserver.exception.CustomException;
Expand All @@ -32,19 +34,19 @@ public class HomeServiceImpl implements HomeService {
@Override
public HomeAnnouncementsResponseDto getAnnouncements(Long userId, String sortBy, Pageable pageable) {
User user = getUserById(userId);

if (user.getFilter() == null) {
return createEmptyResponse();
Filter filter = user.getFilter();
Page<Tuple> pagedAnnouncements;
if (filter == null || isDefaultFilter(filter)) {
pagedAnnouncements = internshipRepository.findAllInternshipsWithScrapInfo(user, sortBy, pageable);
} else {
pagedAnnouncements = internshipRepository.findFilteredInternshipsWithScrapInfo(user, sortBy, pageable);
}

Page<Tuple> pagedAnnouncements = internshipRepository.findFilteredInternshipsWithScrapInfo(user, sortBy, pageable);

if (pagedAnnouncements.isEmpty()) {
return createEmptyResponse();
}

List<HomeResponseDto> responseDtos = mapToHomeResponseDtos(pagedAnnouncements);

return createResponse(pagedAnnouncements, responseDtos);
}

Expand All @@ -53,6 +55,14 @@ private User getUserById(Long userId) {
.orElseThrow(() -> new CustomException(ErrorMessage.NOT_FOUND_USER_EXCEPTION));
}

private boolean isDefaultFilter(Filter filter) {
return filter.getJobType() == JobType.TOTAL
&& filter.getGrade() == null
&& filter.getWorkingPeriod() == null
&& filter.getStartYear() == 0
&& filter.getStartMonth() == 0;
}

private HomeAnnouncementsResponseDto createEmptyResponse() {
return HomeAnnouncementsResponseDto.of(0, 0, false, List.of());
}
Expand Down

0 comments on commit 1d121ab

Please sign in to comment.