diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push deleted file mode 100755 index 8308eb18..00000000 --- a/.github/hooks/pre-push +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# .git/hooks/pre-push - -echo "πŸ”¨ Gradle λΉŒλ“œ 검증 (push μ „ μ‹€ν–‰)…" - -if ! ./gradlew clean build --no-daemon; then - echo "❌ λΉŒλ“œ μ‹€νŒ¨β€”ν‘Έμ‹œ 쀑단" - exit 1 -fi - -echo "βœ… λΉŒλ“œ μ„±κ³΅β€”ν‘Έμ‹œ μ§„ν–‰" diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt deleted file mode 100644 index 6483ce1b..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.event.request - -data class UpdateEducationalStatusEventRequest( - val receiptCode: Long, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt index b531b924..25db0be6 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt @@ -1,15 +1,9 @@ package hs.kr.entrydsm.application.domain.application.event.spi -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.YearMonth import java.util.UUID interface ApplicationEventPort { fun create(receiptCode: Long, userId: UUID) - fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) - - fun submitApplicationFinal(receiptCode: Long) - fun createApplicationScoreRollback(receiptCode: Long) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt deleted file mode 100644 index cd06f79e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt +++ /dev/null @@ -1,19 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.service - -import hs.kr.entrydsm.application.domain.application.model.Application -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort -import hs.kr.entrydsm.application.global.annotation.DomainService -import java.util.UUID - -@DomainService -class CheckTelService( - private val applicationQueryUserPort: ApplicationQueryUserPort, -) { - fun checkParentPutApplicantTel( - userId: UUID, - applicantTel: String, - ): String { - val user = applicationQueryUserPort.queryUserByUserId(userId) - return if (user.isParent) Application.DEFAULT_TEL else applicantTel - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt deleted file mode 100644 index cbb752eb..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt +++ /dev/null @@ -1,35 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ChangeApplicationPhotoRequest -import hs.kr.entrydsm.application.domain.file.exception.FileExceptions -import hs.kr.entrydsm.application.domain.file.spi.CheckFilePort -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class ChangePhotoUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val checkFilePort: CheckFilePort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: ChangeApplicationPhotoRequest) { - if (!checkFilePort.existsPath(request.path)) { - throw FileExceptions.PathNotFound() - } - - val userId = securityPort.getCurrentUserId() - val application = - queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - photoPath = request.path, - ), - ) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt deleted file mode 100644 index c3cb1dc5..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryGraduationInfoPort -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationTypeResponse -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetApplicationTypeUseCase( - private val queryApplicationPort: QueryApplicationPort, - private val securityPort: SecurityPort, - private val applicationQueryGraduationInfoPort: ApplicationQueryGraduationInfoPort -) { - fun execute(): GetApplicationTypeResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - val graduationInfo = applicationQueryGraduationInfoPort.queryGraduationInfoByApplication(application) - - return GetApplicationTypeResponse( - educationalStatus = application.educationalStatus, - applicationType = application.applicationType, - isDaejeon = application.isDaejeon, - applicationRemark = application.applicationRemark, - isOutOfHeadCount = application.isOutOfHeadcount, - graduatedDate = graduationInfo?.graduateDate, - veteransNumber = application.veteransNumber - ) - } -} \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt deleted file mode 100644 index 13faa1b4..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt +++ /dev/null @@ -1,38 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetInformationResponse -import hs.kr.entrydsm.application.domain.file.spi.GenerateFileUrlPort -import hs.kr.entrydsm.application.domain.file.usecase.`object`.PathList -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetInformationUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val generateFileUrlPort: GenerateFileUrlPort -) { - fun execute(): GetInformationResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return application.run { - GetInformationResponse( - sex = sex, - birthDate = birthDate, - photoPath = photoPath?.let { generateFileUrlPort.generateFileUrl(it, PathList.PHOTO) }, - applicantName = applicantName, - applicantTel = applicantTel, - parentName = parentName, - parentTel = parentTel, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - parentRelation = parentRelation - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt deleted file mode 100644 index f07e3151..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt +++ /dev/null @@ -1,21 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetIntroduceResponse -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class GetIntroduceUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, -) { - fun execute(): GetIntroduceResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return GetIntroduceResponse(application.selfIntroduce) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt deleted file mode 100644 index 313b0c64..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt +++ /dev/null @@ -1,21 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetStudyPlanResponse -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetStudyPlanUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, -) { - fun execute(): GetStudyPlanResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return GetStudyPlanResponse(application.studyPlan) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt deleted file mode 100644 index dbff714e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt +++ /dev/null @@ -1,45 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.* -import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions -import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions -import hs.kr.entrydsm.application.domain.status.exception.StatusExceptions -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class SubmitApplicationFinalUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val applicationQueryUserPort: ApplicationQueryUserPort, - private val applicationQueryGraduationInfoPort: ApplicationQueryGraduationInfoPort, - private val applicationQueryStatusPort: ApplicationQueryStatusPort, - private val applicationQueryScorePort: ApplicationQueryScorePort, - private val applicationEventPort: ApplicationEventPort -) { - fun execute(){ - val userId = securityPort.getCurrentUserId() - - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - val graduationInfo = applicationQueryGraduationInfoPort.queryGraduationInfoByApplication(application) - ?: throw GraduationInfoExceptions.GraduationNotFoundException() - - val score = applicationQueryScorePort.queryScoreByReceiptCode(application.receiptCode) - - if(graduationInfo.hasEmptyInfo() || score == null || application.hasEmptyInfo()) { - throw ApplicationExceptions.ApplicationProcessNotComplete() - } - - val status = applicationQueryStatusPort.queryStatusByReceiptCode(application.receiptCode) - ?: throw StatusExceptions.StatusNotFoundException() - - if(status.isSubmitted) { - throw StatusExceptions.AlreadySubmittedException() - } - - applicationEventPort.submitApplicationFinal(application.receiptCode) - } -} \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt new file mode 100644 index 00000000..f1a11a4a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -0,0 +1,147 @@ +package hs.kr.entrydsm.application.domain.application.usecase + +import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions +import hs.kr.entrydsm.application.domain.application.usecase.mapper.SubmitApplicationMapper +import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort +import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort +import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.applicationCase.service.ApplicationCaseService +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest +import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService +import hs.kr.entrydsm.application.domain.graduationInfo.model.vo.StudentNumber +import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest +import hs.kr.entrydsm.application.domain.score.service.ScoreService +import hs.kr.entrydsm.application.global.annotation.UseCase +import hs.kr.entrydsm.application.global.security.spi.SecurityPort + +@UseCase +class SubmitApplicationUseCase( + private val securityPort: SecurityPort, + private val applicationEventPort: ApplicationEventPort, + private val commandApplicationPort: CommandApplicationPort, + private val applicationQueryUserPort: ApplicationQueryUserPort, + private val queryApplicationPort: QueryApplicationPort, + private val applicationCaseService: ApplicationCaseService, + private val graduationInfoService: GraduationInfoService, + private val scoreService: ScoreService +) { + fun execute(request: SubmitApplicationRequest) { + val userId = securityPort.getCurrentUserId() + val user = applicationQueryUserPort.queryUserByUserId(userId) + if (queryApplicationPort.isExistsApplicationByUserId(userId)) { + throw ApplicationExceptions.ApplicationExistsException() + } + val application = commandApplicationPort.save( + SubmitApplicationMapper.toApplication(request, user) + ) + + handleSubmissionSideEffects(application.receiptCode, request) + + applicationEventPort.create(application.receiptCode, userId) + + // 이벀트 처리 λ‘œμ§μ„ λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰ν•˜λ„λ‘ λ³€κ²½ + // cause. 이벀트 μˆœμ„œ 문제(KafkaλŠ” λΉ„λ™κΈ°μ μœΌλ‘œ ν˜ΈμΆœλ˜μ–΄Score 생성, applicationCase, Score μ—…λ°μ΄νŠΈ μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠμŒ.) +// applicationEventPort.submitApplication( +// SubmitApplicationMapper.toSubmissionData(request, application, userId) +// ) + } + + private fun handleSubmissionSideEffects(receiptCode: Long, request: SubmitApplicationRequest) { + val educationalStatus = request.applicationInfo.educationalStatus + + initializeGraduationInfo(receiptCode, request) + updateGraduationInformation(receiptCode, educationalStatus, request) + + initializeApplicationCase(receiptCode, educationalStatus) + updateApplicationCase(receiptCode, educationalStatus, request) + + scoreService.createScore(receiptCode) + scoreService.updateScore(receiptCode) + } + + private fun initializeGraduationInfo(receiptCode: Long, request: SubmitApplicationRequest) { + graduationInfoService.changeGraduationInfo( + receiptCode = receiptCode, + graduateDate = request.applicationInfo.graduationDate + ) + } + + private fun updateGraduationInformation( + receiptCode: Long, + educationalStatus: EducationalStatus, + request: SubmitApplicationRequest + ) { + if (educationalStatus != EducationalStatus.QUALIFICATION_EXAM) { + val studentNumber: StudentNumber = StudentNumber.from(request.applicationInfo.studentNumber) + graduationInfoService.updateGraduationInformation( + receiptCode = receiptCode, + request = UpdateGraduationInformationRequest( + gradeNumber = studentNumber.gradeNumber, + classNumber = studentNumber.classNumber, + studentNumber = studentNumber.studentNumber, + schoolCode = request.schoolInfo.schoolCode, + teacherName = request.schoolInfo.teacherName, + teacherTel = request.schoolInfo.schoolPhone + ) + ) + } + } + + private fun initializeApplicationCase(receiptCode: Long, educationalStatus: EducationalStatus) { + applicationCaseService.initializeApplicationCase(receiptCode, educationalStatus) + } + + private fun updateApplicationCase( + receiptCode: Long, + educationalStatus: EducationalStatus, + request: SubmitApplicationRequest + ) { + when (educationalStatus) { + EducationalStatus.QUALIFICATION_EXAM -> { + applicationCaseService.updateQualificationScore( + receiptCode = receiptCode, + request = UpdateQualificationCaseRequest( + koreanGrade = request.gradeInfo.gedKorean, + socialGrade = request.gradeInfo.gedSocial, + mathGrade = request.gradeInfo.gedMath, + scienceGrade = request.gradeInfo.gedScience, + englishGrade = request.gradeInfo.gedEnglish, + historyGrade = request.gradeInfo.gedHistory, + extraScore = ExtraScoreRequest( + hasCertificate = request.awardAndCertificateInfo.infoProcessingCert, + hasCompetitionPrize = request.awardAndCertificateInfo.algorithmAward + ) + ) + ) + } + else -> { + applicationCaseService.updateGraduationScore( + receiptCode = receiptCode, + request = UpdateGraduationCaseRequest( + volunteerTime = request.attendanceInfo.volunteer, + absenceDayCount = request.attendanceInfo.absence, + lectureAbsenceCount = request.attendanceInfo.classExit, + latenessCount = request.attendanceInfo.tardiness, + earlyLeaveCount = request.attendanceInfo.earlyLeave, + koreanGrade = request.gradeInfo.koreanGrade, + socialGrade = request.gradeInfo.socialGrade, + historyGrade = request.gradeInfo.historyGrade, + mathGrade = request.gradeInfo.mathGrade, + scienceGrade = request.gradeInfo.scienceGrade, + englishGrade = request.gradeInfo.englishGrade, + techAndHomeGrade = request.gradeInfo.techAndHomeGrade, + extraScore = ExtraScoreRequest( + hasCertificate = request.awardAndCertificateInfo.infoProcessingCert, + hasCompetitionPrize = request.awardAndCertificateInfo.algorithmAward + ) + ) + ) + } + } + } +} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt deleted file mode 100644 index 9e40183c..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateApplicationTypeRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateApplicationTypeUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateApplicationTypeRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - request.run { - commandApplicationPort.save( - application.copy( - applicationType = applicationType, - applicationRemark = applicationRemark, - isDaejeon = isDaejeon, - isOutOfHeadcount = isOutOfHeadcount, - veteransNumber = veteransNumber - ), - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt deleted file mode 100644 index 524d064d..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt +++ /dev/null @@ -1,82 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.model.Application -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryScorePort -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateEducationalStatusRequest -import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions -import hs.kr.entrydsm.application.domain.applicationCase.spi.CommandApplicationCasePort -import hs.kr.entrydsm.application.domain.applicationCase.spi.QueryApplicationCasePort -import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions -import hs.kr.entrydsm.application.domain.graduationInfo.spi.CommandGraduationInfoPort -import hs.kr.entrydsm.application.domain.graduationInfo.spi.QueryGraduationInfoPort -import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions -import hs.kr.entrydsm.application.domain.score.spi.CommandScorePort -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort -import org.springframework.transaction.support.TransactionSynchronization -import org.springframework.transaction.support.TransactionSynchronizationManager - -@UseCase -class UpdateEducationalStatusUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, - private val applicationEventPort: ApplicationEventPort, - private val commandApplicationCasePort: CommandApplicationCasePort, - private val queryApplicationCasePort: QueryApplicationCasePort, - private val queryGraduationInfoPort: QueryGraduationInfoPort, - private val commandGraduationInfoPort: CommandGraduationInfoPort -) { - fun execute(request: UpdateEducationalStatusRequest) { - val userId = securityPort.getCurrentUserId() - val application = - queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - if (isEducationalStatusChanged(application.educationalStatus, request.educationalStatus)) { - if (!isPermissibleStatusTransition(application.educationalStatus, request.educationalStatus)) { - deleteGraduationInfoAndApplicationCase(application) - } - } - - commandApplicationPort.save( - application.copy( - educationalStatus = request.educationalStatus, - ) - ) - - TransactionSynchronizationManager.registerSynchronization(object : TransactionSynchronization { - override fun afterCommit() { - applicationEventPort.updateEducationalStatus(application.receiptCode, request.graduateDate) - } - }) - } - - private fun isEducationalStatusChanged( - applicationStatus: EducationalStatus?, - requestStatus: EducationalStatus - ): Boolean { - applicationStatus ?: return false - return applicationStatus != requestStatus - } - - private fun isPermissibleStatusTransition(applicationStatus: EducationalStatus?, requestStatus: EducationalStatus): Boolean { - return (applicationStatus == EducationalStatus.PROSPECTIVE_GRADUATE && requestStatus == EducationalStatus.GRADUATE) || - (applicationStatus == EducationalStatus.GRADUATE && requestStatus == EducationalStatus.PROSPECTIVE_GRADUATE) - } - - private fun deleteGraduationInfoAndApplicationCase(application: Application) { - val applicationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) - ?: throw ApplicationCaseExceptions.ApplicationCaseNotFoundException() - commandApplicationCasePort.delete(applicationCase) - - val graduationInfo = queryGraduationInfoPort.queryGraduationInfoByApplication(application) - ?: throw GraduationInfoExceptions.GraduationNotFoundException() - commandGraduationInfoPort.delete(graduationInfo) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt deleted file mode 100644 index a09983ee..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt +++ /dev/null @@ -1,38 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateInformationRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateInformationUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateInformationRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - request.run { - commandApplicationPort.save( - application.copy( - sex = sex, - birthDate = birthDate, - applicantName = applicantName, - applicantTel = applicantTel, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - ), - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt deleted file mode 100644 index bea137f7..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt +++ /dev/null @@ -1,27 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateIntroduceRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateIntroduceUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateIntroduceRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - selfIntroduce = request.content, - ), - ) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt deleted file mode 100644 index 463a231e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt +++ /dev/null @@ -1,27 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateStudyPlanRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateStudyPlanUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateStudyPlanRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - studyPlan = request.content, - ), - ) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt new file mode 100644 index 00000000..db0153c7 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt @@ -0,0 +1,8 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AddressInfo( + val isDaejeon: Boolean, + val streetAddress: String, + val detailAddress: String, + val postalCode: String +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt similarity index 70% rename from casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt rename to casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt index 460f71c4..5de3b8e3 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt @@ -3,16 +3,12 @@ package hs.kr.entrydsm.application.domain.application.usecase.dto.request import hs.kr.entrydsm.application.domain.application.model.types.Sex import java.time.LocalDate -data class UpdateInformationRequest( - val sex: Sex, - val birthDate: LocalDate, +data class ApplicantInfo( val applicantName: String, val applicantTel: String, - val parentTel: String, + val birthDate: LocalDate, + val applicantGender: Sex, val parentName: String, + val parentTel: String, val parentRelation: String, - val streetAddress: String, - val postalCode: String, - val detailAddress: String, -) - +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt new file mode 100644 index 00000000..b58ed743 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt @@ -0,0 +1,16 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.time.YearMonth + +data class ApplicationInfo( + val applicationType: ApplicationType, + val educationalStatus: EducationalStatus, + val studentNumber: String, + val graduationDate: YearMonth, + val studyPlan: String, + val selfIntroduce: String, + val nationalMeritChild: Boolean, + val specialAdmissionTarget: Boolean +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt new file mode 100644 index 00000000..7a4f03e0 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt @@ -0,0 +1,9 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AttendanceInfo( + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt new file mode 100644 index 00000000..3fa17e00 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt @@ -0,0 +1,6 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AwardAndCertificateInfo( + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt deleted file mode 100644 index bcdc7c65..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class ChangeApplicationPhotoRequest( - val path: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt new file mode 100644 index 00000000..ace06d5a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt @@ -0,0 +1,19 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import java.math.BigDecimal + +data class GradeInfo( + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + val gedKorean: BigDecimal = BigDecimal.ZERO, + val gedSocial: BigDecimal = BigDecimal.ZERO, + val gedMath: BigDecimal = BigDecimal.ZERO, + val gedScience: BigDecimal = BigDecimal.ZERO, + val gedEnglish: BigDecimal = BigDecimal.ZERO, + val gedHistory: BigDecimal = BigDecimal.ZERO +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt new file mode 100644 index 00000000..755f041d --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt @@ -0,0 +1,8 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class SchoolInfo( + val schoolCode: String, + val schoolName: String, + val schoolPhone: String, + val teacherName: String +) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt new file mode 100644 index 00000000..24be5c58 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt @@ -0,0 +1,11 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class SubmitApplicationRequest( + val applicantInfo: ApplicantInfo, + val addressInfo: AddressInfo, + val applicationInfo: ApplicationInfo, + val schoolInfo: SchoolInfo, + val gradeInfo: GradeInfo, + val attendanceInfo: AttendanceInfo, + val awardAndCertificateInfo: AwardAndCertificateInfo +) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt deleted file mode 100644 index b681650e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt +++ /dev/null @@ -1,12 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType - -data class UpdateApplicationTypeRequest( - val applicationType: ApplicationType, - val applicationRemark: ApplicationRemark?, - val isDaejeon: Boolean, - val isOutOfHeadcount: Boolean, - val veteransNumber: Int? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt deleted file mode 100644 index 87d2444c..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt +++ /dev/null @@ -1,9 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.YearMonth - -data class UpdateEducationalStatusRequest( - val educationalStatus: EducationalStatus, - val graduateDate: YearMonth -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt deleted file mode 100644 index b4ada8f4..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class UpdateIntroduceRequest( - val content: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt deleted file mode 100644 index 4da74584..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class UpdateStudyPlanRequest( - val content: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt deleted file mode 100644 index 0794fae0..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt +++ /dev/null @@ -1,17 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.LocalDate -import java.time.YearMonth - -data class GetApplicationTypeResponse( - val educationalStatus: EducationalStatus?, - val applicationType: ApplicationType?, - val isDaejeon: Boolean?, - val applicationRemark: ApplicationRemark?, - val isOutOfHeadCount: Boolean?, - val graduatedDate: YearMonth?, - val veteransNumber: Int? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt deleted file mode 100644 index e4c24134..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt +++ /dev/null @@ -1,18 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -import hs.kr.entrydsm.application.domain.application.model.types.Sex -import java.time.LocalDate - -data class GetInformationResponse( - val sex: Sex?, - val birthDate: LocalDate?, - val photoPath: String?, - val applicantName: String?, - val applicantTel: String?, - val parentTel: String?, - val parentName: String?, - val streetAddress: String?, - val postalCode: String?, - val detailAddress: String?, - val parentRelation: String? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt deleted file mode 100644 index baacfc70..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -data class GetIntroduceResponse( - val content: String?, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt deleted file mode 100644 index 68adbedc..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -data class GetStudyPlanResponse( - val content: String?, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt new file mode 100644 index 00000000..e0cf5c4e --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -0,0 +1,29 @@ +package hs.kr.entrydsm.application.domain.application.usecase.mapper + +import hs.kr.entrydsm.application.domain.application.model.Application +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest +import hs.kr.entrydsm.application.domain.user.model.User + +object SubmitApplicationMapper { + + fun toApplication(request: SubmitApplicationRequest, user: User): Application { + return Application( + applicantName = user.name, + applicantTel = user.phoneNumber, + birthDate = request.applicantInfo.birthDate, + sex = request.applicantInfo.applicantGender, + streetAddress = request.addressInfo.streetAddress, + postalCode = request.addressInfo.postalCode, + detailAddress = request.addressInfo.detailAddress, + isDaejeon = request.addressInfo.isDaejeon, + parentName = request.applicantInfo.parentName, + parentTel = request.applicantInfo.parentTel, + parentRelation = request.applicantInfo.parentRelation, + educationalStatus = request.applicationInfo.educationalStatus, + applicationType = request.applicationInfo.applicationType, + studyPlan = request.applicationInfo.studyPlan, + selfIntroduce = request.applicationInfo.selfIntroduce, + userId = user.id + ) + } +} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt index 848a529e..2bb42b62 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt @@ -15,7 +15,8 @@ data class QualificationCase( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, + // μΌλ°˜μ „ν˜• μ—¬λΆ€ val isCommon: Boolean = true, ) : ApplicationCase( @@ -37,7 +38,7 @@ data class QualificationCase( fun calculateAverageScore(): BigDecimal { val totalPoints = - optGrade + + historyGrade + socialGrade + mathGrade + englishGrade + @@ -55,7 +56,7 @@ data class QualificationCase( getScorePoint(mathGrade), getScorePoint(scienceGrade), getScorePoint(englishGrade), - getScorePoint(optGrade) + getScorePoint(historyGrade) ).sum() return BigDecimal(totalPoints).divide(BigDecimal(6), 3, RoundingMode.HALF_UP) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index 9e00e206..f9fe8169 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -1,15 +1,28 @@ package hs.kr.entrydsm.application.domain.applicationCase.service +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.applicationCase.factory.ApplicationCaseFactory import hs.kr.entrydsm.application.domain.applicationCase.model.ApplicationCase import hs.kr.entrydsm.application.domain.applicationCase.model.GraduationCase import hs.kr.entrydsm.application.domain.applicationCase.model.QualificationCase +import hs.kr.entrydsm.application.domain.applicationCase.model.vo.ExtraScoreItem +import hs.kr.entrydsm.application.domain.applicationCase.spi.ApplicationCaseQueryApplicationPort +import hs.kr.entrydsm.application.domain.applicationCase.spi.CommandApplicationCasePort +import hs.kr.entrydsm.application.domain.applicationCase.spi.QueryApplicationCasePort +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import hs.kr.entrydsm.application.global.annotation.DomainService @DomainService -class ApplicationCaseService { +class ApplicationCaseService( + private val applicationCaseQueryApplicationPort: ApplicationCaseQueryApplicationPort, + private val commandApplicationCasePort: CommandApplicationCasePort, + private val queryApplicationCasePort: QueryApplicationCasePort, + private val applicationCaseFactory: ApplicationCaseFactory, +) { fun hasEducationalStatusMismatch(application: Application, applicationCase: ApplicationCase): Boolean { application.educationalStatus ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() @@ -20,4 +33,84 @@ class ApplicationCaseService { applicationCase !is QualificationCase } } + + fun initializeApplicationCase(receiptCode: Long, educationalStatus: EducationalStatus?) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + if (!queryApplicationCasePort.isExistsApplicationCaseByApplication(application)) { + commandApplicationCasePort.save( + applicationCaseFactory.createApplicationCase( + receiptCode, + educationalStatus + ) + ) + } + } + + fun updateGraduationCase(application: Application, request: UpdateGraduationCaseRequest) { + val graduationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) + + if (graduationCase !is GraduationCase) { + throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + } + + request.run { + commandApplicationCasePort.save( + graduationCase.copy( + volunteerTime = volunteerTime, + absenceDayCount = absenceDayCount, + lectureAbsenceCount = lectureAbsenceCount, + latenessCount = latenessCount, + earlyLeaveCount = earlyLeaveCount, + koreanGrade = koreanGrade, + socialGrade = socialGrade, + historyGrade = historyGrade, + mathGrade = mathGrade, + scienceGrade = scienceGrade, + englishGrade = englishGrade, + techAndHomeGrade = techAndHomeGrade, + extraScoreItem = ExtraScoreItem( + hasCertificate = extraScore.hasCertificate, + hasCompetitionPrize = extraScore.hasCompetitionPrize + ) + ) + ) + } + } + + fun updateGraduationScore(receiptCode: Long, request: UpdateGraduationCaseRequest) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + updateGraduationCase(application, request) + } + + fun updateQualificationScore(receiptCode: Long, request: UpdateQualificationCaseRequest) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + updateQualificationCase(application, request) + } + + fun updateQualificationCase(application: Application, request: UpdateQualificationCaseRequest) { + val qualificationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) + + if (qualificationCase !is QualificationCase) { + throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + } + + commandApplicationCasePort.save( + qualificationCase.copy( + koreanGrade = request.koreanGrade, + scienceGrade = request.scienceGrade, + socialGrade = request.socialGrade, + mathGrade = request.mathGrade, + englishGrade = request.englishGrade, + historyGrade = request.historyGrade, + extraScoreItem = ExtraScoreItem( + hasCertificate = request.extraScore.hasCertificate, + hasCompetitionPrize = request.extraScore.hasCompetitionPrize + ) + ) + ) + } } \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt index 6aca35cd..f4772a33 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt @@ -32,7 +32,7 @@ class GetQualificationCaseUseCase( mathGrade = qualificationCase.mathGrade, scienceGrade = qualificationCase.scienceGrade, englishGrade = qualificationCase.englishGrade, - optGrade = qualificationCase.optGrade, + historyGrade = qualificationCase.historyGrade, extraScore = qualificationCase.extraScoreItem.run { GetExtraScoreResponse( hasCertificate = hasCertificate, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt index 2be3da66..31efad3b 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt @@ -37,7 +37,7 @@ class UpdateQualificationCaseUseCase( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - optGrade = request.optGrade, + historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt index 0c0f697c..1a24f976 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt @@ -1,7 +1,5 @@ package hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request -import hs.kr.entrydsm.application.domain.applicationCase.model.GraduationCase - data class UpdateGraduationCaseRequest( val volunteerTime: Int, val absenceDayCount: Int, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt index c55db39e..8c593bfb 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt @@ -8,6 +8,6 @@ data class UpdateQualificationCaseRequest( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt index fb222466..48916013 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt @@ -8,6 +8,6 @@ data class GetQualificationCaseResponse( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: GetExtraScoreResponse ) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt index 9d153192..cf092518 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt @@ -4,4 +4,14 @@ data class StudentNumber( val gradeNumber: String, val classNumber: String, val studentNumber: String, -) +) { + companion object { + fun from(studentNumber: String): StudentNumber { + return StudentNumber( + gradeNumber = studentNumber.substring(0, 1), + classNumber = studentNumber.substring(1, 3), + studentNumber = studentNumber.substring(3, 5) + ) + } + } +} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt index 4dd61efc..6b5029f1 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt @@ -1,15 +1,32 @@ package hs.kr.entrydsm.application.domain.graduationInfo.service +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions +import hs.kr.entrydsm.application.domain.graduationInfo.factory.GraduationInfoFactory import hs.kr.entrydsm.application.domain.graduationInfo.model.Graduation import hs.kr.entrydsm.application.domain.graduationInfo.model.GraduationInfo import hs.kr.entrydsm.application.domain.graduationInfo.model.Qualification +import hs.kr.entrydsm.application.domain.graduationInfo.model.vo.StudentNumber +import hs.kr.entrydsm.application.domain.graduationInfo.spi.CommandGraduationInfoPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.GraduationInfoQueryApplicationPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.GraduationInfoQuerySchoolPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.QueryGraduationInfoPort +import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest +import hs.kr.entrydsm.application.domain.school.exception.SchoolExceptions import hs.kr.entrydsm.application.global.annotation.DomainService +import java.time.YearMonth @DomainService -class GraduationInfoService { +class GraduationInfoService( + private val graduationInfoQueryApplicationPort: GraduationInfoQueryApplicationPort, + private val commandGraduationInfoPort: CommandGraduationInfoPort, + private val queryGraduationInfoPort: QueryGraduationInfoPort, + private val graduationInfoFactory: GraduationInfoFactory, + private val graduationInfoQuerySchoolPort: GraduationInfoQuerySchoolPort +) { fun hasEducationalStatusMismatch(application: Application, graduationInfo: GraduationInfo): Boolean { application.educationalStatus ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() @@ -20,4 +37,47 @@ class GraduationInfoService { graduationInfo !is Qualification } } + + fun changeGraduationInfo(receiptCode: Long, graduateDate: YearMonth) { + val application = graduationInfoQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + queryGraduationInfoPort.queryGraduationInfoByApplication(application)?.let { + commandGraduationInfoPort.save(it.changeGraduateDate(graduateDate)) + } ?: commandGraduationInfoPort.save( + graduationInfoFactory.createGraduationInfo( + receiptCode = receiptCode, + educationalStatus = application.educationalStatus, + graduateDate = graduateDate + ) + ) + } + + fun updateGraduationInformation(receiptCode: Long, request: UpdateGraduationInformationRequest) { + val application = graduationInfoQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + val graduation = queryGraduationInfoPort.queryGraduationInfoByApplication(application) + + if (graduation !is Graduation) throw GraduationInfoExceptions.EducationalStatusUnmatchedException() + + if (!graduationInfoQuerySchoolPort.isExistsSchoolBySchoolCode(request.schoolCode)) { + throw SchoolExceptions.SchoolNotFoundException() + } + + request.run { + commandGraduationInfoPort.save( + graduation.copy( + studentNumber = StudentNumber( + gradeNumber = gradeNumber, + classNumber = classNumber, + studentNumber = studentNumber + ), + schoolCode = schoolCode, + teacherName = teacherName, + teacherTel = teacherTel + ) + ) + } + } } \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt new file mode 100644 index 00000000..e564717a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt @@ -0,0 +1,51 @@ +package hs.kr.entrydsm.application.domain.score.service + +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions +import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions +import hs.kr.entrydsm.application.domain.score.model.Score +import hs.kr.entrydsm.application.domain.score.spi.CommandScorePort +import hs.kr.entrydsm.application.domain.score.spi.QueryScorePort +import hs.kr.entrydsm.application.domain.score.spi.ScoreQueryApplicationCasePort +import hs.kr.entrydsm.application.domain.score.spi.ScoreQueryApplicationPort +import hs.kr.entrydsm.application.global.annotation.DomainService + +@DomainService +class ScoreService( + private val commandScorePort: CommandScorePort, + private val queryScorePort: QueryScorePort, + private val scoreQueryApplicationPort: ScoreQueryApplicationPort, + private val scoreQueryApplicationCasePort: ScoreQueryApplicationCasePort, + private val calculateExtraScoreService: CalculateExtraScoreService +) { + fun createScore(receiptCode: Long) { + queryScorePort.queryScoreByReceiptCode(receiptCode)?.let { + throw ScoreExceptions.ScoreExistsException() + } + + commandScorePort.save( + Score(receiptCode = receiptCode) + ) + } + + fun updateScore(receiptCode: Long) { + val application = scoreQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + val applicationCase = scoreQueryApplicationCasePort.queryApplicationCaseByApplication(application) + ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + + val score = queryScorePort.queryScoreByReceiptCode(receiptCode) + ?: throw ScoreExceptions.ScoreNotFoundException() + + val extraScore = calculateExtraScoreService.calculateScore(applicationCase, application.isCommon()) + + commandScorePort.save( + score.updateScore( + applicationCase, + application.isCommon(), + extraScore + ) + ) + } +} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 6f0aa53b..a47504e6 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -3,22 +3,18 @@ package hs.kr.entrydsm.application.domain.application.event import com.fasterxml.jackson.databind.ObjectMapper import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.event.dto.UpdateEducationalStatusEvent -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics import org.springframework.kafka.core.KafkaTemplate import org.springframework.stereotype.Component -import java.time.YearMonth import java.util.* @Component class ApplicationProducer( private val mapper: ObjectMapper, private val createApplicationTemplate: KafkaTemplate, - private val updateEducationalStatusTemplate: KafkaTemplate, - private val submitApplicationFinalTemplate: KafkaTemplate, - private val createApplicationRollbackTemplate: KafkaTemplate + private val createApplicationRollbackTemplate: KafkaTemplate, ) : ApplicationEventPort { + override fun create(receiptCode: Long, userId: UUID) { val createApplicationEvent = CreateApplicationEvent( userId = userId, @@ -30,24 +26,10 @@ class ApplicationProducer( ) } - override fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) { - updateEducationalStatusTemplate.send( - KafkaTopics.UPDATE_EDUCATIONAL_STATUS, - UpdateEducationalStatusEvent(receiptCode, graduateDate), - ) - } - override fun createApplicationScoreRollback(receiptCode: Long) { createApplicationRollbackTemplate.send( KafkaTopics.CREATE_APPLICATION_SCORE_ROLLBACK, receiptCode ) } - - override fun submitApplicationFinal(receiptCode: Long) { - submitApplicationFinalTemplate.send( - KafkaTopics.SUBMIT_APPLICATION_FINAL, - receiptCode - ) - } } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt new file mode 100644 index 00000000..2ec8aba5 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt @@ -0,0 +1,43 @@ +package hs.kr.entrydsm.application.domain.application.event.dto + +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.math.BigDecimal +import java.time.YearMonth +import java.util.UUID + +data class SubmitApplicationEvent( + val receiptCode: Long, + val userId: UUID, + val educationalStatus: EducationalStatus, + val graduationDate: YearMonth, + val gradeNumber: String, + val classNumber: String, + val studentNumber: String, + val schoolCode: String, + val teacherName: String, + val schoolPhone: String, + val scoreData: ApplicationScoreData +) + +data class ApplicationScoreData( + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + val gedKorean: BigDecimal, + val gedSocial: BigDecimal, + val gedHistory: BigDecimal, + val gedMath: BigDecimal, + val gedScience: BigDecimal, + val gedEnglish: BigDecimal, + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int, + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index bf9b9fde..d2783a80 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,39 +1,33 @@ package hs.kr.entrydsm.application.domain.application.presentation -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.* -import hs.kr.entrydsm.application.domain.application.usecase.* -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.* -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.* +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.presentation.mapper.toSubmitApplicationRequest +import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase +import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase +import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase +import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationStatusResponse import hs.kr.entrydsm.application.domain.file.presentation.converter.ImageFileConverter import hs.kr.entrydsm.application.domain.file.presentation.dto.response.UploadImageWebResponse -import org.springframework.http.MediaType -import org.springframework.web.bind.annotation.* +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestPart +import org.springframework.web.bind.annotation.RestController import org.springframework.web.multipart.MultipartFile -import java.nio.charset.StandardCharsets -import javax.servlet.http.HttpServletResponse import javax.validation.Valid @RestController @RequestMapping("/application") class WebApplicationAdapter( - private val createApplicationUseCase: CreateApplicationUseCase, - private val getInformationUseCase: GetInformationUseCase, - private val getIntroduceUseCase: GetIntroduceUseCase, - private val getStudyPlanUseCase: GetStudyPlanUseCase, - private val updateApplicationTypeUseCase: UpdateApplicationTypeUseCase, - private val updateEducationalStatusUseCase: UpdateEducationalStatusUseCase, - private val updateInformationUseCase: UpdateInformationUseCase, - private val updateIntroduceUseCase: UpdateIntroduceUseCase, - private val updateStudyPlanUseCase: UpdateStudyPlanUseCase, private val uploadPhotoUseCase: UploadPhotoUseCase, - private val getApplicationTypeUseCase: GetApplicationTypeUseCase, private val getMyApplicationStatusUseCase: GetMyApplicationStatusUseCase, - private val introductionPdfUseCase: GetIntroductionPdfUseCase + private val submitApplicationUseCase: SubmitApplicationUseCase ) { + @PostMapping - fun createApplication() { - createApplicationUseCase.execute() - } + fun submitApplication(@RequestBody @Valid request: SubmitApplicationWebRequest) = + submitApplicationUseCase.execute(request.toSubmitApplicationRequest()) @PostMapping("/photo") fun uploadFile(@RequestPart(name = "image") file: MultipartFile): UploadImageWebResponse { @@ -44,107 +38,6 @@ class WebApplicationAdapter( ) } - @GetMapping - fun getInformation(): GetInformationResponse { - return getInformationUseCase.execute() - } - - @GetMapping("/intro") - fun getIntroduce(): GetIntroduceResponse { - return getIntroduceUseCase.execute() - } - - @GetMapping("/study-plan") - fun getStudyPlan(): GetStudyPlanResponse { - return getStudyPlanUseCase.execute() - } - - @PatchMapping("/type") - fun updateApplicationType( - @RequestBody @Valid request: UpdateApplicationTypeWebRequest, - ) { - updateApplicationTypeUseCase.execute( - request.run { - UpdateApplicationTypeRequest( - applicationType = applicationType, - applicationRemark = applicationRemark, - isDaejeon = isDaejeon, - isOutOfHeadcount = isOutOfHeadcount, - veteransNumber = veteransNumber - ) - }, - ) - } - - @GetMapping("/type") - fun getApplicationType(): GetApplicationTypeResponse = getApplicationTypeUseCase.execute() - - @PatchMapping("/graduation/type") - fun updateEducationalStatus( - @RequestBody @Valid request: UpdateEducationalStatusWebRequest, - ) { - updateEducationalStatusUseCase.execute( - request.run { - UpdateEducationalStatusRequest( - educationalStatus = educationalStatus, - graduateDate = graduateDate - ) - }, - ) - } - - @PatchMapping - fun updateInformation( - @RequestBody @Valid request: UpdateInformationWebRequest, - ) { - updateInformationUseCase.execute( - request.run { - UpdateInformationRequest( - sex = sex, - birthDate = birthDate, - applicantName = applicantName, - applicantTel = applicantTel, - parentTel = parentTel, - parentName = parentName, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - parentRelation = parentRelation - ) - }, - ) - } - - @PatchMapping("/intro") - fun updateIntroduce( - @RequestBody @Valid request: UpdateIntroduceWebRequest, - ) { - updateIntroduceUseCase.execute( - UpdateIntroduceRequest(request.content), - ) - } - - @PatchMapping("/study-plan") - fun updateStudyPlan( - @RequestBody @Valid request: UpdateStudyPlanWebRequest, - ) { - updateStudyPlanUseCase.execute( - UpdateStudyPlanRequest(request.content), - ) - } - -// @PostMapping("/final-submit") -// fun submitApplicationFinal() = submitApplicationFinalUseCase.execute() - @GetMapping("/status") fun getMyApplicationStatus(): GetApplicationStatusResponse = getMyApplicationStatusUseCase.execute() - - @GetMapping("/pdf/introduction", produces = [MediaType.APPLICATION_PDF_VALUE]) - fun getIntroductionPdf(response: HttpServletResponse): ByteArray { - response.setHeader("Content-Disposition", "attachment; filename=\"${encodeFileName()}.pdf\"") - return introductionPdfUseCase.execute() - } - private fun encodeFileName(): String { - return String(WebApplicationPdfAdapter.FILE_NAME.toByteArray(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) - } } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt new file mode 100644 index 00000000..d6b6585f --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt @@ -0,0 +1,18 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull + +data class AddressInfoWebRequest( + @field:NotNull(message = "λŒ€μ „ μ§€μ—­ μ—¬λΆ€λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val isDaejeon: Boolean, + + @field:NotBlank(message = "μ£Όμ†ŒλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val streetAddress: String, + + @field:NotBlank(message = "상세 μ£Όμ†ŒλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val detailAddress: String, + + @field:NotBlank(message = "μš°νŽΈλ²ˆν˜ΈλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val postalCode: String +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt new file mode 100644 index 00000000..c9e4fa26 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt @@ -0,0 +1,32 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.Sex +import java.time.LocalDate +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull +import javax.validation.constraints.Size + +data class ApplicantInfoWebRequest( + @field:NotBlank(message = "μ§€μ›μž 이름은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @field:Size(max = 10, message = "μ§€μ›μž 이름은 10자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val applicantName: String, + + @field:NotBlank(message = "μ§€μ›μž μ „ν™”λ²ˆν˜ΈλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val applicantTel: String, + + @field:NotNull(message = "생년월일은 ν•„μˆ˜μž…λ‹ˆλ‹€") + val birthDate: LocalDate, + + @field:NotNull(message = "μ§€μ›μž 성별은 ν•„μˆ˜μž…λ‹ˆλ‹€") + val applicantGender: Sex, + + @field:NotBlank(message = "보호자 이름은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @field:Size(max = 10, message = "보호자 이름은 10자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val parentName: String, + + @field:NotBlank(message = "보호자 μ „ν™”λ²ˆν˜ΈλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val parentTel: String, + + @field:NotBlank(message = "보호자 κ΄€κ³„λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val parentRelation: String, +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt new file mode 100644 index 00000000..f2415a8c --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt @@ -0,0 +1,37 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.time.YearMonth +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull +import javax.validation.constraints.Size + +data class ApplicationInfoWebRequest( + @field:NotNull(message = "지원 μœ ν˜•μ€ ν•„μˆ˜μž…λ‹ˆλ‹€") + val applicationType: ApplicationType, + + @field:NotNull(message = "ν•™λ ₯ μƒνƒœλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val educationalStatus: EducationalStatus, + + @field:NotBlank(message = "ν•™λ²ˆμ€ ν•„μˆ˜μž…λ‹ˆλ‹€") + @field:Size(min = 5, max = 5, message = "ν•™λ²ˆμ€ 5μžλ¦¬μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val studentNumber: String, + + @field:NotNull(message = "μ‘Έμ—…(μ˜ˆμ •)일은 ν•„μˆ˜μž…λ‹ˆλ‹€") + val graduationDate: YearMonth, + + @field:NotBlank(message = "ν•™μ—… κ³„νšμ„œλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + @field:Size(max = 1600, message = "ν•™μ—… κ³„νšμ„œλŠ” 1600자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val studyPlan: String, + + @field:NotBlank(message = "μžκΈ°μ†Œκ°œμ„œλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + @field:Size(max = 1600, message = "μžκΈ°μ†Œκ°œμ„œλŠ” 1600자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val selfIntroduce: String, + + @field:NotNull(message = "κ΅­κ°€μœ κ³΅μž μžλ…€ μ—¬λΆ€λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val nationalMeritChild: Boolean, + + @field:NotNull(message = "νŠΉλ³„μ „ν˜• λŒ€μƒ μ—¬λΆ€λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val specialAdmissionTarget: Boolean +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt new file mode 100644 index 00000000..9011f42f --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt @@ -0,0 +1,20 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.PositiveOrZero + +data class AttendanceInfoWebRequest( + @PositiveOrZero + val absence: Int, + + @PositiveOrZero + val tardiness: Int, + + @PositiveOrZero + val earlyLeave: Int, + + @PositiveOrZero + val classExit: Int, + + @PositiveOrZero + val volunteer: Int +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt new file mode 100644 index 00000000..33375da8 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt @@ -0,0 +1,11 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotNull + +data class AwardAndCertificateInfoWebRequest( + @field:NotNull(message = "μ•Œκ³ λ¦¬μ¦˜ μˆ˜μƒ μ—¬λΆ€λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val algorithmAward: Boolean, + + @field:NotNull(message = "자격증 μ—¬λΆ€λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val infoProcessingCert: Boolean +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt new file mode 100644 index 00000000..15b6f7bd --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt @@ -0,0 +1,61 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import java.math.BigDecimal +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern + +data class GradeInfoWebRequest( + @field:NotNull(message = "κ΅­μ–΄ 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val koreanGrade: String, + + @field:NotNull(message = "μ‚¬νšŒ 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val socialGrade: String, + + @field:NotNull(message = "역사 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val historyGrade: String, + + @field:NotNull(message = "μˆ˜ν•™ 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val mathGrade: String, + + @field:NotNull(message = "κ³Όν•™ 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val scienceGrade: String, + + @field:NotNull(message = "μ˜μ–΄ 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val englishGrade: String, + + @field:NotNull(message = "κΈ°μˆ Β·κ°€μ • 성적은 ν•„μˆ˜μž…λ‹ˆλ‹€") + @Pattern(regexp = "[A-E,X]{4}") + val techAndHomeGrade: String, + + @field:DecimalMin(value = "0.0", message = "GED κ΅­μ–΄ μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED κ΅­μ–΄ μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedKorean: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED μ‚¬νšŒ μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED μ‚¬νšŒ μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedSocial: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED μˆ˜ν•™ μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED μˆ˜ν•™ μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedMath: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED κ³Όν•™ μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED κ³Όν•™ μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedScience: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED μ˜μ–΄ μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED μ˜μ–΄ μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedEnglish: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 역사 μ μˆ˜λŠ” 0점 이상이어야 ν•©λ‹ˆλ‹€") + @field:DecimalMax(value = "100.0", message = "GED 역사 μ μˆ˜λŠ” 100점 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€") + val gedHistory: BigDecimal = BigDecimal.ZERO +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt new file mode 100644 index 00000000..2bfb73c7 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt @@ -0,0 +1,17 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotBlank + +data class SchoolInfoWebRequest( + @field:NotBlank(message = "학ꡐ μ½”λ“œλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val schoolCode: String, + + @field:NotBlank(message = "학ꡐλͺ…은 ν•„μˆ˜μž…λ‹ˆλ‹€") + val schoolName: String, + + @field:NotBlank(message = "학ꡐ μ „ν™”λ²ˆν˜ΈλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val schoolPhone: String, + + @field:NotBlank(message = "λ‹΄μž„ ꡐ사 이름은 ν•„μˆ˜μž…λ‹ˆλ‹€") + val teacherName: String +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt new file mode 100644 index 00000000..a5e6a2da --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -0,0 +1,26 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotNull + +data class SubmitApplicationWebRequest( + @field:NotNull(message = "μ§€μ›μž μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val applicantInfo: ApplicantInfoWebRequest, + + @field:NotNull(message = "μ£Όμ†Œ μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val addressInfo: AddressInfoWebRequest, + + @field:NotNull(message = "μ›μ„œ μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val applicationInfo: ApplicationInfoWebRequest, + + @field:NotNull(message = "학ꡐ μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val schoolInfo: SchoolInfoWebRequest, + + @field:NotNull(message = "성적 μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val gradeInfo: GradeInfoWebRequest, + + @field:NotNull(message = "좜결 μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val attendanceInfo: AttendanceInfoWebRequest, + + @field:NotNull(message = "μˆ˜μƒ 및 자격증 μ •λ³΄λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€") + val awardAndCertificateInfo: AwardAndCertificateInfoWebRequest +) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt new file mode 100644 index 00000000..41adce48 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt @@ -0,0 +1,72 @@ +package hs.kr.entrydsm.application.domain.application.presentation.mapper + +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AddressInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ApplicantInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ApplicationInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AttendanceInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AwardAndCertificateInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.GradeInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SchoolInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest + +fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationRequest = + SubmitApplicationRequest( + applicantInfo = ApplicantInfo( + applicantName = applicantInfo.applicantName, + applicantTel = applicantInfo.applicantTel, + birthDate = applicantInfo.birthDate, + applicantGender = applicantInfo.applicantGender, + parentName = applicantInfo.parentName, + parentTel = applicantInfo.parentTel, + parentRelation = applicantInfo.parentRelation, + ), + addressInfo = AddressInfo( + isDaejeon = addressInfo.isDaejeon, + streetAddress = addressInfo.streetAddress, + detailAddress = addressInfo.detailAddress, + postalCode = addressInfo.postalCode + ), + applicationInfo = ApplicationInfo( + applicationType = applicationInfo.applicationType, + educationalStatus = applicationInfo.educationalStatus, + studentNumber = applicationInfo.studentNumber, + graduationDate = applicationInfo.graduationDate, + studyPlan = applicationInfo.studyPlan, + selfIntroduce = applicationInfo.selfIntroduce, + nationalMeritChild = applicationInfo.nationalMeritChild, + specialAdmissionTarget = applicationInfo.specialAdmissionTarget + ), + schoolInfo = SchoolInfo( + schoolCode = schoolInfo.schoolCode, + schoolName = schoolInfo.schoolName, + schoolPhone = schoolInfo.schoolPhone, + teacherName = schoolInfo.teacherName + ), + gradeInfo = GradeInfo( + koreanGrade = gradeInfo.koreanGrade, + socialGrade = gradeInfo.socialGrade, + historyGrade = gradeInfo.historyGrade, + mathGrade = gradeInfo.mathGrade, + scienceGrade = gradeInfo.scienceGrade, + englishGrade = gradeInfo.englishGrade, + techAndHomeGrade = gradeInfo.techAndHomeGrade, + gedKorean = gradeInfo.gedKorean, + gedSocial = gradeInfo.gedSocial, + gedMath = gradeInfo.gedMath, + gedScience = gradeInfo.gedScience, + gedEnglish = gradeInfo.gedEnglish, + gedHistory = gradeInfo.gedHistory + ), + attendanceInfo = AttendanceInfo( + absence = attendanceInfo.absence, + tardiness = attendanceInfo.tardiness, + earlyLeave = attendanceInfo.earlyLeave, + classExit = attendanceInfo.classExit, + volunteer = attendanceInfo.volunteer + ), + awardAndCertificateInfo = AwardAndCertificateInfo( + algorithmAward = awardAndCertificateInfo.algorithmAward, + infoProcessingCert = awardAndCertificateInfo.infoProcessingCert + ) + ) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt index f52153b2..8c304fba 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt @@ -15,7 +15,7 @@ class QualificationCaseJpaEntity( override val extraScoreItem: ExtraScoreItem, val koreanGrade: BigDecimal, val socialGrade: BigDecimal, - val optGrade: BigDecimal, + val historyGrade: BigDecimal, val mathGrade: BigDecimal, val scienceGrade: BigDecimal, val englishGrade: BigDecimal, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt index e5f55937..71ea1f9b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt @@ -1,67 +1,15 @@ package hs.kr.entrydsm.application.domain.applicationCase.presentation -import hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request.UpdateGraduationCaseWebRequest -import hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request.UpdateQualificationCaseWebRequest import hs.kr.entrydsm.application.domain.applicationCase.usecase.GetGraduationCaseUseCase import hs.kr.entrydsm.application.domain.applicationCase.usecase.GetQualificationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.UpdateGraduationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.UpdateQualificationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import org.springframework.web.bind.annotation.* -import javax.validation.Valid @RestController @RequestMapping("/score") class WebApplicationCaseAdapter( - private val updateGraduationCaseUseCase: UpdateGraduationCaseUseCase, - private val updateQualificationCaseUseCase: UpdateQualificationCaseUseCase, private val getGraduationCaseUseCase: GetGraduationCaseUseCase, private val getQualificationCaseUseCase: GetQualificationCaseUseCase, ) { - @PatchMapping("/graduation") - fun updateGraduationCase( - @RequestBody @Valid request: UpdateGraduationCaseWebRequest, - ) { - updateGraduationCaseUseCase.execute( - request.run { - UpdateGraduationCaseRequest( - volunteerTime = volunteerTime, - absenceDayCount = absenceDayCount, - lectureAbsenceCount = lectureAbsenceCount, - latenessCount = latenessCount, - earlyLeaveCount = earlyLeaveCount, - koreanGrade = koreanGrade, - socialGrade = socialGrade, - historyGrade = historyGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - techAndHomeGrade = techAndHomeGrade, - extraScore = extraScore - ) - } - ) - } - - @PatchMapping("/qualification") - fun updateQualificationCase( - @RequestBody @Valid request: UpdateQualificationCaseWebRequest, - ) { - updateQualificationCaseUseCase.execute( - request.run { - UpdateQualificationCaseRequest( - koreanGrade = koreanGrade, - socialGrade = socialGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - optGrade = optGrade, - extraScore = extraScore - ) - } - ) - } @GetMapping("/graduation") fun getGraduationCase() = getGraduationCaseUseCase.execute() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt deleted file mode 100644 index 1195d8f1..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt +++ /dev/null @@ -1,33 +0,0 @@ -package hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request - -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest -import javax.validation.constraints.Pattern -import javax.validation.constraints.PositiveOrZero - -data class UpdateGraduationCaseWebRequest( - @PositiveOrZero - val volunteerTime: Int, - @PositiveOrZero - val absenceDayCount: Int, - @PositiveOrZero - val lectureAbsenceCount: Int, - @PositiveOrZero - val latenessCount: Int, - @PositiveOrZero - val earlyLeaveCount: Int, - @Pattern(regexp = "[A-E,X]{4}") - val koreanGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val socialGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val historyGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val mathGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val scienceGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val englishGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val techAndHomeGrade: String, - val extraScore: ExtraScoreRequest -) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt deleted file mode 100644 index 72b4ad39..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt +++ /dev/null @@ -1,25 +0,0 @@ -package hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request - -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest -import java.math.BigDecimal -import javax.validation.constraints.DecimalMax -import javax.validation.constraints.DecimalMin -import javax.validation.constraints.Digits -import javax.validation.constraints.NotNull - -data class UpdateQualificationCaseWebRequest( - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val koreanGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val socialGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val mathGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val scienceGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val englishGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val optGrade: BigDecimal = BigDecimal.ZERO, - @field:NotNull - val extraScore: ExtraScoreRequest -) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt deleted file mode 100644 index b963d841..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package hs.kr.entrydsm.application.domain.graduationInfo.presentation - -import hs.kr.entrydsm.application.domain.graduationInfo.presentation.dto.request.UpdateGraduationInformationWebRequest -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.GetGraduationInformationUseCase -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.UpdateGraduationInformationUseCase -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PatchMapping -import org.springframework.web.bind.annotation.RequestBody -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController -import javax.validation.Valid - -@RestController -@RequestMapping("/application") -class WebGraduationInfoAdapter( - private val getGraduationInformationUseCase: GetGraduationInformationUseCase, - private val updateGraduationInformationUseCase: UpdateGraduationInformationUseCase, -) { - @GetMapping("/graduation") - fun getGraduationInformation() = getGraduationInformationUseCase.execute() - - @PatchMapping("/graduation") - fun updateGraduationInformation( - @RequestBody @Valid request: UpdateGraduationInformationWebRequest, - ) { - updateGraduationInformationUseCase.execute( - request.run { - UpdateGraduationInformationRequest( - gradeNumber = gradeNumber, - classNumber = classNumber, - studentNumber = studentNumber, - schoolCode = schoolCode, - teacherName = teacherName, - teacherTel = teacherTel - ) - }, - ) - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt deleted file mode 100644 index ea1b1aaf..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt +++ /dev/null @@ -1,46 +0,0 @@ -package hs.kr.entrydsm.application.domain.graduationInfo.presentation.dto.request - -import org.hibernate.validator.constraints.Length -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size - -data class UpdateGraduationInformationWebRequest( - @Length( - max = 1, - message = "grade_numberλŠ” 1자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "grade_numberλŠ” μˆ«μžμ—¬μ•Όν•©λ‹ˆλ‹€.", - ) - val gradeNumber: String, - @Length( - max = 2, - message = "class_numberλŠ” 2자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "class_numberλŠ” μˆ«μžμ—¬μ•Όν•©λ‹ˆλ‹€.", - ) - val classNumber: String, - @Length( - max = 2, - message = "student_numberλŠ” 2자 μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "student_numberλŠ” μˆ«μžμ—¬μ•Όν•©λ‹ˆλ‹€.", - ) - val studentNumber: String, - @NotBlank(message = "school_codeλŠ” Null, 곡백, 띄어쓰기λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.") - val schoolCode: String, - - @NotBlank(message = "teacher_name Null, 곡백, 띄어쓰기λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.",) - @Size(max = 4) - val teacherName: String, - - @NotBlank(message = "teacher_tel Null, 곡백, 띄어쓰기λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.") - val teacherTel: String -) { - companion object { - const val NUMERIC_REGEXP = "^\\d{1,5}" - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/response/.gitkeep b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/response/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt deleted file mode 100644 index 6e93d1cc..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt +++ /dev/null @@ -1,40 +0,0 @@ -package hs.kr.entrydsm.application.domain.score.event - -import com.fasterxml.jackson.databind.ObjectMapper -import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.score.usecase.CreateScoreUseCase -import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics -import org.springframework.kafka.annotation.KafkaListener -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Recover -import org.springframework.retry.annotation.Retryable -import org.springframework.stereotype.Component - -@Component -class CreateScoreApplicationConsumer ( - private val mapper: ObjectMapper, - private val createScoreUseCase: CreateScoreUseCase, - private val applicationEventPort: ApplicationEventPort -) { - @Retryable( - value = [Exception::class], - maxAttempts = 3, - backoff = Backoff(delay = 100) - ) - @KafkaListener( - topics = [KafkaTopics.CREATE_APPLICATION], - groupId = "create-score", - containerFactory = "kafkaListenerContainerFactory", - ) - fun createScore(message: String) { - val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) - createScoreUseCase.execute(createApplicationEvent.receiptCode) - } - - @Recover - fun recover(exception: Exception, message: String) { - val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) - applicationEventPort.createApplicationScoreRollback(createApplicationEvent.receiptCode) - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt new file mode 100644 index 00000000..9cec434f --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt @@ -0,0 +1,17 @@ +package hs.kr.entrydsm.application.global.document.graduationInfo.config + +import java.time.YearMonth +import javax.persistence.AttributeConverter +import javax.persistence.Converter + +@Converter(autoApply = true) +class ConverterYearMonthAttribute : AttributeConverter { + + override fun convertToDatabaseColumn(attribute: YearMonth?): String? { + return attribute?.toString() + } + + override fun convertToEntityAttribute(dbData: String?): YearMonth? { + return dbData?.let { YearMonth.parse(it) } + } +} \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt index a32dfb25..f72dc69f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt @@ -253,7 +253,8 @@ class PdfDataConverter( put("mathThirdGradeFirstSemester", applicationCase.mathGrade) put("scienceThirdGradeFirstSemester", applicationCase.scienceGrade) put("englishThirdGradeFirstSemester", applicationCase.englishGrade) - put("techAndHomeThirdGradeFirstSemester", applicationCase.optGrade) + // TODO μΆ”ν›„ μ—­μ‚¬λ‘œ μˆ˜μ •ν•΄μ•Ό 함. + put("techAndHomeThirdGradeFirstSemester", applicationCase.historyGrade) } } else if(applicationCase is GraduationCase) { val grades = applicationCase.gradesPerSubject() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt index 8efa7d0b..f6312db1 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt @@ -283,7 +283,7 @@ class PrintApplicationCheckListGenerator( getCell(dh + 13, 3).setCellValue("X") getCell(dh + 14, 3).setCellValue(qualificationCase.mathGrade.toString()) getCell(dh + 15, 3).setCellValue(qualificationCase.scienceGrade.toString()) - getCell(dh + 16, 3).setCellValue(qualificationCase.optGrade.toString()) + getCell(dh + 16, 3).setCellValue(qualificationCase.historyGrade.toString()) getCell(dh + 17, 3).setCellValue(qualificationCase.englishGrade.toString()) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt index 32d2093e..17deac24 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt @@ -121,7 +121,7 @@ class PrintApplicationInfoGenerator( row.createCell(17).setCellValue("X") row.createCell(18).setCellValue(applicationService.safeGetValue(qualificationCase.mathGrade)) row.createCell(19).setCellValue(applicationService.safeGetValue(qualificationCase.scienceGrade)) - row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.optGrade)) + row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.historyGrade)) row.createCell(21).setCellValue(applicationService.safeGetValue(qualificationCase.englishGrade)) for (i in 22..53) { row.createCell(i).setCellValue("X") diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt index 7a330303..63c545cd 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt @@ -2,6 +2,7 @@ package hs.kr.entrydsm.application.global.kafka.config object KafkaTopics { const val CREATE_APPLICATION = "create-application" + const val SUBMIT_APPLICATION = "submit-application" const val UPDATE_EDUCATIONAL_STATUS = "update-educational-status" const val UPDATE_GRADUATION_CASE = "update-graduation-case" const val UPDATE_QUALIFICATION_CASE = "update-qualification-case"