Skip to content

Commit 36a27df

Browse files
committed
[EA3-168] refactor: ApplicationCreateRequest 변경 및 코드 리팩터링
1 parent ce964f2 commit 36a27df

File tree

4 files changed

+32
-38
lines changed

4 files changed

+32
-38
lines changed

src/main/java/grep/neogul_coder/domain/studyapplication/controller/ApplicationController.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,35 @@
1212

1313
import java.util.List;
1414

15-
@RequestMapping("/api/studies")
15+
@RequestMapping("/api/recruitment-posts")
1616
@RequiredArgsConstructor
1717
@RestController
1818
public class ApplicationController implements ApplicationSpecification {
1919

2020
private final ApplicationService applicationService;
2121

22-
@GetMapping("/{studyId}/applications")
23-
public ApiResponse<List<MyApplicationResponse>> getMyStudyApplications(@AuthenticationPrincipal Principal userDetails) {
22+
@GetMapping("/{recruitment-post-id}/applications")
23+
public ApiResponse<List<MyApplicationResponse>> getMyStudyApplications(@PathVariable("recruitment-post-id") Long recruitmentPostId,
24+
@AuthenticationPrincipal Principal userDetails) {
2425
return ApiResponse.success(applicationService.getMyStudyApplications(userDetails.getUserId()));
2526
}
2627

27-
@PostMapping("/{studyId}/applications")
28-
public ApiResponse<Long> createApplication(@RequestBody @Valid ApplicationCreateRequest request) {
29-
Long id = applicationService.createApplication(request);
28+
@PostMapping("/{recruitment-post-id}/applications")
29+
public ApiResponse<Long> createApplication(@PathVariable("recruitment-post-id") Long recruitmentPostId,
30+
@RequestBody @Valid ApplicationCreateRequest request,
31+
@AuthenticationPrincipal Principal userDetails) {
32+
Long id = applicationService.createApplication(recruitmentPostId, request, userDetails.getUserId());
3033
return ApiResponse.success(id);
3134
}
3235

33-
@PostMapping("/{applicationId}/approve")
36+
@PostMapping("/applications/{applicationId}/approve")
3437
public ApiResponse<Void> approveApplication(@PathVariable("applicationId") Long applicationId,
3538
@AuthenticationPrincipal Principal userDetails) {
3639
applicationService.approveApplication(applicationId, userDetails.getUserId());
3740
return ApiResponse.noContent();
3841
}
3942

40-
@PostMapping("/{applicationId}/reject")
43+
@PostMapping("/applications/{applicationId}/reject")
4144
public ApiResponse<Void> rejectApplication(@PathVariable("applicationId") Long applicationId,
4245
@AuthenticationPrincipal Principal userDetails) {
4346
applicationService.rejectApplication(applicationId, userDetails.getUserId());

src/main/java/grep/neogul_coder/domain/studyapplication/controller/ApplicationSpecification.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
public interface ApplicationSpecification {
1414

1515
@Operation(summary = "내 스터디 신청 목록 조회", description = "내가 신청한 스터디의 목록을 조회합니다.")
16-
ApiResponse<List<MyApplicationResponse>> getMyStudyApplications(Principal userDetails);
16+
ApiResponse<List<MyApplicationResponse>> getMyStudyApplications(Long recruitmentPostId, Principal userDetails);
1717

1818
@Operation(summary = "스터디 신청 생성", description = "스터디를 신청합니다.")
19-
ApiResponse<Long> createApplication(ApplicationCreateRequest request);
19+
ApiResponse<Long> createApplication(Long recruitmentPostId, ApplicationCreateRequest request, Principal userDetails);
2020

2121
@Operation(summary = "스터디 신청 승인", description = "스터디장이 스터디 신청을 승인합니다.")
2222
ApiResponse<Void> approveApplication(Long applicationId, Principal userDetails);

src/main/java/grep/neogul_coder/domain/studyapplication/controller/dto/request/ApplicationCreateRequest.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,6 @@
1212
@Getter
1313
public class ApplicationCreateRequest {
1414

15-
@Schema(description = "모집글 번호", example = "1")
16-
private Long recruitmentPostId;
17-
18-
@NotNull
19-
@Schema(description = "유저 번호", example = "1")
20-
private Long userId;
21-
2215
@NotBlank
2316
@Schema(description = "스터디 신청 지원 동기", example = "자바를 더 공부하고싶어 지원하였습니다.")
2417
private String applicationReason;
@@ -27,16 +20,14 @@ private ApplicationCreateRequest() {
2720
}
2821

2922
@Builder
30-
private ApplicationCreateRequest(Long recruitmentPostId, Long userId, String applicationReason) {
31-
this.recruitmentPostId = recruitmentPostId;
32-
this.userId = userId;
23+
private ApplicationCreateRequest(String applicationReason) {
3324
this.applicationReason = applicationReason;
3425
}
3526

36-
public StudyApplication toEntity() {
27+
public StudyApplication toEntity(Long recruitmentPostId, Long userId) {
3728
return StudyApplication.builder()
38-
.recruitmentPostId(this.recruitmentPostId)
39-
.userId(this.userId)
29+
.recruitmentPostId(recruitmentPostId)
30+
.userId(userId)
4031
.applicationReason(this.applicationReason)
4132
.isRead(false)
4233
.status(ApplicationStatus.APPLYING)

src/main/java/grep/neogul_coder/domain/studyapplication/service/ApplicationService.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ public List<MyApplicationResponse> getMyStudyApplications(Long userId) {
4141
}
4242

4343
@Transactional
44-
public Long createApplication(ApplicationCreateRequest request) {
45-
RecruitmentPost recruitmentPost = findValidRecruimentPost(request.getRecruitmentPostId());
44+
public Long createApplication(Long recruitmentPostId, ApplicationCreateRequest request, Long userId) {
45+
RecruitmentPost recruitmentPost = findValidRecruimentPost(recruitmentPostId);
4646

47-
validateNotLeaderApply(request, recruitmentPost);
48-
validateNotAlreadyApplied(request);
47+
validateNotLeaderApply(recruitmentPost, userId);
48+
validateNotAlreadyApplied(recruitmentPostId, userId);
4949

50-
StudyApplication application = request.toEntity();
50+
StudyApplication application = request.toEntity(recruitmentPostId, userId);
5151
applicationRepository.save(application);
5252

5353
return application.getId();
@@ -59,7 +59,7 @@ public void approveApplication(Long applicationId, Long userId) {
5959
RecruitmentPost post = findValidRecruimentPost(application.getRecruitmentPostId());
6060
Study study = findValidStudy(post);
6161

62-
validateOnlyLeaderCanApproved(study, userId);
62+
validateOnlyLeaderCanApprove(study, userId);
6363
validateStatusIsApplying(application);
6464

6565
application.approve();
@@ -75,7 +75,7 @@ public void rejectApplication(Long applicationId, Long userId) {
7575
RecruitmentPost post = findValidRecruimentPost(application.getRecruitmentPostId());
7676
Study study = findValidStudy(post);
7777

78-
validateOnlyLeaderCanRejected(study, userId);
78+
validateOnlyLeaderCanReject(study, userId);
7979
validateStatusIsApplying(application);
8080

8181
application.reject();
@@ -93,21 +93,21 @@ private StudyApplication findValidApplication(Long applicationId) {
9393
return application;
9494
}
9595

96-
private RecruitmentPost findValidRecruimentPost(Long applicationId) {
97-
RecruitmentPost post = recruitmentPostRepository.findByIdAndActivatedTrue(applicationId)
96+
private RecruitmentPost findValidRecruimentPost(Long recruitmentPostId) {
97+
RecruitmentPost post = recruitmentPostRepository.findByIdAndActivatedTrue(recruitmentPostId)
9898
.orElseThrow(() -> new NotFoundException(NOT_FOUND));
9999
return post;
100100
}
101101

102-
private void validateNotLeaderApply(ApplicationCreateRequest request, RecruitmentPost recruitmentPost) {
103-
boolean isLeader = studyMemberRepository.existsByStudyIdAndUserIdAndRole(recruitmentPost.getStudyId(), request.getUserId(), StudyMemberRole.LEADER);
102+
private void validateNotLeaderApply(RecruitmentPost recruitmentPost, Long userId) {
103+
boolean isLeader = studyMemberRepository.existsByStudyIdAndUserIdAndRole(recruitmentPost.getStudyId(), userId, StudyMemberRole.LEADER);
104104
if (isLeader) {
105105
throw new BusinessException(LEADER_CANNOT_APPLY);
106106
}
107107
}
108108

109-
private void validateNotAlreadyApplied(ApplicationCreateRequest request) {
110-
boolean alreadyApplied = applicationRepository.existsByRecruitmentPostIdAndUserId(request.getRecruitmentPostId(), request.getUserId());
109+
private void validateNotAlreadyApplied(Long recruitmentPostId, Long userId) {
110+
boolean alreadyApplied = applicationRepository.existsByRecruitmentPostIdAndUserId(recruitmentPostId, userId);
111111
if (alreadyApplied) {
112112
throw new BusinessException(ALREADY_APPLICATION);
113113
}
@@ -119,14 +119,14 @@ private static void validateStatusIsApplying(StudyApplication application) {
119119
}
120120
}
121121

122-
private void validateOnlyLeaderCanApproved(Study study, Long userId) {
122+
private void validateOnlyLeaderCanApprove(Study study, Long userId) {
123123
boolean isLeader = studyMemberRepository.existsByStudyIdAndUserIdAndRole(study.getId(), userId, StudyMemberRole.LEADER);
124124
if (!isLeader) {
125125
throw new BusinessException(LEADER_ONLY_APPROVED);
126126
}
127127
}
128128

129-
private void validateOnlyLeaderCanRejected(Study study, Long userId) {
129+
private void validateOnlyLeaderCanReject(Study study, Long userId) {
130130
boolean isLeader = studyMemberRepository.existsByStudyIdAndUserIdAndRole(study.getId(), userId, StudyMemberRole.LEADER);
131131
if (!isLeader) {
132132
throw new BusinessException(LEADER_ONLY_REJECTED);

0 commit comments

Comments
 (0)