Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import com.example.solidconnection.mentor.repository.MentorApplicationRepository;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.repository.UniversityRepository;
import com.example.solidconnection.university.domain.HostUniversity;
import com.example.solidconnection.university.repository.HostUniversityRepository;
import java.util.List;
import java.util.stream.IntStream;
import lombok.RequiredArgsConstructor;
Expand All @@ -29,7 +29,7 @@
public class AdminMentorApplicationService {

private final MentorApplicationRepository mentorApplicationRepository;
private final UniversityRepository universityRepository;
private final HostUniversityRepository hostUniversityRepository;
private final SiteUserRepository siteUserRepository;

@Transactional(readOnly = true)
Expand Down Expand Up @@ -82,7 +82,7 @@ public void assignUniversity(

mentorApplication.validateCanAssignUniversity();

University university = universityRepository.getUniversityById(universityId);
HostUniversity university = hostUniversityRepository.getHostUniversityById(universityId);

mentorApplication.assignUniversity(university.getId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import com.example.solidconnection.mentor.domain.Mentor;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.List;

Expand All @@ -27,7 +27,7 @@ public record MatchedMentorResponse(
) {

public static MatchedMentorResponse of(Mentor mentor, SiteUser mentorUser,
University university, boolean isApplied, Long roomId,
HostUniversity university, boolean isApplied, Long roomId,
String termName
) {
return new MatchedMentorResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.example.solidconnection.mentor.domain.Mentor;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import java.util.List;

public record MentorDetailResponse(
Expand All @@ -21,7 +21,7 @@ public record MentorDetailResponse(
) {

public static MentorDetailResponse of(Mentor mentor, SiteUser mentorUser,
University university, boolean isApplied,
HostUniversity university, boolean isApplied,
String termName
) {
return new MentorDetailResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.example.solidconnection.mentor.domain.Mentor;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import java.util.List;

public record MentorMyPageResponse(
Expand All @@ -19,7 +19,7 @@ public record MentorMyPageResponse(
List<ChannelResponse> channels
) {

public static MentorMyPageResponse of(Mentor mentor, SiteUser siteUser, University university, String termName) {
public static MentorMyPageResponse of(Mentor mentor, SiteUser siteUser, HostUniversity university, String termName) {
return new MentorMyPageResponse(
mentor.getId(),
siteUser.getProfileImageUrl(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.example.solidconnection.mentor.domain.Mentor;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import java.util.List;

public record MentorPreviewResponse(
Expand All @@ -20,7 +20,7 @@ public record MentorPreviewResponse(
) {

public static MentorPreviewResponse of(Mentor mentor, SiteUser mentorUser,
University university, boolean isApplied,
HostUniversity university, boolean isApplied,
String termName
) {
return new MentorPreviewResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.term.domain.Term;
import com.example.solidconnection.term.repository.TermRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.repository.UniversityRepository;
import com.example.solidconnection.university.domain.HostUniversity;
import com.example.solidconnection.university.repository.HostUniversityRepository;
import java.util.Collections;
import java.util.List;
import java.util.Map;
Expand All @@ -26,7 +26,7 @@ public class MentorBatchQueryRepository { // 연관관계가 설정되지 않은

private final SiteUserRepository siteUserRepository;
private final MentoringRepository mentoringRepository;
private final UniversityRepository universityRepository;
private final HostUniversityRepository hostUniversityRepository;
private final TermRepository termRepository;

public Map<Long, SiteUser> getMentorIdToSiteUserMap(List<Mentor> mentors) {
Expand All @@ -47,16 +47,16 @@ public Map<Long, SiteUser> getMentorIdToSiteUserMap(List<Mentor> mentors) {
));
}

public Map<Long, University> getMentorIdToUniversityMap(List<Mentor> mentors) {
public Map<Long, HostUniversity> getMentorIdToUniversityMap(List<Mentor> mentors) {
List<Long> universityIds = mentors.stream().map(Mentor::getUniversityId).distinct().toList();
List<University> universities = universityRepository.findAllById(universityIds);
Map<Long, University> universityIdToUniversityMap = universities.stream()
.collect(Collectors.toMap(University::getId, Function.identity()));
List<HostUniversity> universities = hostUniversityRepository.findAllById(universityIds);
Map<Long, HostUniversity> universityIdToUniversityMap = universities.stream()
.collect(Collectors.toMap(HostUniversity::getId, Function.identity()));

return mentors.stream().collect(Collectors.toMap(
Mentor::getId,
mentor -> {
University university = universityIdToUniversityMap.get(mentor.getUniversityId());
HostUniversity university = universityIdToUniversityMap.get(mentor.getUniversityId());
if (university == null) { // mentor.university_id에 해당하는 대학이 없으면 정합성 문제가 발생한 것
throw new CustomException(DATA_INTEGRITY_VIOLATION, "mentor.university_id 에 해당하는 university 존재하지 않음");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public interface MentorRepository extends JpaRepository<Mentor, Long> {

@Query("""
SELECT m FROM Mentor m
JOIN University u ON m.universityId = u.id
JOIN HostUniversity u ON m.universityId = u.id
WHERE u.region = :region
""")
Slice<Mentor> findAllByRegion(@Param("region") Region region, Pageable pageable);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import static com.example.solidconnection.location.region.domain.QRegion.region;
import static com.example.solidconnection.mentor.domain.QMentorApplication.mentorApplication;
import static com.example.solidconnection.siteuser.domain.QSiteUser.siteUser;
import static com.example.solidconnection.university.domain.QUniversity.university;
import static com.example.solidconnection.university.domain.QHostUniversity.hostUniversity;
import static org.springframework.util.StringUtils.hasText;

import com.example.solidconnection.admin.dto.MentorApplicationResponse;
Expand Down Expand Up @@ -48,7 +48,7 @@ public class MentorApplicationFilterRepositoryImpl implements MentorApplicationF
mentorApplication.id,
region.koreanName,
country.koreanName,
university.koreanName,
hostUniversity.koreanName,
mentorApplication.universitySelectType,
mentorApplication.mentorProofUrl,
mentorApplication.mentorApplicationStatus,
Expand Down Expand Up @@ -77,9 +77,9 @@ public Page<MentorApplicationSearchResponse> searchMentorApplications(MentorAppl
.select(MENTOR_APPLICATION_SEARCH_RESPONSE_PROJECTION)
.from(mentorApplication)
.join(siteUser).on(mentorApplication.siteUserId.eq(siteUser.id))
.leftJoin(university).on(mentorApplication.universityId.eq(university.id))
.leftJoin(region).on(university.region.eq(region))
.leftJoin(country).on(university.country.eq(country))
.leftJoin(hostUniversity).on(mentorApplication.universityId.eq(hostUniversity.id))
.leftJoin(region).on(hostUniversity.region.eq(region))
.leftJoin(country).on(hostUniversity.country.eq(country))
.where(
verifyMentorStatusEq(condition.mentorApplicationStatus()),
keywordContains(condition.keyword()),
Expand All @@ -105,9 +105,9 @@ private JPAQuery<Long> createCountQuery(MentorApplicationSearchCondition conditi

if (hasText(keyword)) {
query.join(siteUser).on(mentorApplication.siteUserId.eq(siteUser.id))
.leftJoin(university).on(mentorApplication.universityId.eq(university.id))
.leftJoin(region).on(university.region.eq(region))
.leftJoin(country).on(university.country.eq(country));
.leftJoin(hostUniversity).on(mentorApplication.universityId.eq(hostUniversity.id))
.leftJoin(region).on(hostUniversity.region.eq(region))
.leftJoin(country).on(hostUniversity.country.eq(country));
}

return query.where(
Expand All @@ -128,7 +128,7 @@ private BooleanExpression keywordContains(String keyword) {
}

return siteUser.nickname.containsIgnoreCase(keyword)
.or(university.koreanName.containsIgnoreCase(keyword))
.or(hostUniversity.koreanName.containsIgnoreCase(keyword))
.or(region.koreanName.containsIgnoreCase(keyword))
.or(country.koreanName.containsIgnoreCase(keyword));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.term.domain.Term;
import com.example.solidconnection.term.repository.TermRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.repository.UniversityRepository;
import com.example.solidconnection.university.domain.HostUniversity;
import com.example.solidconnection.university.repository.HostUniversityRepository;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
Expand All @@ -40,7 +40,7 @@ public class MentorMyPageService {

private final MentorRepository mentorRepository;
private final SiteUserRepository siteUserRepository;
private final UniversityRepository universityRepository;
private final HostUniversityRepository hostUniversityRepository;
private final TermRepository termRepository;
private final MentorApplicationRepository mentorApplicationRepository;

Expand All @@ -52,7 +52,7 @@ public MentorMyPageResponse getMentorMyPage(long siteUserId) {
.orElseThrow(() -> new CustomException(MENTOR_NOT_FOUND));
Term term = termRepository.findById(mentor.getTermId())
.orElseThrow(() -> new CustomException(TERM_NOT_FOUND));
University university = universityRepository.findById(mentor.getUniversityId())
HostUniversity university = hostUniversityRepository.findById(mentor.getUniversityId())
.orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND));
return MentorMyPageResponse.of(mentor, siteUser, university, term.getName());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.term.domain.Term;
import com.example.solidconnection.term.repository.TermRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.repository.UniversityRepository;
import com.example.solidconnection.university.domain.HostUniversity;
import com.example.solidconnection.university.repository.HostUniversityRepository;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand All @@ -38,15 +38,15 @@ public class MentorQueryService {
private final MentoringRepository mentoringRepository;
private final SiteUserRepository siteUserRepository;
private final MentorBatchQueryRepository mentorBatchQueryRepository;
private final UniversityRepository universityRepository;
private final HostUniversityRepository hostUniversityRepository;
private final RegionRepository regionRepository;
private final TermRepository termRepository;

@Transactional(readOnly = true)
public MentorDetailResponse getMentorDetails(long mentorId, long currentUserId) {
Mentor mentor = mentorRepository.findById(mentorId)
.orElseThrow(() -> new CustomException(MENTOR_NOT_FOUND));
University university = universityRepository.findById(mentor.getUniversityId())
HostUniversity university = hostUniversityRepository.findById(mentor.getUniversityId())
.orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND));
SiteUser mentorUser = siteUserRepository.findById(mentor.getSiteUserId())
.orElseThrow(() -> new CustomException(MENTOR_NOT_FOUND));
Expand Down Expand Up @@ -77,14 +77,14 @@ private Slice<Mentor> filterMentorsByRegion(String regionKoreanName, Pageable pa

private List<MentorPreviewResponse> buildMentorPreviewsWithBatchQuery(List<Mentor> mentors, long currentUserId) {
Map<Long, SiteUser> mentorIdToSiteUser = mentorBatchQueryRepository.getMentorIdToSiteUserMap(mentors);
Map<Long, University> mentorIdToUniversity = mentorBatchQueryRepository.getMentorIdToUniversityMap(mentors);
Map<Long, HostUniversity> mentorIdToUniversity = mentorBatchQueryRepository.getMentorIdToUniversityMap(mentors);
Map<Long, Boolean> mentorIdToIsApplied = mentorBatchQueryRepository.getMentorIdToIsApplied(mentors, currentUserId);
Map<Long, String> termIdToName = mentorBatchQueryRepository.getTermIdToNameMap(mentors);

List<MentorPreviewResponse> mentorPreviews = new ArrayList<>();
for (Mentor mentor : mentors) {
SiteUser mentorUser = mentorIdToSiteUser.get(mentor.getId());
University university = mentorIdToUniversity.get(mentor.getId());
HostUniversity university = mentorIdToUniversity.get(mentor.getId());
boolean isApplied = mentorIdToIsApplied.get(mentor.getId());
String termName = termIdToName.get(mentor.getTermId());
MentorPreviewResponse response = MentorPreviewResponse.of(mentor, mentorUser, university, isApplied, termName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import com.example.solidconnection.mentor.repository.MentoringRepository;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -58,7 +58,7 @@ public SliceResponse<MatchedMentorResponse> getMatchedMentors(long siteUserId, P

private List<MatchedMentorResponse> buildMatchedMentorsWithBatchQuery(List<Mentor> mentors, long currentUserId) {
Map<Long, SiteUser> mentorIdToSiteUser = mentorBatchQueryRepository.getMentorIdToSiteUserMap(mentors);
Map<Long, University> mentorIdToUniversity = mentorBatchQueryRepository.getMentorIdToUniversityMap(mentors);
Map<Long, HostUniversity> mentorIdToUniversity = mentorBatchQueryRepository.getMentorIdToUniversityMap(mentors);
Map<Long, Boolean> mentorIdToIsApplied = mentorBatchQueryRepository.getMentorIdToIsApplied(mentors, currentUserId);
Map<Long, String> termIdToName = mentorBatchQueryRepository.getTermIdToNameMap(mentors);

Expand All @@ -67,7 +67,7 @@ private List<MatchedMentorResponse> buildMatchedMentorsWithBatchQuery(List<Mento
List<MatchedMentorResponse> matchedMentors = new ArrayList<>();
for (Mentor mentor : mentors) {
SiteUser mentorUser = mentorIdToSiteUser.get(mentor.getId());
University university = mentorIdToUniversity.get(mentor.getId());
HostUniversity university = mentorIdToUniversity.get(mentor.getId());
boolean isApplied = mentorIdToIsApplied.get(mentor.getId());
Long roomId = mentorIdToRoomId.get(mentor.getId());
String termName = termIdToName.get(mentor.getTermId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
import com.example.solidconnection.siteuser.dto.MyPageResponse;
import com.example.solidconnection.siteuser.dto.PasswordUpdateRequest;
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.university.domain.University;
import com.example.solidconnection.university.domain.HostUniversity;
import com.example.solidconnection.university.repository.LikedUnivApplyInfoRepository;
import com.example.solidconnection.university.repository.UniversityRepository;
import com.example.solidconnection.university.repository.HostUniversityRepository;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
Expand All @@ -48,7 +48,7 @@ public class MyPageService {
private final LikedUnivApplyInfoRepository likedUnivApplyInfoRepository;
private final CountryRepository countryRepository;
private final MentorRepository mentorRepository;
private final UniversityRepository universityRepository;
private final HostUniversityRepository hostUniversityRepository;
private final S3Service s3Service;
private final InterestedCountryService interestedCountryService;
private final InterestedRegionService interestedRegionService;
Expand All @@ -69,7 +69,7 @@ public MyPageResponse getMyPageInfo(long siteUserId) {
} else if (siteUser.getRole() == Role.MENTOR) {
Mentor mentor = mentorRepository.findBySiteUserId(siteUser.getId())
.orElseThrow(() -> new CustomException(MENTOR_NOT_FOUND));
University university = universityRepository.findById(mentor.getUniversityId())
HostUniversity university = hostUniversityRepository.findById(mentor.getUniversityId())
.orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND));
universityKoreanName = university.getKoreanName();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.solidconnection.university.domain;

import com.example.solidconnection.common.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
public class HomeUniversity extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, unique = true, length = 100)
private String name;
}
Loading
Loading