Bugfix board

This commit is contained in:
kimyonghwa
2019-05-10 23:40:33 +09:00
parent 189e741ded
commit 2a0a9721ed
6 changed files with 38 additions and 16 deletions

View File

@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
@NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다. @NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다.
@AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다. @AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다.
@Table(name = "user") // 'user' 테이블과 매핑됨을 명시 @Table(name = "user") // 'user' 테이블과 매핑됨을 명시
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) // Post Entity에서 User와의 관계를 Json으로 변환시 오류 방지를 위한 코드
public class User extends CommonDateEntity implements UserDetails { public class User extends CommonDateEntity implements UserDetails {
@Id // pk @Id // pk
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -4,10 +4,7 @@ import com.rest.api.entity.common.CommonDateEntity;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity; import javax.persistence.*;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity @Entity
@Getter @Getter
@@ -15,6 +12,7 @@ import javax.persistence.Id;
public class Board extends CommonDateEntity { public class Board extends CommonDateEntity {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long boardId;
@Column(nullable = false, length = 100)
private String name; private String name;
} }

View File

@@ -13,23 +13,38 @@ import javax.persistence.*;
public class Post extends CommonDateEntity { public class Post extends CommonDateEntity {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long postId;
@Column(nullable = false, length = 50)
private String author; private String author;
@Column(nullable = false, length = 100)
private String title; private String title;
@Column(length = 500)
private String content; private String content;
private Long boardId;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
private User user; @JoinColumn(name = "board_id")
private Board board; // 게시글 - 게시판의 관계 - N:1
public Post(User user, Long boardId, String author, String title, String content) {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "msrl")
private User user; // 게시글 - 회원의 관계 - N:1
// Join 테이블이 Json결과에 표시되지 않도록 처리.
protected Board getBoard() {
return board;
}
// 생성자
public Post(User user, Board board, String author, String title, String content) {
this.user = user; this.user = user;
this.boardId = boardId; this.board = board;
this.author = author; this.author = author;
this.title = title; this.title = title;
this.content = content; this.content = content;
} }
// 수정시 데이터 처리
public Post setUpdate(String author, String title, String content) { public Post setUpdate(String author, String title, String content) {
this.author = author; this.author = author;
this.title = title; this.title = title;

View File

@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
@Getter @Getter
@@ -12,12 +13,14 @@ import javax.validation.constraints.NotEmpty;
@NoArgsConstructor @NoArgsConstructor
public class ParamsPost { public class ParamsPost {
@NotEmpty @NotEmpty
@Max(50)
@ApiModelProperty(value = "작성자명", required = true) @ApiModelProperty(value = "작성자명", required = true)
private String author; private String author;
@NotEmpty @NotEmpty
@Max(100)
@ApiModelProperty(value = "제목", required = true) @ApiModelProperty(value = "제목", required = true)
private String title; private String title;
@NotEmpty @Max(500)
@ApiModelProperty(value = "내용", required = true) @ApiModelProperty(value = "내용", required = true)
private String content; private String content;
} }

View File

@@ -1,10 +1,11 @@
package com.rest.api.repo.board; package com.rest.api.repo.board;
import com.rest.api.entity.board.Board;
import com.rest.api.entity.board.Post; import com.rest.api.entity.board.Post;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List; import java.util.List;
public interface PostJpaRepo extends JpaRepository<Post, Long> { public interface PostJpaRepo extends JpaRepository<Post, Long> {
List<Post> findByBoardId(Long boardId); List<Post> findByBoard(Board board);
} }

View File

@@ -26,25 +26,29 @@ public class BoardService {
private final PostJpaRepo postJpaRepo; private final PostJpaRepo postJpaRepo;
private final UserJpaRepo userJpaRepo; private final UserJpaRepo userJpaRepo;
// 게시판 이름으로 게시판을 조회. 없을경우 CResourceNotExistException 처리
public Board findBoard(String boardName) { public Board findBoard(String boardName) {
return Optional.ofNullable(boardJpaRepo.findByName(boardName)).orElseThrow(CResourceNotExistException::new); return Optional.ofNullable(boardJpaRepo.findByName(boardName)).orElseThrow(CResourceNotExistException::new);
} }
// 게시판 이름으로 게시물 리스트 조회.
public List<Post> findPosts(String boardName) { public List<Post> findPosts(String boardName) {
Board board = findBoard(boardName); return postJpaRepo.findByBoard(findBoard(boardName));
return postJpaRepo.findByBoardId(board.getId());
} }
// 게시물ID로 게시물 단건 조회. 없을경우 CResourceNotExistException 처리
public Post getPost(long postId) { public Post getPost(long postId) {
return postJpaRepo.findById(postId).orElseThrow(CResourceNotExistException::new); return postJpaRepo.findById(postId).orElseThrow(CResourceNotExistException::new);
} }
// 게시물을 등록합니다. 게시물의 회원UID가 조회되지 않으면 CUserNotFoundException 처리합니다.
public Post writePost(String uid, String boardName, ParamsPost paramsPost) { public Post writePost(String uid, String boardName, ParamsPost paramsPost) {
Board board = findBoard(boardName); Board board = findBoard(boardName);
Post post = new Post(userJpaRepo.findByUid(uid).orElseThrow(CUserNotFoundException::new), board.getId(), paramsPost.getAuthor(), paramsPost.getTitle(), paramsPost.getContent()); Post post = new Post(userJpaRepo.findByUid(uid).orElseThrow(CUserNotFoundException::new), board, paramsPost.getAuthor(), paramsPost.getTitle(), paramsPost.getContent());
return postJpaRepo.save(post); return postJpaRepo.save(post);
} }
// 게시물을 수정합니다. 게시물 등록자와 로그인 회원정보가 틀리면 CNotOwnerException 처리합니다.
public Post updatePost(long postId, String uid, ParamsPost paramsPost) { public Post updatePost(long postId, String uid, ParamsPost paramsPost) {
Post post = getPost(postId); Post post = getPost(postId);
User user = post.getUser(); User user = post.getUser();
@@ -55,6 +59,7 @@ public class BoardService {
return postJpaRepo.save(post); return postJpaRepo.save(post);
} }
// 게시물을 삭제합니다. 게시물 등록자와 로그인 회원정보가 틀리면 CNotOwnerException 처리합니다.
public boolean deletePost(long postId, String uid) { public boolean deletePost(long postId, String uid) {
Post post = getPost(postId); Post post = getPost(postId);
User user = post.getUser(); User user = post.getUser();