Skip to content

Commit 2c5851e

Browse files
authored
refactor: '대학교'와 '대학 지원 정보' 용어를 구분하도록 (#346)
* refactor: univ-apply-info로 URI 변경 * refactor: UnivApplyInfo 사용하도록 컨트롤러 함수 변경 * refactor: UnivApplyInfo 사용하도록 recommendService 변경 * refactor: UnivApplyInfo 사용하도록 레포지토리 이름 변경 * refactor: JPQL alias 변경 * refactor: JPA 표준에 맞게 함수 이름 변경 * refactor: UnivApplyInfo 사용하도록 레포지토리 변경 * refactor: JPA 표준에 맞게 함수 이름 변경 * refactor: UnivApplyInfo 반영하도록 JPQL 별칭 변경 * refactor: 잘못되어있던 상속 관계 변경 - University와 UniversityInformationForApply의 혼용으로 발생한 문제가 있었다. - UnivApplyInfo 를 적용하며 발견했고, 바로잡았다. * refactor: 좋아요한 대학 도메인 이름 변경 - LikedUniversity -> LikedUnivApplyInfo * refactor: UnivApplyInfo 사용하도록 likeService 변경 * refactor: LikedUnivApplyInfoRepository 패키지 이동 - siteuser 하위 -> university 하위 * refactor: UnivApplyInfo 사용하도록 Dto 이름 변경 - 프론트와 협의가 되어야 하는 요청/응답의 json에 해당하는 이름들을 백엔드가 임의로 바꾸는 것은 바람직하지 않다. - issue를 만들고, todo로 표시하고 넘어간다. - 프론트와 협의 이후, 별도의 PR에서 수정한다. * refactor: UnivApplyInfo 사용하도록 테스트 코드 변경 * refactor: UNIV_APPLY_INFO 사용하도록 ErrorCode 변경 * refactor: 지원자 응답 Dto 이름 변경 - Application 도메인의 의미상, '대학에 지원한다'는 내용이 포함되어있다. - 코드 전체적으로 위 내용의 합의되어있기도 하다. (application 앞에 University를 붙이지 않음) - 따라서 University나 UnivApplyInfo이 없는 이름으로 변경한다. * refactor: UnivApplyInfo 사용하도록 applicationService 변경 * refactor: JPA 표준에 맞게 함수 이름 변경 * chore: 추후 수정해야 할 부분 표시 * refactor: UnivApplyInfo 사용하도록 Dto필드명 변경 - JsonProperties로 Json key는 유지하되, 필드와 인자명은 코드 전체에서 통일되게한다. * refactor: 이름변경 누락된 부분 수정 * refactor: 테스트 코드에서 이름변경 누락된 부분 수정 * refactor: UnivApplyInfo 사용하도록 MyPageService 변경 * refactor: 사용되지 않는 함수 삭제
1 parent 45430c9 commit 2c5851e

50 files changed

Lines changed: 697 additions & 705 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/com/example/solidconnection/application/dto/UniversityApplicantsResponse.java renamed to src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
import java.util.List;
88

9-
public record UniversityApplicantsResponse(
9+
public record ApplicantsResponse(
1010
String koreanName,
1111
int studentCapacity,
1212
String region,
1313
String country,
1414
List<ApplicantResponse> applicants) {
15-
public static UniversityApplicantsResponse of(UnivApplyInfo univApplyInfo, List<Application> applications, SiteUser siteUser) {
16-
return new UniversityApplicantsResponse(
15+
public static ApplicantsResponse of(UnivApplyInfo univApplyInfo, List<Application> applications, SiteUser siteUser) {
16+
return new ApplicantsResponse(
1717
univApplyInfo.getKoreanName(),
1818
univApplyInfo.getStudentCapacity(),
1919
univApplyInfo.getUniversity().getRegion().getKoreanName(),

src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44

55
public record ApplicationsResponse(
6-
List<UniversityApplicantsResponse> firstChoice,
7-
List<UniversityApplicantsResponse> secondChoice,
8-
List<UniversityApplicantsResponse> thirdChoice) {
6+
List<ApplicantsResponse> firstChoice,
7+
List<ApplicantsResponse> secondChoice,
8+
List<ApplicantsResponse> thirdChoice) {
99
}

src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.solidconnection.application.dto;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import jakarta.validation.Valid;
45
import jakarta.validation.constraints.NotNull;
56

@@ -12,6 +13,7 @@ public record ApplyRequest(
1213
Long languageTestScoreId,
1314

1415
@Valid
15-
UniversityChoiceRequest universityChoiceRequest
16+
@JsonProperty("universityChoiceRequest")
17+
UnivApplyInfoChoiceRequest univApplyInfoChoiceRequest
1618
) {
1719
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.example.solidconnection.application.dto;
2+
3+
import com.example.solidconnection.university.dto.validation.ValidUnivApplyInfoChoice;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
@ValidUnivApplyInfoChoice
7+
public record UnivApplyInfoChoiceRequest(
8+
9+
@JsonProperty("firstChoiceUniversityId")
10+
Long firstChoiceUnivApplyInfoId,
11+
12+
@JsonProperty("secondChoiceUniversityId")
13+
Long secondChoiceUnivApplyInfoId,
14+
15+
@JsonProperty("thirdChoiceUniversityId")
16+
Long thirdChoiceUnivApplyInfoId) {
17+
}

src/main/java/com/example/solidconnection/application/dto/UniversityChoiceRequest.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ public interface ApplicationRepository extends JpaRepository<Application, Long>
2323
SELECT a
2424
FROM Application a
2525
JOIN FETCH a.siteUser
26-
WHERE (a.firstChoiceUnivApplyInfoId IN :universityIds
27-
OR a.secondChoiceUnivApplyInfoId IN :universityIds
28-
OR a.thirdChoiceUnivApplyInfoId IN :universityIds)
26+
WHERE (a.firstChoiceUnivApplyInfoId IN :univApplyInfoIds
27+
OR a.secondChoiceUnivApplyInfoId IN :univApplyInfoIds
28+
OR a.thirdChoiceUnivApplyInfoId IN :univApplyInfoIds)
2929
AND a.verifyStatus = :status
3030
AND a.term = :term
3131
AND a.isDelete = false
3232
""")
33-
List<Application> findAllByUnivApplyInfoIds(@Param("universityIds") List<Long> universityIds, @Param("status") VerifyStatus status, @Param("term") String term);
33+
List<Application> findAllByUnivApplyInfoIds(@Param("univApplyInfoIds") List<Long> univApplyInfoIds, @Param("status") VerifyStatus status, @Param("term") String term);
3434

3535
@Query("""
3636
SELECT a

src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import com.example.solidconnection.application.domain.Application;
44
import com.example.solidconnection.application.domain.VerifyStatus;
55
import com.example.solidconnection.application.dto.ApplicationsResponse;
6-
import com.example.solidconnection.application.dto.UniversityApplicantsResponse;
6+
import com.example.solidconnection.application.dto.ApplicantsResponse;
77
import com.example.solidconnection.application.repository.ApplicationRepository;
88
import com.example.solidconnection.common.exception.CustomException;
99
import com.example.solidconnection.siteuser.domain.SiteUser;
1010
import com.example.solidconnection.university.domain.UnivApplyInfo;
11-
import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository;
12-
import com.example.solidconnection.university.repository.custom.UniversityFilterRepositoryImpl;
11+
import com.example.solidconnection.university.repository.UnivApplyInfoRepository;
12+
import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepositoryImpl;
1313
import lombok.RequiredArgsConstructor;
1414
import org.springframework.beans.factory.annotation.Value;
1515
import org.springframework.stereotype.Service;
@@ -31,8 +31,8 @@
3131
public class ApplicationQueryService {
3232

3333
private final ApplicationRepository applicationRepository;
34-
private final UniversityInfoForApplyRepository universityInfoForApplyRepository;
35-
private final UniversityFilterRepositoryImpl universityFilterRepository;
34+
private final UnivApplyInfoRepository univApplyInfoRepository;
35+
private final UnivApplyInfoFilterRepositoryImpl universityFilterRepository;
3636

3737
@Value("${university.term}")
3838
public String term;
@@ -41,7 +41,7 @@ public class ApplicationQueryService {
4141
@Transactional(readOnly = true)
4242
public ApplicationsResponse getApplicants(SiteUser siteUser, String regionCode, String keyword) {
4343
// 1. 대학 지원 정보 필터링 (regionCode, keyword)
44-
List<UnivApplyInfo> univApplyInfos = universityFilterRepository.findByRegionCodeAndKeywords(regionCode, List.of(keyword));
44+
List<UnivApplyInfo> univApplyInfos = universityFilterRepository.findAllByRegionCodeAndKeywords(regionCode, List.of(keyword));
4545
if (univApplyInfos.isEmpty()) {
4646
return new ApplicationsResponse(List.of(), List.of(), List.of());
4747
}
@@ -58,38 +58,38 @@ public ApplicationsResponse getApplicants(SiteUser siteUser, String regionCode,
5858
public ApplicationsResponse getApplicantsByUserApplications(SiteUser siteUser) {
5959
Application userLatestApplication = applicationRepository.getApplicationBySiteUserAndTerm(siteUser, term);
6060

61-
List<Long> universityInfoForApplyIds = Stream.of(
61+
List<Long> univApplyInfoIds = Stream.of(
6262
userLatestApplication.getFirstChoiceUnivApplyInfoId(),
6363
userLatestApplication.getSecondChoiceUnivApplyInfoId(),
6464
userLatestApplication.getThirdChoiceUnivApplyInfoId()
6565
)
6666
.filter(Objects::nonNull)
6767
.collect(Collectors.toList());
6868

69-
if (universityInfoForApplyIds.isEmpty()) {
69+
if (univApplyInfoIds.isEmpty()) {
7070
return new ApplicationsResponse(List.of(), List.of(), List.of());
7171
}
7272

73-
List<Application> applications = applicationRepository.findAllByUnivApplyInfoIds(universityInfoForApplyIds, VerifyStatus.APPROVED, term);
74-
List<UnivApplyInfo> universityInfosForApply = universityInfoForApplyRepository.findAllByUniversityIds(universityInfoForApplyIds);
73+
List<Application> applications = applicationRepository.findAllByUnivApplyInfoIds(univApplyInfoIds, VerifyStatus.APPROVED, term);
74+
List<UnivApplyInfo> univApplyInfos = univApplyInfoRepository.findAllByIds(univApplyInfoIds);
7575

76-
return classifyApplicationsByChoice(universityInfosForApply, applications, siteUser);
76+
return classifyApplicationsByChoice(univApplyInfos, applications, siteUser);
7777
}
7878

7979
private ApplicationsResponse classifyApplicationsByChoice(
80-
List<UnivApplyInfo> universityInfosForApply,
80+
List<UnivApplyInfo> univApplyInfos,
8181
List<Application> applications,
8282
SiteUser siteUser) {
8383
Map<Long, List<Application>> firstChoiceMap = createChoiceMap(applications, Application::getFirstChoiceUnivApplyInfoId);
8484
Map<Long, List<Application>> secondChoiceMap = createChoiceMap(applications, Application::getSecondChoiceUnivApplyInfoId);
8585
Map<Long, List<Application>> thirdChoiceMap = createChoiceMap(applications, Application::getThirdChoiceUnivApplyInfoId);
8686

87-
List<UniversityApplicantsResponse> firstChoiceApplicants =
88-
createUniversityApplicantsResponses(universityInfosForApply, firstChoiceMap, siteUser);
89-
List<UniversityApplicantsResponse> secondChoiceApplicants =
90-
createUniversityApplicantsResponses(universityInfosForApply, secondChoiceMap, siteUser);
91-
List<UniversityApplicantsResponse> thirdChoiceApplicants =
92-
createUniversityApplicantsResponses(universityInfosForApply, thirdChoiceMap, siteUser);
87+
List<ApplicantsResponse> firstChoiceApplicants =
88+
createUniversityApplicantsResponses(univApplyInfos, firstChoiceMap, siteUser);
89+
List<ApplicantsResponse> secondChoiceApplicants =
90+
createUniversityApplicantsResponses(univApplyInfos, secondChoiceMap, siteUser);
91+
List<ApplicantsResponse> thirdChoiceApplicants =
92+
createUniversityApplicantsResponses(univApplyInfos, thirdChoiceMap, siteUser);
9393

9494
return new ApplicationsResponse(firstChoiceApplicants, secondChoiceApplicants, thirdChoiceApplicants);
9595
}
@@ -109,12 +109,12 @@ private Map<Long, List<Application>> createChoiceMap(
109109
return choiceMap;
110110
}
111111

112-
private List<UniversityApplicantsResponse> createUniversityApplicantsResponses(
113-
List<UnivApplyInfo> universityInfosForApply,
112+
private List<ApplicantsResponse> createUniversityApplicantsResponses(
113+
List<UnivApplyInfo> univApplyInfos,
114114
Map<Long, List<Application>> choiceMap,
115115
SiteUser siteUser) {
116-
return universityInfosForApply.stream()
117-
.map(uia -> UniversityApplicantsResponse.of(uia, choiceMap.getOrDefault(uia.getId(), List.of()), siteUser))
116+
return univApplyInfos.stream()
117+
.map(uia -> ApplicantsResponse.of(uia, choiceMap.getOrDefault(uia.getId(), List.of()), siteUser))
118118
.toList();
119119
}
120120

src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.example.solidconnection.application.domain.VerifyStatus;
55
import com.example.solidconnection.application.dto.ApplicationSubmissionResponse;
66
import com.example.solidconnection.application.dto.ApplyRequest;
7-
import com.example.solidconnection.application.dto.UniversityChoiceRequest;
7+
import com.example.solidconnection.application.dto.UnivApplyInfoChoiceRequest;
88
import com.example.solidconnection.application.repository.ApplicationRepository;
99
import com.example.solidconnection.common.exception.CustomException;
1010
import com.example.solidconnection.score.domain.GpaScore;
@@ -42,13 +42,13 @@ public class ApplicationSubmissionService {
4242
// 기존에 있던 status field 우선 APRROVED로 입력시킨다.
4343
@Transactional
4444
public ApplicationSubmissionResponse apply(SiteUser siteUser, ApplyRequest applyRequest) {
45-
UniversityChoiceRequest universityChoiceRequest = applyRequest.universityChoiceRequest();
45+
UnivApplyInfoChoiceRequest univApplyInfoChoiceRequest = applyRequest.univApplyInfoChoiceRequest();
4646
GpaScore gpaScore = getValidGpaScore(siteUser, applyRequest.gpaScoreId());
4747
LanguageTestScore languageTestScore = getValidLanguageTestScore(siteUser, applyRequest.languageTestScoreId());
4848

49-
long firstChoiceUniversityId = universityChoiceRequest.firstChoiceUniversityId();
50-
Long secondChoiceUniversityId = universityChoiceRequest.secondChoiceUniversityId();
51-
Long thirdChoiceUniversityId = universityChoiceRequest.thirdChoiceUniversityId();
49+
long firstChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.firstChoiceUnivApplyInfoId();
50+
Long secondChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.secondChoiceUnivApplyInfoId();
51+
Long thirdChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.thirdChoiceUnivApplyInfoId();
5252

5353
Optional<Application> existingApplication = applicationRepository.findBySiteUserAndTerm(siteUser, term);
5454
int updateCount = existingApplication
@@ -65,9 +65,9 @@ public ApplicationSubmissionResponse apply(SiteUser siteUser, ApplyRequest apply
6565
languageTestScore.getLanguageTest(),
6666
term,
6767
updateCount,
68-
firstChoiceUniversityId,
69-
secondChoiceUniversityId,
70-
thirdChoiceUniversityId,
68+
firstChoiceUnivApplyInfoId,
69+
secondChoiceUnivApplyInfoId,
70+
thirdChoiceUnivApplyInfoId,
7171
getRandomNickname()
7272
);
7373

src/main/java/com/example/solidconnection/common/exception/ErrorCode.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public enum ErrorCode {
3333
SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER(HttpStatus.BAD_REQUEST.value(), "회원가입 토큰이 우리 서버에서 발급되지 않았습니다."),
3434

3535
// data not found
36-
UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "존재하지 않는 대학교 지원 정보입니다."),
37-
UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND_FOR_TERM(HttpStatus.NOT_FOUND.value(), "해당하는 대학교가 이번 모집 기간에 열리지 않았습니다."),
36+
UNIV_APPLY_INFO_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "존재하지 않는 대학교 지원 정보입니다."),
37+
UNIV_APPLY_INFO_NOT_FOUND_FOR_TERM(HttpStatus.NOT_FOUND.value(), "해당하는 대학교가 이번 모집 기간에 열리지 않았습니다."),
3838
APPLICATION_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "사용자의 대학 지원 정보를 찾을 수 없습니다."),
3939
USER_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "회원을 찾을 수 없습니다."),
4040
UNIVERSITY_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "대학교를 찾을 수 없습니다."),
@@ -71,7 +71,7 @@ public enum ErrorCode {
7171
PROFILE_IMAGE_NEEDED(HttpStatus.BAD_REQUEST.value(), "프로필 이미지가 필요합니다."),
7272
FIRST_CHOICE_REQUIRED(HttpStatus.BAD_REQUEST.value(), "1지망 대학교를 입력해주세요."),
7373
THIRD_CHOICE_REQUIRES_SECOND(HttpStatus.BAD_REQUEST.value(), "2지망 없이 3지망을 선택할 수 없습니다."),
74-
DUPLICATE_UNIVERSITY_CHOICE(HttpStatus.BAD_REQUEST.value(), "지망 선택이 중복되었습니다."),
74+
DUPLICATE_UNIV_APPLY_INFO_CHOICE(HttpStatus.BAD_REQUEST.value(), "지망 선택이 중복되었습니다."),
7575

7676
// community
7777
INVALID_POST_CATEGORY(HttpStatus.BAD_REQUEST.value(), "잘못된 카테고리명입니다."),
@@ -86,8 +86,8 @@ public enum ErrorCode {
8686
CAN_NOT_UPDATE_DEPRECATED_COMMENT(HttpStatus.BAD_REQUEST.value(), "이미 삭제된 댓글을 수정할 수 없습니다."),
8787
INVALID_POST_LIKE(HttpStatus.BAD_REQUEST.value(), "존재하지 않는 게시글 좋아요입니다."),
8888
DUPLICATE_POST_LIKE(HttpStatus.BAD_REQUEST.value(), "이미 좋아요한 게시글입니다."),
89-
ALREADY_LIKED_UNIVERSITY(HttpStatus.BAD_REQUEST.value(), "이미 좋아요한 대학입니다."),
90-
NOT_LIKED_UNIVERSITY(HttpStatus.BAD_REQUEST.value(), "좋아요하지 않은 대학입니다."),
89+
ALREADY_LIKED_UNIV_APPLY_INFO(HttpStatus.BAD_REQUEST.value(), "이미 좋아요한 대학입니다."),
90+
NOT_LIKED_UNIV_APPLY_INFO(HttpStatus.BAD_REQUEST.value(), "좋아요하지 않은 대학입니다."),
9191

9292
// score
9393
INVALID_GPA_SCORE_STATUS(HttpStatus.BAD_REQUEST.value(), "학점이 승인되지 않았습니다."),

src/main/java/com/example/solidconnection/siteuser/dto/MyPageResponse.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.example.solidconnection.siteuser.domain.AuthType;
44
import com.example.solidconnection.siteuser.domain.Role;
55
import com.example.solidconnection.siteuser.domain.SiteUser;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
67

78
public record MyPageResponse(
89
String nickname,
@@ -12,9 +13,11 @@ public record MyPageResponse(
1213
String email,
1314
int likedPostCount,
1415
int likedMentorCount,
15-
int likedUniversityCount) {
1616

17-
public static MyPageResponse of(SiteUser siteUser, int likedUniversityCount) {
17+
@JsonProperty("likedUniversityCount")
18+
int likedUnivApplyInfoCount) {
19+
20+
public static MyPageResponse of(SiteUser siteUser, int likedUnivApplyInfoCount) {
1821
return new MyPageResponse(
1922
siteUser.getNickname(),
2023
siteUser.getProfileImageUrl(),
@@ -23,7 +26,7 @@ public static MyPageResponse of(SiteUser siteUser, int likedUniversityCount) {
2326
siteUser.getEmail(),
2427
0, // TODO: 커뮤니티 기능 생기면 업데이트 필요
2528
0, // TODO: 멘토 기능 생기면 업데이트 필요
26-
likedUniversityCount
29+
likedUnivApplyInfoCount
2730
);
2831
}
2932
}

0 commit comments

Comments
 (0)