From c16b6110c7275a9637b27719eeb9ea0555affa21 Mon Sep 17 00:00:00 2001 From: jeanniejang Date: Wed, 24 Aug 2022 13:33:18 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[#20]=20Feat:=20Post=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20Swagger=20API=20=EB=AA=85=EC=84=B8=20?= =?UTF-8?q?=EC=84=A4=EB=AA=85=20=EC=84=A4=EC=A0=95=20-Post=20Controller=20?= =?UTF-8?q?-Post=20=EA=B4=80=EB=A0=A8=20Dto=EB=93=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inssagram/controller/PostController.java | 9 ++++++--- .../java/com/clonecode/inssagram/domain/Image.java | 2 +- .../inssagram/dto/response/PostAllResponseDto.java | 12 ++++++++++++ .../dto/response/PostCreateResponseDto.java | 6 +++--- .../dto/response/PostDetailResponseDto.java | 11 ++++++++++- .../dto/response/PostUpdateResponseDto.java | 2 ++ .../dto/response/UserProfileResponseDto.java | 4 ++++ 7 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/clonecode/inssagram/controller/PostController.java b/src/main/java/com/clonecode/inssagram/controller/PostController.java index 2222fc2..a646531 100644 --- a/src/main/java/com/clonecode/inssagram/controller/PostController.java +++ b/src/main/java/com/clonecode/inssagram/controller/PostController.java @@ -10,15 +10,18 @@ import com.clonecode.inssagram.global.error.ErrorCode; import com.clonecode.inssagram.jwt.TokenProvider; import com.clonecode.inssagram.service.PostService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; +@Api(tags = {"게시물 API Controller"}) @RestController @RequestMapping("/api/posts") @RequiredArgsConstructor @@ -27,10 +30,10 @@ public class PostController { private final TokenProvider tokenProvider; @ApiOperation(value = "게시물 작성", notes = "게시물 작성 기능", response = PostCreateResponseDto.class) - @PostMapping() + @PostMapping(consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}) public ResponseEntity createPost( - PostRequestDto requestDto, - List imageFileList) { + @RequestPart PostRequestDto requestDto, + @RequestPart List imageFileList) { User user = tokenProvider.getUserFromAuthentication(); if (imageFileList == null) { diff --git a/src/main/java/com/clonecode/inssagram/domain/Image.java b/src/main/java/com/clonecode/inssagram/domain/Image.java index ce0bcee..82569b6 100644 --- a/src/main/java/com/clonecode/inssagram/domain/Image.java +++ b/src/main/java/com/clonecode/inssagram/domain/Image.java @@ -15,7 +15,7 @@ public class Image { private Long id; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn (name = "postId") + @JoinColumn (name = "postId", nullable = false) private Post post; @NotNull diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java index 6a53cd1..6118a8b 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java @@ -3,6 +3,7 @@ import com.clonecode.inssagram.domain.Image; import com.clonecode.inssagram.domain.Post; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Getter; @@ -12,13 +13,23 @@ @Getter public class PostAllResponseDto { + @ApiModelProperty(example = "게시물 DB Id") private Long postId; + @ApiModelProperty(example = "게시물 작성자 정보") private UserProfileResponseDto user; + @ApiModelProperty(example = "게시물 글 내용") private String postContents; + @ApiModelProperty(example = "게시물 사진 URL") private List imageUrlList; + @ApiModelProperty(example = "게시물 하트 수") private Long heartNum; + @ApiModelProperty(example = "게시물 댓글 수") private Long commentNum; + @ApiModelProperty(example = "로그인한 사용자의 게시물 하트 여부") private Long isHeart; + @ApiModelProperty(example = "게시물 댓글 목록") + private List commentList; + @ApiModelProperty(example = "게시물 생성일자") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime createdAt; @@ -28,6 +39,7 @@ public PostAllResponseDto(Post post, Long heartNum, Long commentNum, Long isHear this.user = new UserProfileResponseDto(post.getUser()); this.postContents = post.getPostContents(); this.imageUrlList = post.getImageList().stream().map(Image::getImageUrl).collect(Collectors.toList()); + this.commentList = post.getCommentList().stream().map(CommentResponseDto::new).limit(2).collect(Collectors.toList()); this.createdAt = post.getCreatedAt(); this.heartNum = heartNum; this.commentNum = commentNum; diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java index 97eaad4..c3ce922 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java @@ -10,13 +10,13 @@ @Getter public class PostCreateResponseDto { - @ApiModelProperty(example = "게시물 Id") + @ApiModelProperty(example = "게시물 DB Id") @NotBlank private Long id; - @ApiModelProperty(example = "사진 url") + @ApiModelProperty(example = "게시물 사진 URL") @NotBlank private String imageUrl; - @ApiModelProperty(example = "게시물 좋아요 수") + @ApiModelProperty(example = "게시물 하트 수") @NotBlank private Long heartNum; @ApiModelProperty(example = "게시물 댓글 수") diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java index 3d99919..3735343 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java @@ -3,6 +3,7 @@ import com.clonecode.inssagram.domain.Image; import com.clonecode.inssagram.domain.Post; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Getter; @@ -12,16 +13,24 @@ @Getter public class PostDetailResponseDto { + @ApiModelProperty(example = "게시물 DB Id") private Long postId; + @ApiModelProperty(example = "게시물 작성자 정보") private UserProfileResponseDto user; + @ApiModelProperty(example = "게시물 글 내용") private String postContents; + @ApiModelProperty(example = "게시물 사진 URL") private List imageUrlList; + @ApiModelProperty(example = "게시물 하트 수") private Long heartNum; + @ApiModelProperty(example = "게시물 댓글 수") private Long commentNum; + @ApiModelProperty(example = "로그인한 사용자의 게시물 하트 여부") private Long isHeart; + @ApiModelProperty(example = "게시물 생성일자") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime createdAt; - + @ApiModelProperty(example = "게시물 댓글 목록") private List commentList; @Builder diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java index e25d7a8..64e7f21 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java @@ -1,10 +1,12 @@ package com.clonecode.inssagram.dto.response; import com.clonecode.inssagram.domain.Post; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @Getter public class PostUpdateResponseDto { + @ApiModelProperty(example = "게시물 글 내용") private String postContents; public PostUpdateResponseDto(Post post){ diff --git a/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java index 95b8050..49123d5 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java @@ -1,12 +1,16 @@ package com.clonecode.inssagram.dto.response; import com.clonecode.inssagram.domain.User; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @Getter public class UserProfileResponseDto { + @ApiModelProperty(example = "사용자 DB Id") private Long userId; + @ApiModelProperty(example = "사용자 이름(별명)") private String username; + @ApiModelProperty(example = "사용자 프로필 사진 URL") private String profileImageUrl; From d375d350944b68bf59515ff9061499c71512c5c0 Mon Sep 17 00:00:00 2001 From: jeanniejang Date: Wed, 24 Aug 2022 13:36:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[#20]=20Feat:=20PostCreateResponseDto=20fie?= =?UTF-8?q?ld=20name=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inssagram/dto/response/PostCreateResponseDto.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java index c3ce922..8aebc5c 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java @@ -12,7 +12,7 @@ public class PostCreateResponseDto { @ApiModelProperty(example = "게시물 DB Id") @NotBlank - private Long id; + private Long postId; @ApiModelProperty(example = "게시물 사진 URL") @NotBlank private String imageUrl; @@ -25,7 +25,7 @@ public class PostCreateResponseDto { @Builder public PostCreateResponseDto(Post post, String imageUrl, Long heartNum, Long commentNum){ - this.id = post.getId(); + this.postId = post.getId(); this.imageUrl = imageUrl; this.heartNum = heartNum; this.commentNum = commentNum;