Skip to content

Commit

Permalink
[Fix] IsQuizCleared, IsChapterCleared 가 이미 등록되어있는 경우에도 또 등록되는 문제를 해결했…
Browse files Browse the repository at this point in the history
…습니다.
  • Loading branch information
NARUBROWN committed Nov 23, 2024
1 parent 04e095b commit 0f1e049
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.codingland.domain.image.controller;
package com.codingland.apiservice.image.presentation;

import com.codingland.domain.image.service.ImageService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
Expand All @@ -13,6 +14,7 @@
@RestController
@RequestMapping("/v1/api/image")
@RequiredArgsConstructor
@Tag(name = "[Image] 이미지 API", description = "사진 조회")
public class ImageController {
private final ImageService imageService;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@Getter
@AllArgsConstructor
public enum ChapterErrorCode implements BaseErrorCode {
NOT_FOUND_CHAPTER_ERROR(HttpStatus.BAD_REQUEST, "2000", "챕터 정보가 존재하지 않습니다."),
NOT_FOUND_CHAPTER_ERROR(HttpStatus.BAD_REQUEST, "2000", "챕터 정보가 존재하지 않습니다.")
;
private final HttpStatus httpStatus;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
@AllArgsConstructor
public enum IsChapterClearedErrorCode implements BaseErrorCode {
NOT_FOUND_IS_CHAPTER_CLEARED_ERROR(HttpStatus.BAD_REQUEST, "2000", "챕터 완료 정보가 존재하지 않습니다."),
ALREADY_EXIST(HttpStatus.BAD_REQUEST, "2000", "챕터 완료 정보가 이미 존재합니다.")
;
private final HttpStatus httpStatus;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
@AllArgsConstructor
public enum IsQuizClearedErrorCode implements BaseErrorCode {
NOT_FOUND_QUIZ_ERROR(HttpStatus.BAD_REQUEST, "2000", "퀴즈 완료 정보가 존재하지 않습니다."),
ALREADY_EXIST(HttpStatus.BAD_REQUEST, "2000", "퀴즈 완료 정보가 이미 존재합니다.")
;
private final HttpStatus httpStatus;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,22 @@ public class IsChapterClearedService {

/**
* 풀이 완료 된 챕터를 완료처리 하는 메서드.
* 챕터 완료를 하기에 앞서 이미 완료 처리된 ROW가 존재하는지 확인하고, 존재한다면 처리하지 않습니다.
* @author 김원정
* @param chapter_id 챕터의 id
* @param user_id 유저의 id
* @throws UserException 유저가 존재하지 않을 경우 예외가 발생합니다.
* @throws ChapterException 챕터가 존재하지 않을 경우 예외가 발생합니다.
* @throws IsChapterClearedException 챕터 완료 여부가 이미 등록되었다면 예외가 발생합니다.
*/
public void clearedChapter(Long chapter_id, Long user_id) {
User foundUser = userRepository.findById(user_id)
.orElseThrow(() -> new UserException(UserErrorCode.No_USER_INFO));
Chapter foundChapter = chapterRepository.findById(chapter_id)
.orElseThrow(() -> new ChapterException(ChapterErrorCode.NOT_FOUND_CHAPTER_ERROR));
if (isChapterClearedRepository.findByChapterAndUser(foundChapter, foundUser).isPresent()) {
throw new IsChapterClearedException(IsChapterClearedErrorCode.ALREADY_EXIST);
}
IsChapterCleared newIsChapterCleared = IsChapterCleared.thisChapterIsCleared(foundChapter, foundUser);
isChapterClearedRepository.save(newIsChapterCleared);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,23 @@ public class IsQuizClearedService {

/**
* 풀이가 완료된 퀴즈를 유저 정보와 함께 등록처리 합니다.
* 풀이 완료 처리 전, 해당 퀴즈 id와 유저 Id로 등록된 ROW가 있는지 확인하고 있다면 예외처리합니다.
* @author 김원정
* @param quiz_id 퀴즈 id
* @param user_id 유저 id
* @throws UserException 유저가 존재하지 않을 경우 발생하는 예외입니다.
* @throws QuizException 문제가 존재하지 않을 경우 발생하는 예외입니다.
* @throws IsQuizClearedException 이미 풀이 완료가 처리 된 후라면 발생하는 예외입니다.
*/
@Transactional
public void solveProblem(Long quiz_id, Long user_id) {
User foundUser = userRepository.findById(user_id)
.orElseThrow(() -> new UserException(UserErrorCode.No_USER_INFO));
Quiz foundQuiz = quizRepository.findById(quiz_id)
.orElseThrow(() -> new QuizException(QuizErrorCode.NOT_FOUND_QUIZ_ERROR));
if (isQuizClearedRepository.findByQuizAndUser(foundQuiz, foundUser).isPresent()) {
throw new IsQuizClearedException(IsQuizClearedErrorCode.ALREADY_EXIST);
}
IsQuizCleared newIsQuizCleared = IsQuizCleared.thisProblemIsCleared(foundQuiz, foundUser);
isQuizClearedRepository.save(newIsQuizCleared);
}
Expand Down

0 comments on commit 0f1e049

Please sign in to comment.