자신의 mbti와 맞는 강아지를 찾아서 추천해드립니다. 추가로 보호소에 있는 아이들의 정보를 함께 제공해드립니다.
mbti 검사 api는 아직 미정입니다.
개발 인원: 백앤드 3명 (강미진, 김동현, 임다희) / 프론트 2명 (김형민, 심현인)
강아지가 이뻐서 쉽게 분양을 받고 성향이 맞지 않아 쉽게 파양을 하는 사람들이 많이 있습니다
처음부터 분양을 받기 위한 까다로운 조건을 만들면 좋겠지만 개인의 힘으로는 강제하기가 쉽지 않습니다
조금이라도 파양되는 강아지의 수를 줄이고 한번 파양서 새로운 주인을 기다리는 귀여운 강아지를
좋은 사람에게 소개해 주는 사이트를 만들고자 하였습니다.
- ORM: Spring-Data-JPA
- 보안 : Spring security
- 형상 관리 툴 : git
- Others: Websocket, Lombok
@Column
@ElementCollection
private List likeId = new ArrayList<>();
public Article(ArticleRequestDto requestDto){
this.nickname = requestDto.getNickname();
this.content = requestDto.getContent();
this.imgUrl = requestDto.getImgUrl();
this.likeCnt = requestDto.getLikeCnt();
this.likeId = requestDto.getLikeId();
}
public void update(ArticleRequestDto requestDto){
this.content = requestDto.getContent();
this.imgUrl = requestDto.getImgUrl();
this.likeCnt = requestDto.getLikeCnt();
this.likeId = requestDto.getLikeId();
}
@Transactional
public List update(Long id, ArticleRequestDto requestDto){
Article article = articleRepository.findById(id).orElseThrow(
() ->new NullPointerException("해당 게시글이 존재하지 않습니다.")
);
String likeNickname = requestDto.getNickname();
requestDto.getLikeId().add(likeNickname);
article.update(requestDto);
return requestDto.getLikeId();
}
@ResponseBody @GetMapping( "/api/article") public List
getArticle(){ return articleRepository.findAllByOrderByModifiedAt(); } @ResponseBody @PostMapping("/api/article") public Article creatArticle(@RequestBody ArticleRequestDto requestDto){ Article article = new Article(requestDto); return articleRepository.save(article); } @PutMapping( "/api/article/{article_id}") public List updateArticle(@PathVariable Long article_id, @RequestBody ArticleRequestDto requestDto){ return articleService.update(article_id, requestDto); } @DeleteMapping( "/api/article/{article_id}") public Long deleteArticle(@PathVariable Long article_id) { articleRepository.deleteById(article_id); return article_id; }
@Getter
@Setter
@Entity
@NoArgsConstructor
public class Comment {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
@Column
private String comment;
@Column
private String nickname;
@ManyToOne
@JoinColumn(nullable = false)
private Article article;
public Comment(CommentRequestDto requestDto, Article article){
this.nickname = requestDto.getNickname();
this.comment = requestDto.getComment();
this.article = article;
}
public void update(CommentRequestDto requestDto){
this.nickname = requestDto.getNickname();
this.comment = requestDto.getComment();
}
@Transactional
public Long update(Long id, CommentRequestDto requestDto){
Comment comment = commentRepository.findById(id).orElseThrow(
()->new NullPointerException("해당 게시글이 존재하지 않습니다.")
);
comment.update(requestDto);
return comment.getId();
}
@RestController
@RequiredArgsConstructor
@CrossOrigin(origins = "*", allowedHeaders = "*")
public class CommentController {
private final CommentService commentService;
private final CommentRepository commentRepository;
private final ArticleRepository articleRepository;
@GetMapping("/api/comment/{article_id}")
public List getComment(@PathVariable Long article_id){
return commentRepository.findAllByArticleId(article_id);
}
@PostMapping("/api/comment/{article_id}")
public Comment creatComment(@PathVariable Long article_id, @RequestBody CommentRequestDto requestDto){
Article article = articleRepository.findById(article_id).get();
Comment comment = new Comment(requestDto, article);
return commentRepository.save(comment);
}
@PutMapping("/api/comment/{comment_id}")
public Long updateComment(@PathVariable Long comment_id, @RequestBody CommentRequestDto requestDto){
return commentService.update(comment_id, requestDto);
}
@DeleteMapping("/api/comment/{comment_id}")
public Long deleteComment(@PathVariable Long comment_id){
commentRepository.deleteById(comment_id);
return comment_id;
}