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

import com.onestep.server.entity.Question;
import com.onestep.server.entity.question.AnsweredQuestionDto;
import com.onestep.server.entity.question.ShowQuestionDto;
import com.onestep.server.service.question.QuestionService;
import com.onestep.server.service.question.QuestionWithAnswerService;
import lombok.RequiredArgsConstructor;
Expand All @@ -18,10 +18,16 @@ public class QuestionController {
private final QuestionService questionService;
private final QuestionWithAnswerService questionWithAnswerService;

//질문 확인
//오늘의 질문 확인
@GetMapping(value = "/question/daily/{groupNumber}")
public ShowQuestionDto showTodaysQuestion(@PathVariable int groupNumber){
return questionService.showTodaysQuestion( groupNumber);
}

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

//우리 가족이 대답한 질문 목록확인
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/onestep/server/entity/GroupQuestion.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
import java.util.Date;
Expand All @@ -20,6 +21,8 @@ public class GroupQuestion {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long question_id;

@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd", timezone="Asia/Seoul")
@Column(nullable = false)
private Date question_date;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/onestep/server/entity/Question.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

Expand All @@ -21,6 +22,8 @@ public class Question {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long question_id;

@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd", timezone="Asia/Seoul")
@Column(nullable = false)
private Date question_date;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.onestep.server.entity.question;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
public class ShowQuestionDto {

private Long question_id;

private Date date;

private String question_txt;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

import com.onestep.server.entity.GroupQuestion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Date;
import java.util.Optional;

public interface IGroupQuestionRepository extends JpaRepository<GroupQuestion, Long> {
//단일 질문 확인
@Query("SELECT q FROM GroupQuestion q WHERE q.question_date =DATE(:date) and q.group_number =:groupNumber")
Optional<GroupQuestion> findGroupQuestionByDate(@Param("date") Date date, @Param("groupNumber") int groupNumber);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Date;
import java.util.Optional;

public interface IQuestionRepository extends JpaRepository<Question, Long> {

//질문 목록 확인
@Query("SELECT q FROM Question q WHERE q.question_id <=:questionId")
List<Question> findListById(@Param("questionId") Long questionId);
//단일 질문 확인
@Query("SELECT q FROM Question q WHERE q.question_date =DATE(:date)")
Optional<Question> findQuestionByDate(@Param("date") Date date);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.onestep.server.service.question;

import com.onestep.server.entity.GroupQuestion;
import com.onestep.server.entity.Question;
import com.onestep.server.entity.question.ShowQuestionDto;
import com.onestep.server.repository.IFamilyRepository;
import com.onestep.server.repository.IGroupQuestionRepository;
import com.onestep.server.repository.IQuestionRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.Date;
import java.util.List;
import java.util.Optional;

Expand All @@ -18,15 +24,73 @@
@Transactional
public class QuestionService {
private final IQuestionRepository iQuestionRepository;
private final IFamilyRepository iFamilyRepository;
private final IGroupQuestionRepository iGroupQuestionRepository;

public ShowQuestionDto showTodaysQuestion(int groupNumber){

Date date = new Date();
LocalTime now = LocalTime.now();

if(now.getHour()<6){
Date dDate = new Date();
date = new Date(dDate.getTime()+(1000*60*60*24*-1));
}

Optional<GroupQuestion> optionalGroupQuestion = iGroupQuestionRepository.findGroupQuestionByDate(date, groupNumber);

if(optionalGroupQuestion.isPresent()) {
GroupQuestion groupQuestion = optionalGroupQuestion.get();
return makeDtoByGroupQuestion(groupQuestion);
}

Optional<Question> optionalQuestion = iQuestionRepository.findQuestionByDate(date);

if(optionalQuestion.isPresent()) {

Question question = optionalQuestion.get();
return makeDtoByQuestion(question);
}


throw new IllegalStateException("잘못된 요청입니다.");
}

public ShowQuestionDto showQuestion(long questionId){


Optional<GroupQuestion> optionalGroupQuestion = iGroupQuestionRepository.findById(questionId);

if(optionalGroupQuestion.isPresent()) {
GroupQuestion groupQuestion = optionalGroupQuestion.get();
return makeDtoByGroupQuestion(groupQuestion);
}

public Question showQuestion(Long questionId){
Optional<Question> optionalQuestion = iQuestionRepository.findById(questionId);
return optionalQuestion.get();

if(optionalQuestion.isPresent()) {
Question question = optionalQuestion.get();
return makeDtoByQuestion(question);
}


throw new IllegalStateException("잘못된 요청입니다.");
}

private ShowQuestionDto makeDtoByGroupQuestion(GroupQuestion groupQuestion){
ShowQuestionDto dto = new ShowQuestionDto();
dto.setQuestion_id(groupQuestion.getQuestion_id());
dto.setQuestion_txt(groupQuestion.getQuestion_txt());
dto.setDate(groupQuestion.getQuestion_date());
return dto;
}

public List<Question> showQuestionList(Long questionId){
return iQuestionRepository.findListById(questionId);
private ShowQuestionDto makeDtoByQuestion(Question question){

ShowQuestionDto dto = new ShowQuestionDto();
dto.setQuestion_id(question.getQuestion_id());
dto.setQuestion_txt(question.getQuestion_txt());
dto.setDate(question.getQuestion_date());

return dto;
}
}