Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@

@Repository
public interface SurveyTableRepository extends JpaRepository<SurveyTable, Integer> {
Optional<SurveyTable> findById(IdTable idTable);
SurveyTable findByIdId(String userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.Optional;



Expand All @@ -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<SurveyTable> 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("이미 설문조사가 존재합니다.");
}

Expand All @@ -58,60 +60,47 @@ 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);
throw new CustomException("데이터베이스 접근 중 오류가 발생했습니다.");
}
}

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();
}

}