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
2 changes: 2 additions & 0 deletions src/main/java/com/onestep/server/ServerApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@SpringBootApplication
public class ServerApplication {
static {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.onestep.server.controller.letter;

import com.onestep.server.entity.Letter;
import com.onestep.server.entity.letter.LetterListDTO;
import com.onestep.server.service.letter.LetterService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequiredArgsConstructor
public class LetterController {
Expand All @@ -19,15 +22,15 @@ public Letter writeLetter(@RequestBody Letter letter){
return letter;
}

// //내가 작성한 편지 확인
// @GetMapping(value = "/letter/byUser/{userId}")
// public List<Letter> findLetterByWriterId(@PathVariable String userId){
// return letterService.findLetterByWriterId(userId);
// }
//
// //가족 아이디로 편지 목록 확인
// @GetMapping(value = "/letter/byFamily/{familyId}")
// public List<Letter> findLetterByFamilyId(@PathVariable String familyId){
// return letterService.findLetterByFamilyId(familyId);
// }
//내가 작성한 편지 확인
@GetMapping(value = "/letter/byUser/{userId}")
public List<LetterListDTO> findLetterByWriterId(@PathVariable String userId){
return letterService.findLetterByWriterId(userId);
}

//가족 아이디로 편지 목록 확인
@GetMapping(value = "/letter/byFamily/{familyId}")
public List<LetterListDTO> findLetterByFamilyId(@PathVariable String familyId){
return letterService.findLetterByFamilyId(familyId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.onestep.server.controller.question;

import com.onestep.server.entity.Question;
import com.onestep.server.service.question.QuestionService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequiredArgsConstructor
public class QuestionController {
private final QuestionService questionService;

//질문 확인
@GetMapping(value = "/question/{questionId}")
public Question showQuestion(@PathVariable Long questionId){
return questionService.showQuestion(questionId);
}
}
21 changes: 21 additions & 0 deletions src/main/java/com/onestep/server/entity/letter/LetterListDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.onestep.server.entity.letter;

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

import java.util.Date;

@Setter
@Getter
@NoArgsConstructor
public class LetterListDTO {

private Long letter_id;
private String writer_id;
private String family_id;
private String letter_title;
private String letter_txt;
private Date write_date;

}
13 changes: 13 additions & 0 deletions src/main/java/com/onestep/server/repository/IFamilyRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.onestep.server.repository;

import com.onestep.server.entity.Family;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;


public interface IFamilyRepository extends JpaRepository<Family,String> {

@Query("UPDATE Family f SET f.question_id = f.question_id+1 , f.is_valid = false WHERE f.is_valid=true")
void changeQuestionAndState();

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.onestep.server.repository;

import com.onestep.server.entity.Family;
import com.onestep.server.entity.Letter;
import com.onestep.server.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand All @@ -9,11 +11,11 @@


public interface ILetterRepository extends JpaRepository<Letter, Long> {
// //특정 사람이 작성한 익명 편지 리스트 확인
// @Query("SELECT l FROM Letter l WHERE l.user_id =:id")
// List<Letter> findLetterByWriterId(@Param("id") String id);
//
// //가족 아이디로 편지 목록 확인
// @Query("SELECT l, u FROM Letter l LEFT JOIN User u ON l.user_id = u.user_id WHERE u.fam_id =:fam_id")
// List<Letter> findLetterByFamilyId(@Param("fam_id")String fam_id);
//특정 사람이 작성한 익명 편지 리스트 확인
@Query("SELECT l FROM Letter l WHERE l.user =:user")
List<Letter> findLetterByWriterId(@Param("user") User user);

//가족 아이디로 편지 목록 확인
@Query("SELECT l, u FROM Letter l LEFT JOIN User u ON l.user = u WHERE u.family =:family")
List<Letter> findLetterByFamilyId(@Param("family") Family family);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.onestep.server.repository;

import com.onestep.server.entity.Letter;
import com.onestep.server.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

Expand Down
60 changes: 49 additions & 11 deletions src/main/java/com/onestep/server/service/letter/LetterService.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,71 @@
package com.onestep.server.service.letter;

import com.onestep.server.entity.Family;
import com.onestep.server.entity.Letter;
import com.onestep.server.entity.User;
import com.onestep.server.entity.letter.LetterListDTO;
import com.onestep.server.repository.IFamilyRepository;
import com.onestep.server.repository.ILetterRepository;
import com.onestep.server.repository.IUserRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;


@Slf4j
@Service
@RequiredArgsConstructor
@Transactional
public class LetterService {
private final ILetterRepository iLetterRepository;
private final IUserRepository iUserRepository;
private final IFamilyRepository iFamilyRepository;

//익명편지 작성
public void writeLetter(Letter letter){
iLetterRepository.save(letter);
}

// //내가 작성한 편지 확인
// public List<Letter> findLetterByWriterId(String userId){
// return iLetterRepository.findLetterByWriterId(userId);
// }
//
// //가족 아이디로 편지 목록 확인
// public List<Letter> findLetterByFamilyId(String familyId){
// //우리 가족이 작성한 편지 가져오기
// return iLetterRepository.findLetterByFamilyId(familyId);
// }
//내가 작성한 편지 확인
public List<LetterListDTO> findLetterByWriterId(String userId){
Optional<User> optionalUser = iUserRepository.findById(userId);
User user = optionalUser.get();
List<Letter> originLetterList = iLetterRepository.findLetterByWriterId(user);

return makeReturnLetterList(originLetterList);
}

//가족 아이디로 편지 목록 확인
public List<LetterListDTO> findLetterByFamilyId(String familyId){
Optional<Family> optionalFamily = iFamilyRepository.findById(familyId);
Family family = optionalFamily.get();

//우리 가족이 작성한 편지 가져오기
List<Letter> originLetterList = iLetterRepository.findLetterByFamilyId(family);
return makeReturnLetterList(originLetterList);
}

public List<LetterListDTO> makeReturnLetterList(List<Letter> originLetterList){
List<LetterListDTO> letterList = new ArrayList<>();

for (Letter l : originLetterList) {
LetterListDTO letterListDTO = new LetterListDTO();
User writer = l.getUser();

letterListDTO.setLetter_id(l.getLetter_id());
letterListDTO.setWriter_id(writer.getUser_id());
letterListDTO.setFamily_id(writer.getFamily().getFam_id());
letterListDTO.setLetter_txt(l.getLetter_txt());
letterListDTO.setLetter_title(l.getLetter_title());
letterListDTO.setWrite_date(l.getWrite_date());

letterList.add(letterListDTO);

}
return letterList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.onestep.server.service.question;

import com.onestep.server.entity.Question;
import com.onestep.server.repository.IFamilyRepository;
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.util.Optional;

@Slf4j
@Service
@RequiredArgsConstructor
@Transactional
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);
return optionalQuestion.get();
}
}