From 50451838e6896cbd50dca671e75a8a1a6adc9073 Mon Sep 17 00:00:00 2001 From: Koo Date: Thu, 6 Feb 2025 02:34:32 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/SurveyTableRepository.java | 2 +- .../service/survey/SurveyServiceImpl.java | 65 ++++++++----------- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/example/prdoit/repository/SurveyTableRepository.java b/src/main/java/com/example/prdoit/repository/SurveyTableRepository.java index d8d9cbd..5233c48 100644 --- a/src/main/java/com/example/prdoit/repository/SurveyTableRepository.java +++ b/src/main/java/com/example/prdoit/repository/SurveyTableRepository.java @@ -9,5 +9,5 @@ @Repository public interface SurveyTableRepository extends JpaRepository { - Optional findById(IdTable idTable); + SurveyTable findByIdId(String userId); } diff --git a/src/main/java/com/example/prdoit/service/survey/SurveyServiceImpl.java b/src/main/java/com/example/prdoit/service/survey/SurveyServiceImpl.java index bb35ee9..726edb1 100644 --- a/src/main/java/com/example/prdoit/service/survey/SurveyServiceImpl.java +++ b/src/main/java/com/example/prdoit/service/survey/SurveyServiceImpl.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.Optional; @@ -28,12 +27,15 @@ public class SurveyServiceImpl implements SurveyService { public void saveSurvey(SurveyDto surveyDto) { log.info("[saveSurvey] 설문조사 저장 로직 시작"); + // DB 사용자 조회 IdTable idTable = idTableRepository.findById(surveyDto.getId()) .orElseThrow(() -> new CustomException("사용자를 찾을 수 없습니다.")); + // 기존 설문조사 존재 여부 확인 - Optional existingSurvey = surveyTableRepository.findById(idTable); - if(existingSurvey.isPresent()) { - log.error("[saveSurvey] 이미 설문조사가 존재함"); + SurveyTable existingSurvey = surveyTableRepository.findByIdId(surveyDto.getId()); + + if(existingSurvey!=null) { + log.info("[saveSurvey] 이미 설문조사가 존재함"); throw new CustomException("이미 설문조사가 존재합니다."); } @@ -58,18 +60,20 @@ public void saveSurvey(SurveyDto surveyDto) { public SurveyDto getSurvey(String id) { log.info("[getSurvey] 설문조사 조회 로직 시작"); - // IdTable 먼저 찾기 - IdTable idTable = idTableRepository.findById(id) - .orElseThrow(() -> new CustomException("사용자를 찾을 수 없습니다.")); - // SurveyTable 찾기 - SurveyTable survey = surveyTableRepository.findById(idTable) - .orElseThrow(() -> { - log.error("[getSurvey] 설문조사를 찾을 수 없음"); - return new CustomException("설문조사 정보를 찾을 수 없습니다."); - }); + SurveyTable survey = surveyTableRepository.findByIdId(id); + if(survey == null) { + log.error("[getSurvey] 설문조사를 찾을 수 없음"); + throw new CustomException("설문조사 정보를 찾을 수 없습니다."); + } - return convertToDto(survey); + return SurveyDto.builder() + .surveyNum1(survey.getSurveyNum1()) + .surveyNum2(survey.getSurveyNum2()) + .surveyNum3(survey.getSurveyNum3()) + .surveyNum4(survey.getSurveyNum4()) + .id(survey.getId().getId()) + .build(); } @@ -77,28 +81,21 @@ public SurveyDto getSurvey(String id) { public void updateSurvey(SurveyDto surveyDto) { log.info("[updateSurvey] 설문조사 수정 로직 시작"); - // DTO에서 ID를 가져와서 IdTable 객체 조회 - IdTable idTable = idTableRepository.findById(surveyDto.getId()) - .orElseThrow(() -> { - log.error("[updateSurvey] IdTable 조회 실패"); - return new CustomException("사용자를 찾을 수 없습니다."); - }); - - // IdTable을 사용하여 SurveyTable 조회 - SurveyTable survey = surveyTableRepository.findById(idTable) - .orElseThrow(() -> { - log.error("[updateSurvey] 수정할 설문조사를 찾을 수 없음"); - return new CustomException("수정할 설문조사를 찾을 수 없습니다."); - }); + SurveyTable survey = surveyTableRepository.findByIdId(surveyDto.getId()); + + if(survey == null) { + log.error("[getSurvey] 설문조사를 찾을 수 없음"); + throw new CustomException("설문조사 정보를 찾을 수 없습니다."); + } try { - // 직접 필드 값을 변경 (엔터티 내 메서드 없이) survey.setSurveyNum1(surveyDto.getSurveyNum1()); survey.setSurveyNum2(surveyDto.getSurveyNum2()); survey.setSurveyNum3(surveyDto.getSurveyNum3()); survey.setSurveyNum4(surveyDto.getSurveyNum4()); - // JPA의 변경 감지(Dirty Checking)로 자동 업데이트 + surveyTableRepository.save(survey); + log.info("[updateSurvey] 설문조사 수정 성공"); } catch (Exception e) { log.error("[updateSurvey] 데이터베이스 접근 오류", e); @@ -106,13 +103,5 @@ public void updateSurvey(SurveyDto surveyDto) { } } - private SurveyDto convertToDto(SurveyTable survey) { - return SurveyDto.builder() - .surveyNum1(survey.getSurveyNum1()) - .surveyNum2(survey.getSurveyNum2()) - .surveyNum3(survey.getSurveyNum3()) - .surveyNum4(survey.getSurveyNum4()) - .id(survey.getId().getId()) - .build(); - } + } \ No newline at end of file