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 aea823d..68b02ef 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,46 +60,41 @@ 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(); } @Override 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); @@ -105,13 +102,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