Skip to content

Commit 2681cd9

Browse files
authored
Merge pull request #24 from EntryDSM/feature/23-not-arrived-api
Feature/23 not arrived api
2 parents 3831b2f + 5301edb commit 2681cd9

5 files changed

Lines changed: 99 additions & 0 deletions

File tree

casper-status/src/main/kotlin/hs/kr/entrydsm/status/domain/status/adapter/in/web/AdminWebController.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package hs.kr.entrydsm.status.domain.status.adapter.`in`.web
33
import hs.kr.entrydsm.status.domain.status.application.port.`in`.AnnounceResultUseCase
44
import hs.kr.entrydsm.status.domain.status.application.port.`in`.CancelApplicationSubmitUseCase
55
import hs.kr.entrydsm.status.domain.status.application.port.`in`.StartScreeningUseCase
6+
import hs.kr.entrydsm.status.domain.status.application.port.`in`.UpdateIsNotPrintsArrivedUseCase
67
import hs.kr.entrydsm.status.domain.status.application.port.`in`.UpdateIsPrintsArrivedUseCase
78
import hs.kr.entrydsm.status.global.document.status.AdminStatusApiDocument
89
import org.springframework.web.bind.annotation.PatchMapping
@@ -26,6 +27,7 @@ class AdminWebController(
2627
private val cancelApplicationSubmitUseCase: CancelApplicationSubmitUseCase,
2728
private val startScreeningUseCase: StartScreeningUseCase,
2829
private val announceResultUseCase: AnnounceResultUseCase,
30+
private val updateIsNotPrintsArrivedUseCase: UpdateIsNotPrintsArrivedUseCase
2931
) : AdminStatusApiDocument {
3032
/**
3133
* 지원서 제출을 취소합니다.
@@ -53,6 +55,19 @@ class AdminWebController(
5355
updateIsPrintsArrivedUseCase.execute(receiptCode)
5456
}
5557

58+
/**
59+
* 서류 도착을 수정합니다.
60+
* 서류의 도착 여부를 관리자가 확인하여 상태를 서류 도착 대기 상태로 변경합니다.
61+
*
62+
* @param receiptCode 접수번호
63+
*/
64+
@PatchMapping("/prints-not-arrived/{receipt-code}")
65+
override fun updateIsNotPrintsArrivedService(
66+
@PathVariable("receipt-code") receiptCode: Long,
67+
) {
68+
updateIsNotPrintsArrivedUseCase.execute(receiptCode)
69+
}
70+
5671
/**
5772
* 전형을 시작합니다.
5873
* 서류 검토가 완료된 후 1차 또는 2차 전형을 시작합니다.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package hs.kr.entrydsm.status.domain.status.application.port.`in`
2+
3+
/**
4+
* 서류 미도착 수정 유스케이스 인터페이스입니다.
5+
*/
6+
interface UpdateIsNotPrintsArrivedUseCase {
7+
/**
8+
* 서류 접수 완료 상태에서 서류 도착 대기 상태로 변경합니다.
9+
*
10+
* @param receiptCode 접수번호
11+
*/
12+
fun execute(receiptCode: Long)
13+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package hs.kr.entrydsm.status.domain.status.application.service
2+
3+
import hs.kr.entrydsm.status.domain.status.application.port.`in`.UpdateIsNotPrintsArrivedUseCase
4+
import hs.kr.entrydsm.status.domain.status.application.port.out.QueryStatusPort
5+
import hs.kr.entrydsm.status.domain.status.application.port.out.SaveStatusPort
6+
import hs.kr.entrydsm.status.domain.status.exception.StatusNotFoundException
7+
import org.springframework.stereotype.Service
8+
import org.springframework.transaction.annotation.Transactional
9+
10+
/**
11+
* 서류 미도착 상태 업데이트 서비스 클래스입니다.
12+
*
13+
* @property queryStatusPort 상태 조회 포트
14+
* @property saveStatusPort 상태 저장 포트
15+
*/
16+
@Transactional
17+
@Service
18+
class UpdateIsNotPrintsArrivedService(
19+
private val queryStatusPort: QueryStatusPort,
20+
private val saveStatusPort: SaveStatusPort,
21+
) : UpdateIsNotPrintsArrivedUseCase {
22+
23+
/**
24+
* 서류 미도착 상태를 업데이트합니다.
25+
* 서류 접수 완료에서 서류 도착 대기 상태로 변경합니다.
26+
*
27+
* @param receiptCode 접수번호
28+
* @throws StatusNotFoundException 해당 접수번호의 상태가 존재하지 않는 경우
29+
*/
30+
override fun execute(receiptCode: Long) {
31+
val status =
32+
queryStatusPort.findByReceiptCode(receiptCode)
33+
?: throw StatusNotFoundException
34+
35+
val updatedStatus = status.markDocumentsNotArrived()
36+
saveStatusPort.save(updatedStatus)
37+
}
38+
}

casper-status/src/main/kotlin/hs/kr/entrydsm/status/domain/status/model/Status.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ data class Status(
4747
return copy(applicationStatus = ApplicationStatus.DOCUMENTS_RECEIVED)
4848
}
4949

50+
/**
51+
* 서류가 도착했음을 미표시하고 서류 도착 대기 상태로 변경합니다.
52+
*
53+
* @return 서류 도착 대기 상태로 변경된 Status 인스턴스
54+
*/
55+
fun markDocumentsNotArrived(): Status {
56+
return copy(applicationStatus = ApplicationStatus.WAITING_DOCUMENTS)
57+
}
58+
5059
/**
5160
* 전형을 시작하고 전형 진행 중 상태로 변경합니다.
5261
*

casper-status/src/main/kotlin/hs/kr/entrydsm/status/global/document/status/AdminStatusApiDocument.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,30 @@ interface AdminStatusApiDocument {
6161
@PathVariable("receipt-code") receiptCode: Long,
6262
)
6363

64+
/**
65+
* 등기우편으로 제출된 서류의 도착을 수정합니다.
66+
*/
67+
@Operation(
68+
summary = "서류 도착 수정",
69+
description = "서류 접수 완료 상태에서 서류 도착 대기 상태로 변경합니다.",
70+
)
71+
@ApiResponses(
72+
ApiResponse(
73+
responseCode = "204",
74+
description = "서류 도착 수정 성공",
75+
content = arrayOf(Content()),
76+
),
77+
ApiResponse(
78+
responseCode = "404",
79+
description = "상태를 찾을 수 없음 - Status Not Found",
80+
content = arrayOf(Content()),
81+
),
82+
)
83+
fun updateIsNotPrintsArrivedService(
84+
@Parameter(description = "접수번호", required = true)
85+
@PathVariable("receipt-code") receiptCode: Long,
86+
)
87+
6488
/**
6589
* 서류 검토 완료 후 1차 또는 2차 전형을 시작합니다.
6690
*/

0 commit comments

Comments
 (0)