From a52396cfb81b020f057a8ce8b2fdcc00daec2269 Mon Sep 17 00:00:00 2001 From: RyuKwanKon Date: Sat, 16 Sep 2023 23:55:51 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[feat]=20#33=20survey=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=20=EB=B9=84=EA=B5=90=20api=20service=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/survey/service/SurveyService.java | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/kusithm/hdmedi_server/domain/survey/service/SurveyService.java b/src/main/java/com/kusithm/hdmedi_server/domain/survey/service/SurveyService.java index a45354a..148e2ee 100644 --- a/src/main/java/com/kusithm/hdmedi_server/domain/survey/service/SurveyService.java +++ b/src/main/java/com/kusithm/hdmedi_server/domain/survey/service/SurveyService.java @@ -5,20 +5,18 @@ import com.kusithm.hdmedi_server.domain.survey.domain.Survey; import com.kusithm.hdmedi_server.domain.survey.dto.request.BaseSurveyDto; import com.kusithm.hdmedi_server.domain.survey.dto.request.CreateSurveyDto; +import com.kusithm.hdmedi_server.domain.survey.dto.response.BaseSurveyResponseDto; +import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyDetailResponseDto; import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyDetailResultDto; import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyResultResponseDto; import com.kusithm.hdmedi_server.domain.survey.repository.SurveyRepository; import com.kusithm.hdmedi_server.global.common.HDmediUser; import com.kusithm.hdmedi_server.global.common.MessageSourceProvider; -import com.kusithm.hdmedi_server.global.error.exception.EntityNotFoundException; -import com.kusithm.hdmedi_server.global.error.exception.ErrorCode; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; @RequiredArgsConstructor @@ -34,65 +32,80 @@ public SurveyResultResponseDto processSurvey(HDmediUser hDmediUser, CreateSurvey Survey currentSurvey = findSurvey(hDmediUser.getId()); addRespondentSurvey(hDmediUser.getIsGuest(), currentSurvey, respondent); saveSurvey(currentSurvey); - return SurveyResultResponseDto.of(respondent.getTotalScore()); + String surveyResultMessage = getMessageFor(respondent.getTotalScore()); + return SurveyResultResponseDto.of(respondent.getTotalScore(), surveyResultMessage); } - - public SurveyDetailResultDto getDetailResult(HDmediUser hDmediUser, Long surveyId){ + public SurveyDetailResultDto getDetailResult(HDmediUser hDmediUser, Long surveyId) { Survey currentSurvey = findSurvey(hDmediUser.getId()); - Respondent parentsRespondent = getParentsRespondent(currentSurvey, surveyId.intValue()); - Respondent teacherRespondent = getTeacherRespondent(currentSurvey, surveyId.intValue()); - String parentsMessage = getParentMessage(parentsRespondent.getTotalScore()); - String teacherMessage = getTeacherRespondent(parentsRespondent.getTotalScore()); + Respondent parentsRespondent = getParentsRespondent(currentSurvey, surveyId.intValue()); + Respondent teacherRespondent = getTeacherRespondent(currentSurvey, surveyId.intValue()); + String parentsMessage = getMessageFor(parentsRespondent.getTotalScore()); + String teacherMessage = getMessageForTeacherSurvey(parentsRespondent.getTotalScore()); return SurveyDetailResultDto.of(parentsRespondent.getTotalScore(), parentsMessage, teacherRespondent.getTotalScore(), teacherMessage); } - private String getParentMessage(int totalScore){ - if(totalScore >= 19) return messageSourceProvider.getEmergencyContent(); + public SurveyDetailResponseDto getSurveyDetail(HDmediUser hDmediUser, Long surveyId) { + Survey currentSurvey = findSurvey(hDmediUser.getId()); + Respondent parentsRespondent = getParentsRespondent(currentSurvey, surveyId.intValue()); + Respondent teacherRespondent = getTeacherRespondent(currentSurvey, surveyId.intValue()); + List parentsBaseSurveyResponseDtoList = getBaseSurveyDtoListFor(parentsRespondent); + List teachersBaseSurveyResponseDtoList = getBaseSurveyDtoListFor(teacherRespondent); + return SurveyDetailResponseDto.of(parentsBaseSurveyResponseDtoList, teachersBaseSurveyResponseDtoList); + } + + private List getBaseSurveyDtoListFor(Respondent respondent) { + return respondent.getBaseSurveyList().stream() + .map(baseSurvey -> + BaseSurveyResponseDto.of(baseSurvey.getQuestion(), baseSurvey.getScore())) + .collect(Collectors.toList()); + } + + private String getMessageFor(int totalScore) { + if (totalScore >= 19) return messageSourceProvider.getEmergencyContent(); return messageSourceProvider.getNonEmergencyContent(); } - private String getTeacherRespondent(int totalScore){ - if(totalScore == -1) return messageSourceProvider.getNonSurveyContent(); - if(totalScore >= 19) return messageSourceProvider.getEmergencyContent(); + private String getMessageForTeacherSurvey(int totalScore) { + if (totalScore == -1) return messageSourceProvider.getNonSurveyContent(); + if (totalScore >= 19) return messageSourceProvider.getEmergencyContent(); return messageSourceProvider.getNonEmergencyContent(); } - private Respondent getParentsRespondent(Survey currentSurvey, int id){ + private Respondent getParentsRespondent(Survey currentSurvey, int id) { return currentSurvey.getEachSurvey().getParentsSurveyList().get(id); } - private Respondent getTeacherRespondent(Survey currentSurvey, int id){ + private Respondent getTeacherRespondent(Survey currentSurvey, int id) { List teacherSurveyList = currentSurvey.getEachSurvey().getTeacherSurveyList(); - if(teacherSurveyList.size() <= id) return Respondent.createRespondent(null, -1); + if (teacherSurveyList.size() <= id) return Respondent.createRespondent(null, -1); return teacherSurveyList.get(id); } - private List createBaseSurvey(List questionList){ + private List createBaseSurvey(List questionList) { return questionList.stream() .map(baseSurveyDto -> BaseSurvey.createBaseSurvey(baseSurveyDto.getQuestion(), baseSurveyDto.getScore())) .collect(Collectors.toList()); } - private Survey findSurvey(Long userId){ + private Survey findSurvey(Long userId) { return surveyRepository.findByUserId(userId) .orElseGet(() -> Survey.createSurvey(userId)); } - private void addRespondentSurvey(Boolean isGuest, Survey currentSurvey, Respondent respondent){ - if(isGuest) + private void addRespondentSurvey(Boolean isGuest, Survey currentSurvey, Respondent respondent) { + if (isGuest) currentSurvey.getEachSurvey().addTeacherSurveyList(respondent); else currentSurvey.getEachSurvey().addParentsSurveyList(respondent); } - private void saveSurvey(Survey survey){ + private void saveSurvey(Survey survey) { surveyRepository.save(survey); } - } From eaa42b1e0e3c85773962059e456306f74ccf893e Mon Sep 17 00:00:00 2001 From: RyuKwanKon Date: Sat, 16 Sep 2023 23:56:00 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[feat]=20#33=20survey=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=20=EB=B9=84=EA=B5=90=20api=20controller=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/survey/controller/SurveyController.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/kusithm/hdmedi_server/domain/survey/controller/SurveyController.java b/src/main/java/com/kusithm/hdmedi_server/domain/survey/controller/SurveyController.java index 33f946b..4a4cf63 100644 --- a/src/main/java/com/kusithm/hdmedi_server/domain/survey/controller/SurveyController.java +++ b/src/main/java/com/kusithm/hdmedi_server/domain/survey/controller/SurveyController.java @@ -1,6 +1,7 @@ package com.kusithm.hdmedi_server.domain.survey.controller; import com.kusithm.hdmedi_server.domain.survey.dto.request.CreateSurveyDto; +import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyDetailResponseDto; import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyDetailResultDto; import com.kusithm.hdmedi_server.domain.survey.dto.response.SurveyResultResponseDto; import com.kusithm.hdmedi_server.domain.survey.service.SurveyService; @@ -14,8 +15,6 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RequiredArgsConstructor @RequestMapping("/api/survey") @Controller @@ -46,8 +45,10 @@ public ResponseEntity> getSurveyResult(@AuthenticatedUserId fina } @GetMapping("/detail") - public ResponseEntity> getSurveyContent(@RequestParam final Long surveyId) { + public ResponseEntity> getSurveyContent(@AuthenticatedUserId final HDmediUser hDmediUser, + @RequestParam final Long surveyId) { + final SurveyDetailResponseDto responseDto = surveyService.getSurveyDetail(hDmediUser, surveyId); return ResponseEntity.status(HttpStatus.OK) - .body(BaseResponse.of(SuccessCode.OK, null)); + .body(BaseResponse.of(SuccessCode.OK, responseDto)); } } \ No newline at end of file From 7b3497a3e006414667297dac3dddd87f14b4ce0b Mon Sep 17 00:00:00 2001 From: RyuKwanKon Date: Sat, 16 Sep 2023 23:56:14 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[feat]=20#33=20survey=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=20=EB=B9=84=EA=B5=90=20api=20response=20dto=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/BaseSurveyResponseDto.java | 18 +++++++++++++++++ .../dto/response/SurveyDetailResponseDto.java | 20 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/BaseSurveyResponseDto.java create mode 100644 src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyDetailResponseDto.java diff --git a/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/BaseSurveyResponseDto.java b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/BaseSurveyResponseDto.java new file mode 100644 index 0000000..07074d1 --- /dev/null +++ b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/BaseSurveyResponseDto.java @@ -0,0 +1,18 @@ +package com.kusithm.hdmedi_server.domain.survey.dto.response; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class BaseSurveyResponseDto { + private String question; + private int score; + + public static BaseSurveyResponseDto of(String question, int score){ + return BaseSurveyResponseDto.builder() + .question(question) + .score(score) + .build(); + } +} diff --git a/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyDetailResponseDto.java b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyDetailResponseDto.java new file mode 100644 index 0000000..881c743 --- /dev/null +++ b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyDetailResponseDto.java @@ -0,0 +1,20 @@ +package com.kusithm.hdmedi_server.domain.survey.dto.response; + +import lombok.Builder; +import lombok.Getter; + +import java.util.List; + +@Builder +@Getter +public class SurveyDetailResponseDto { + private List parentsSurveyList; + private List teacherSurveyList; + + public static SurveyDetailResponseDto of(List parentsSurveyList, List teacherSurveyList){ + return SurveyDetailResponseDto.builder() + .parentsSurveyList(parentsSurveyList) + .teacherSurveyList(teacherSurveyList) + .build(); + } +} From 5210d2d16605ca802dc23a5261de7c30fa3f0983 Mon Sep 17 00:00:00 2001 From: RyuKwanKon Date: Sat, 16 Sep 2023 23:56:23 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[feat]=20#33=20survey=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=20=EB=B9=84=EA=B5=90=20api=20response=20dto=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/survey/dto/response/SurveyResultResponseDto.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyResultResponseDto.java b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyResultResponseDto.java index 9e71f22..f6373c8 100644 --- a/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyResultResponseDto.java +++ b/src/main/java/com/kusithm/hdmedi_server/domain/survey/dto/response/SurveyResultResponseDto.java @@ -7,10 +7,12 @@ @Getter public class SurveyResultResponseDto { private int totalScore; + private String message; - public static SurveyResultResponseDto of(int totalScore){ + public static SurveyResultResponseDto of(int totalScore, String message){ return SurveyResultResponseDto.builder() .totalScore(totalScore) + .message(message) .build(); } }