From b245bde09bc053025fad102057216eb1fad8f8e8 Mon Sep 17 00:00:00 2001 From: oosedus Date: Mon, 2 Sep 2024 23:31:04 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20=EC=8A=A4=EC=BC=80=EC=A5=B4=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/exception/enums/SuccessCode.java | 3 ++- .../schedule/controller/ScheduleController.java | 15 +++++++++++++++ .../request/UpdateScheduleProgressRequest.java | 11 +++++++++++ .../schedule/service/ScheduleService.java | 15 +++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/letscareer/schedule/dto/request/UpdateScheduleProgressRequest.java diff --git a/src/main/java/com/example/letscareer/common/exception/enums/SuccessCode.java b/src/main/java/com/example/letscareer/common/exception/enums/SuccessCode.java index 1fca655..937bc52 100644 --- a/src/main/java/com/example/letscareer/common/exception/enums/SuccessCode.java +++ b/src/main/java/com/example/letscareer/common/exception/enums/SuccessCode.java @@ -26,7 +26,8 @@ public enum SuccessCode { SELF_INTRO_SAVE_SUCCESS(HttpStatus.CREATED, "자기소개 추가 성공"), APPEAL_CAREERS_ADD_SUCCESS(HttpStatus.CREATED, "어필할 커리어 추가 성공"), STAGE_ADD_SUCCESS(HttpStatus.CREATED, "전형 단계 추가 성공"), - STAGE_UPDATE_SUCCESS(HttpStatus.OK, "전형 단계 상태 변경 성공"); + STAGE_UPDATE_SUCCESS(HttpStatus.OK, "전형 단계 상태 변경 성공"), + UPDATE_SCHEDULE_PROGRESS_SUCCESS(HttpStatus.OK, "일정 진행 상태 변경 성공"),; private final HttpStatus httpStatus; private final String message; diff --git a/src/main/java/com/example/letscareer/schedule/controller/ScheduleController.java b/src/main/java/com/example/letscareer/schedule/controller/ScheduleController.java index c7f5ebe..99c5c06 100644 --- a/src/main/java/com/example/letscareer/schedule/controller/ScheduleController.java +++ b/src/main/java/com/example/letscareer/schedule/controller/ScheduleController.java @@ -8,6 +8,7 @@ import com.example.letscareer.common.exception.model.BadRequestException; import com.example.letscareer.common.exception.model.NotFoundException; import com.example.letscareer.schedule.dto.request.SchedulePostRequest; +import com.example.letscareer.schedule.dto.request.UpdateScheduleProgressRequest; import com.example.letscareer.schedule.dto.response.*; import com.example.letscareer.schedule.service.ScheduleService; import lombok.RequiredArgsConstructor; @@ -100,4 +101,18 @@ public ApiResponse postNewSchedule( return ErrorResponse.error(e.getErrorCode()); } } + + @PutMapping("/{scheduleId}/progress") + public ApiResponse updateScheduleProgress( + @RequestHeader("userId") Long userId, + @PathVariable Long scheduleId, + @RequestBody UpdateScheduleProgressRequest request + ){ + try{ + scheduleService.updateScheduleProgress(userId, scheduleId, request); + return SuccessNonDataResponse.success(SuccessCode.UPDATE_SCHEDULE_PROGRESS_SUCCESS); + }catch (NotFoundException | BadRequestException e) { + return ErrorResponse.error(e.getErrorCode()); + } + } } diff --git a/src/main/java/com/example/letscareer/schedule/dto/request/UpdateScheduleProgressRequest.java b/src/main/java/com/example/letscareer/schedule/dto/request/UpdateScheduleProgressRequest.java new file mode 100644 index 0000000..8790a8d --- /dev/null +++ b/src/main/java/com/example/letscareer/schedule/dto/request/UpdateScheduleProgressRequest.java @@ -0,0 +1,11 @@ +package com.example.letscareer.schedule.dto.request; + +import com.example.letscareer.schedule.domain.Progress; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; + +public record UpdateScheduleProgressRequest( + @Enumerated(EnumType.STRING) + Progress progress +) { +} diff --git a/src/main/java/com/example/letscareer/schedule/service/ScheduleService.java b/src/main/java/com/example/letscareer/schedule/service/ScheduleService.java index 199daf2..7beee03 100644 --- a/src/main/java/com/example/letscareer/schedule/service/ScheduleService.java +++ b/src/main/java/com/example/letscareer/schedule/service/ScheduleService.java @@ -7,6 +7,7 @@ import com.example.letscareer.schedule.domain.Schedule; import com.example.letscareer.schedule.dto.*; import com.example.letscareer.schedule.dto.request.SchedulePostRequest; +import com.example.letscareer.schedule.dto.request.UpdateScheduleProgressRequest; import com.example.letscareer.schedule.dto.response.*; import com.example.letscareer.schedule.repository.ScheduleRepository; import com.example.letscareer.stage.domain.Stage; @@ -25,6 +26,7 @@ import java.time.Period; import java.util.*; +import static com.example.letscareer.common.exception.enums.ErrorCode.SCHEDULE_NOT_FOUND_EXCEPTION; import static com.example.letscareer.common.exception.enums.ErrorCode.USER_NOT_FOUND_EXCEPTION; @Service @@ -349,6 +351,19 @@ public void postSchedule(Long userId,SchedulePostRequest request){ } } + + @Transactional + public void updateScheduleProgress(Long userId, Long scheduleId, UpdateScheduleProgressRequest request) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new NotFoundException(USER_NOT_FOUND_EXCEPTION)); + Schedule schedule = scheduleRepository.findByUserAndScheduleId(user, scheduleId) + .orElseThrow(() -> new NotFoundException(SCHEDULE_NOT_FOUND_EXCEPTION)); + + schedule.setProgress(request.progress()); + scheduleRepository.save(schedule); + } + + private int calculateDday(LocalDate deadline) { int dday = Period.between(LocalDate.now(), deadline).getDays(); return dday;