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
@@ -1,7 +1,9 @@
package com.onestep.server.controller.question;

import com.onestep.server.entity.Question;
import com.onestep.server.entity.question.AnsweredQuestionDto;
import com.onestep.server.service.question.QuestionService;
import com.onestep.server.service.question.QuestionWithAnswerService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
Expand All @@ -14,16 +16,17 @@
@RequiredArgsConstructor
public class QuestionController {
private final QuestionService questionService;
private final QuestionWithAnswerService questionWithAnswerService;

//질문 확인
@GetMapping(value = "/question/{questionId}")
public Question showQuestion(@PathVariable Long questionId){
return questionService.showQuestion(questionId);
}

//질문 목록확인
@GetMapping(value = "/question/list/{questionId}")
public List<Question> showQuestionList(@PathVariable Long questionId) {
return questionService.showQuestionList(questionId);
//우리 가족이 대답한 질문 목록확인
@GetMapping(value = "/question/list/{familyId}")
public List<AnsweredQuestionDto> showQuestionList(@PathVariable String familyId) {
return questionWithAnswerService.getAnsweredQuestionList(familyId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.onestep.server.entity.question;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
@NoArgsConstructor
public class AnsweredQuestionDto implements Comparable<AnsweredQuestionDto> {
private Long question_id;
private Date question_date;
private String question_txt;
private Boolean is_group_question;

@Override
public int compareTo(AnsweredQuestionDto a) {
return (int) (question_id-a.question_id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.onestep.server.entity.Answer;
import com.onestep.server.entity.Family;
import com.onestep.server.entity.GroupQuestion;
import com.onestep.server.entity.Question;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.jpa.repository.JpaRepository;
Expand All @@ -11,7 +12,13 @@

public interface IAnswerRepository extends JpaRepository<Answer,Long> {

// 답변 읽기
// 질문별 답변 읽기
@Query("select a from Answer a left join User u on a.user.user_id = u.user_id where a.question = :question and u.family =:family")
List<Answer> findAnswerByFamId(@Param("question")Question question, @Param("family")Family family);
List<Answer> findAnswerByQuestionIdAndFamId(@Param("question")Question question, @Param("family")Family family);

@Query("select distinct a.groupQuestion from Answer a left join User u on a.user.user_id = u.user_id where u.family =:family")
List<GroupQuestion> findAnsweredGroupQuestionsByFamId(@Param("family")Family family);

@Query("select distinct a.question from Answer a left join User u on a.user.user_id = u.user_id where u.family =:family")
List<Question> findAnsweredQuestionsByFamId(@Param("family")Family family);
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public List<Answer> readAnswer(Long questionId,String familyId){
Question question =optionalQuestion.get();
Optional<Family> optionalFamily = iFamilyRepository.findById(familyId);
Family family = optionalFamily.get();
List<Answer> answers = iAnswerRepository.findAnswerByFamId(question,family);
List<Answer> answers = iAnswerRepository.findAnswerByQuestionIdAndFamId(question,family);
return answers;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ public class QuestionService {
private final IQuestionRepository iQuestionRepository;
private final IFamilyRepository iFamilyRepository;

// @Scheduled(cron = "0 0 6 * * *", zone = "Asia/Seoul") //매일 오전 6시마다
// public void changeQuestion(){
// iFamilyRepository.changeQuestionAndState();
// }

public Question showQuestion(Long questionId){
Optional<Question> optionalQuestion = iQuestionRepository.findById(questionId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.onestep.server.service.question;

import com.onestep.server.entity.Family;
import com.onestep.server.entity.GroupQuestion;
import com.onestep.server.entity.Question;
import com.onestep.server.entity.question.AnsweredQuestionDto;
import com.onestep.server.repository.IAnswerRepository;
import com.onestep.server.repository.IFamilyRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
@Transactional
public class QuestionWithAnswerService {
private final IAnswerRepository iAnswerRepository;
private final IFamilyRepository iFamilyRepository;

public List<AnsweredQuestionDto> getAnsweredQuestionList(String familyId){
Family fam = iFamilyRepository.findById(familyId).get();
List<GroupQuestion> groupQuestions = iAnswerRepository.findAnsweredGroupQuestionsByFamId(fam);
List<Question> questions = iAnswerRepository.findAnsweredQuestionsByFamId(fam);
List<AnsweredQuestionDto> answeredQuestionDtos = new ArrayList<>();
questions.forEach(q -> {
AnsweredQuestionDto dto = new AnsweredQuestionDto();
dto.setQuestion_id(q.getQuestion_id());
dto.setQuestion_date(q.getQuestion_date());
dto.setQuestion_txt(q.getQuestion_txt());
dto.setIs_group_question(false);
answeredQuestionDtos.add(dto);
});
groupQuestions.forEach(q -> {
AnsweredQuestionDto dto = new AnsweredQuestionDto();
dto.setQuestion_id(q.getQuestion_id());
dto.setQuestion_date(q.getQuestion_date());
dto.setQuestion_txt(q.getQuestion_txt());
dto.setIs_group_question(true);
answeredQuestionDtos.add(dto);
});


Collections.sort(answeredQuestionDtos);

return answeredQuestionDtos;
}
}