Skip to content

Commit 129961b

Browse files
committed
feat: 지원자 상태 변경 로직 구현
- 요청 DTO 구현 - 상태 변경 후 지원자 정보 리턴
1 parent 5bece16 commit 129961b

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dmu.dasom.api.domain.applicant.dto;
2+
3+
import dmu.dasom.api.domain.applicant.enums.ApplicantStatus;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
@Getter
8+
@Schema(name = "ApplicantStatusUpdateRequestDto", description = "지원자 상태 변경 요청 DTO")
9+
public class ApplicantStatusUpdateRequestDto {
10+
11+
@Schema(description = "상태", example = "DOCUMENT_PASSED")
12+
private ApplicantStatus status;
13+
14+
}

src/main/java/dmu/dasom/api/domain/applicant/service/ApplicantService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dmu.dasom.api.domain.applicant.dto.ApplicantCreateRequestDto;
44
import dmu.dasom.api.domain.applicant.dto.ApplicantDetailsResponseDto;
55
import dmu.dasom.api.domain.applicant.dto.ApplicantResponseDto;
6+
import dmu.dasom.api.domain.applicant.dto.ApplicantStatusUpdateRequestDto;
67
import dmu.dasom.api.global.dto.PageResponse;
78

89
public interface ApplicantService {
@@ -13,4 +14,6 @@ public interface ApplicantService {
1314

1415
ApplicantDetailsResponseDto getApplicant(final Long id);
1516

17+
ApplicantDetailsResponseDto updateApplicantStatus(final Long id, final ApplicantStatusUpdateRequestDto request);
18+
1619
}

src/main/java/dmu/dasom/api/domain/applicant/service/ApplicantServiceImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dmu.dasom.api.domain.applicant.dto.ApplicantCreateRequestDto;
44
import dmu.dasom.api.domain.applicant.dto.ApplicantDetailsResponseDto;
55
import dmu.dasom.api.domain.applicant.dto.ApplicantResponseDto;
6+
import dmu.dasom.api.domain.applicant.dto.ApplicantStatusUpdateRequestDto;
67
import dmu.dasom.api.domain.applicant.entity.Applicant;
78
import dmu.dasom.api.domain.applicant.repository.ApplicantRepository;
89
import dmu.dasom.api.domain.common.exception.CustomException;
@@ -42,8 +43,21 @@ public PageResponse<ApplicantResponseDto> getApplicants(final int page) {
4243
// 지원자 상세 조회
4344
@Override
4445
public ApplicantDetailsResponseDto getApplicant(final Long id) {
46+
return findById(id).toApplicantDetailsResponse();
47+
}
48+
49+
// 지원자 상태 변경
50+
@Override
51+
public ApplicantDetailsResponseDto updateApplicantStatus(final Long id, final ApplicantStatusUpdateRequestDto request) {
52+
final Applicant applicant = findById(id);
53+
applicant.updateStatus(request.getStatus());
54+
55+
return applicant.toApplicantDetailsResponse();
56+
}
57+
58+
// Repository에서 ID로 지원자 조회
59+
private Applicant findById(final Long id) {
4560
return applicantRepository.findById(id)
46-
.map(Applicant::toApplicantDetailsResponse)
4761
.orElseThrow(() -> new CustomException(ErrorCode.EMPTY_RESULT));
4862
}
4963

src/main/java/dmu/dasom/api/global/admin/controller/AdminController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dmu.dasom.api.domain.applicant.dto.ApplicantDetailsResponseDto;
44
import dmu.dasom.api.domain.applicant.dto.ApplicantResponseDto;
5+
import dmu.dasom.api.domain.applicant.dto.ApplicantStatusUpdateRequestDto;
56
import dmu.dasom.api.domain.applicant.service.ApplicantService;
67
import dmu.dasom.api.global.dto.PageResponse;
78
import io.swagger.v3.oas.annotations.Operation;
@@ -10,6 +11,7 @@
1011
import io.swagger.v3.oas.annotations.media.Schema;
1112
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1213
import io.swagger.v3.oas.annotations.responses.ApiResponses;
14+
import jakarta.validation.Valid;
1315
import jakarta.validation.constraints.Min;
1416
import lombok.RequiredArgsConstructor;
1517
import org.springframework.http.ResponseEntity;
@@ -69,4 +71,12 @@ public ResponseEntity<ApplicantDetailsResponseDto> getApplicant(@PathVariable("i
6971
return ResponseEntity.ok(applicantService.getApplicant(id));
7072
}
7173

74+
// 지원자 상태 변경
75+
@Operation(summary = "지원자 상태 변경")
76+
@PatchMapping("/applicants/{id}/status")
77+
public ResponseEntity<ApplicantDetailsResponseDto> updateApplicantStatus(@PathVariable("id") @Min(0) final Long id,
78+
@Valid @RequestBody final ApplicantStatusUpdateRequestDto request) {
79+
return ResponseEntity.ok(applicantService.updateApplicantStatus(id, request));
80+
}
81+
7282
}

0 commit comments

Comments
 (0)