From 26398daac073185380e18ed3472fb2ae1c16599e Mon Sep 17 00:00:00 2001 From: bo-ram-bo-ram Date: Tue, 7 May 2024 02:03:56 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[feat]=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20api=EC=97=90=20conten?= =?UTF-8?q?tImageUrl=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/controller/ContentController.java | 7 ++++ .../ContentGetAllResponseDtoVer3.java | 38 +++++++++++++++++++ .../content/service/ContentQueryService.java | 24 ++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllResponseDtoVer3.java diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java index 3615331..b5ba530 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java @@ -102,6 +102,13 @@ public ResponseEntity>> getConten return ApiResponse.success(GET_CONTENT_ALL_SUCCESS, contentQueryService.getContentAllPagination(memberId, cursor)); } + @GetMapping("v2/contents") + @Operation(summary = "게시글 전체 조회 API(+페이지네이션+이미지) 입니다.",description = "Contents Get with image") + public ResponseEntity>> getContentAllWithImage(Principal principal, @RequestParam(value = "cursor") Long cursor) { + Long memberId = MemberUtil.getMemberId(principal); + return ApiResponse.success(GET_CONTENT_ALL_SUCCESS, contentQueryService.getContentAllWithImage(memberId, cursor)); + } + @GetMapping("v1/member/{memberId}/member-contents") @Operation(summary = "페이지네이션이 적용된 멤버에 해당하는 게시글 리스트 조회 API 입니다.",description = "ContentByMemberPagination") public ResponseEntity>> getContentAllByMemberPagination(Principal principal, diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllResponseDtoVer3.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllResponseDtoVer3.java new file mode 100644 index 0000000..7b5584e --- /dev/null +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllResponseDtoVer3.java @@ -0,0 +1,38 @@ +package com.dontbe.www.DontBeServer.api.content.dto.response; + +import com.dontbe.www.DontBeServer.api.content.domain.Content; +import com.dontbe.www.DontBeServer.api.member.domain.Member; + +public record ContentGetAllResponseDtoVer3( + Long memberId, + String memberProfileUrl, + String memberNickname, + Long contentId, + String contentText, + String time, + boolean isGhost, + int memberGhost, + boolean isLiked, + int likedNumber, + int commentNumber, + Boolean isDeleted, + String contentImageUrl +) { + public static ContentGetAllResponseDtoVer3 of(Member writerMember, Content content, boolean isGhost, int refinedMemberGhost, boolean isLiked, String time, int likedNumber, int commentNumber) { + return new ContentGetAllResponseDtoVer3( + writerMember.getId(), + writerMember.getProfileUrl(), + writerMember.getNickname(), + content.getId(), + content.getContentText(), + time, + isGhost, + refinedMemberGhost, + isLiked, + likedNumber, + commentNumber, + writerMember.isDeleted(), + content.getContentImage() + ); + } +} \ No newline at end of file diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java index e429990..a3ded91 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java @@ -100,6 +100,30 @@ public List getContentAllPagination(Long memberId, .collect(Collectors.toList()); } + public List getContentAllWithImage(Long memberId, Long cursor) { + PageRequest pageRequest = PageRequest.of(0, 30); + Member usingMember = memberRepository.findMemberByIdOrThrow(memberId); + Slice contentList; + + if (cursor==-1) { + contentList = contentRepository.findTop30ByOrderByCreatedAtDesc(pageRequest); + } else { + contentList = contentRepository.findContentsNextPage(cursor, pageRequest); + } + + return contentList.stream() + .map(oneContent -> ContentGetAllResponseDtoVer3.of( + oneContent.getMember(), + oneContent, + ghostRepository.existsByGhostTargetMemberAndGhostTriggerMember(oneContent.getMember(),usingMember), + GhostUtil.refineGhost(oneContent.getMember().getMemberGhost()), + contentLikedRepository.existsByContentAndMember(oneContent,usingMember), + TimeUtilCustom.refineTime(oneContent.getCreatedAt()), + contentLikedRepository.countByContent(oneContent), + commentRepository.countByContent(oneContent))) + .collect(Collectors.toList()); + } + public List getContentAllByMember(Long memberId, Long targetMemberId) { //페이지네이션 적용 후 지우기 Member usingMember = memberRepository.findMemberByIdOrThrow(memberId); Member targetMember = memberRepository.findMemberByIdOrThrow(targetMemberId); From e934395ec1474da3c4806bdbf53f9f28e0ab7afe Mon Sep 17 00:00:00 2001 From: bo-ram-bo-ram Date: Tue, 7 May 2024 02:23:44 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[feat]=20=EB=A9=A4=EB=B2=84=EC=97=90=20?= =?UTF-8?q?=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20=EC=A1=B0=ED=9A=8C=20api=EC=97=90=20contentImageUrl?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/controller/ContentController.java | 8 +++++ .../ContentGetAllByMemberResponseDtoVer2.java | 36 +++++++++++++++++++ .../content/service/ContentQueryService.java | 27 ++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllByMemberResponseDtoVer2.java diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java index b5ba530..eece207 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java @@ -116,4 +116,12 @@ public ResponseEntity>> getCo Long memberId = MemberUtil.getMemberId(principal); return ApiResponse.success(GET_MEMBER_CONTENT_SUCCESS, contentQueryService.getContentAllByMemberPagination(memberId, targetMemberId, cursor)); } + + @GetMapping("v2/member/{memberId}/member-contents") + @Operation(summary = "멤버에 해당하는 게시글 리스트 조회 API(+페이지네이션+이미지) 입니다.",description = "Contents By Member with image") + public ResponseEntity>> getContentAllByMemberWithImage(Principal principal, + @PathVariable("memberId") Long targetMemberId, @RequestParam(value = "cursor") Long cursor) { + Long memberId = MemberUtil.getMemberId(principal); + return ApiResponse.success(GET_MEMBER_CONTENT_SUCCESS, contentQueryService.getContentAllByMemberWithImage(memberId, targetMemberId, cursor)); + } } diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllByMemberResponseDtoVer2.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllByMemberResponseDtoVer2.java new file mode 100644 index 0000000..9140009 --- /dev/null +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetAllByMemberResponseDtoVer2.java @@ -0,0 +1,36 @@ +package com.dontbe.www.DontBeServer.api.content.dto.response; + +import com.dontbe.www.DontBeServer.api.content.domain.Content; +import com.dontbe.www.DontBeServer.api.member.domain.Member; + +public record ContentGetAllByMemberResponseDtoVer2( + Long memberId, + String memberProfileUrl, + String memberNickname, + Long contentId, + String contentText, + String time, + boolean isGhost, + int memberGhost, + boolean isLiked, + int likedNumber, + int commentNumber, + String contentImageUrl +) { + public static ContentGetAllByMemberResponseDtoVer2 of(Member writerMember, int writerGhost, Content content, boolean isGhost, boolean isLiked, String time, int likedNumber, int commentNumber) { + return new ContentGetAllByMemberResponseDtoVer2( + writerMember.getId(), + writerMember.getProfileUrl(), + writerMember.getNickname(), + content.getId(), + content.getContentText(), + time, + isGhost, + writerGhost, + isLiked, + likedNumber, + commentNumber, + content.getContentImage() + ); + } +} \ No newline at end of file diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java index a3ded91..895be04 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java @@ -166,4 +166,31 @@ public List getContentAllByMemberPagination(Lo commentRepository.countByContent(oneContent))) .collect(Collectors.toList()); } + + public List getContentAllByMemberWithImage(Long memberId, Long targetMemberId, Long cursor) { + Member usingMember = memberRepository.findMemberByIdOrThrow(memberId); + Member targetMember = memberRepository.findMemberByIdOrThrow(targetMemberId); + + PageRequest pageRequest = PageRequest.of(0, 20); + + Slice contentList; + + if (cursor==-1) { + contentList = contentRepository.findContestsTop20ByMemberIdOrderByCreatedAtDesc(targetMemberId, pageRequest); + } else { + contentList = contentRepository.findContentsByMemberNextPage(cursor, targetMemberId ,pageRequest); + } + + return contentList.stream() + .map(oneContent -> ContentGetAllByMemberResponseDtoVer2.of( + targetMember, + GhostUtil.refineGhost(oneContent.getMember().getMemberGhost()), + oneContent, + ghostRepository.existsByGhostTargetMemberAndGhostTriggerMember(targetMember,usingMember), + contentLikedRepository.existsByContentAndMember(oneContent,usingMember), + TimeUtilCustom.refineTime(oneContent.getCreatedAt()), + contentLikedRepository.countByContent(oneContent), + commentRepository.countByContent(oneContent))) + .collect(Collectors.toList()); + } } From 72e41358af5d3a4626dcb54537b44c9908dfcd99 Mon Sep 17 00:00:00 2001 From: bo-ram-bo-ram Date: Tue, 7 May 2024 02:53:26 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[feat]=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=EC=A1=B0=ED=9A=8C=20api=EC=97=90=20contentIm?= =?UTF-8?q?ageUrl=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/controller/ContentController.java | 6 ++++ .../ContentGetDetailsResponseDtoVer3.java | 36 +++++++++++++++++++ .../content/service/ContentQueryService.java | 15 ++++++++ 3 files changed, 57 insertions(+) create mode 100644 DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetDetailsResponseDtoVer3.java diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java index eece207..924b2b4 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/controller/ContentController.java @@ -124,4 +124,10 @@ public ResponseEntity>> g Long memberId = MemberUtil.getMemberId(principal); return ApiResponse.success(GET_MEMBER_CONTENT_SUCCESS, contentQueryService.getContentAllByMemberWithImage(memberId, targetMemberId, cursor)); } + + @GetMapping("v2/content/{contentId}") + @Operation(summary = "게시글 상세 조회 API 입니다.",description = "Content Get Detail") + public ResponseEntity> getContentDetailWithImage(Principal principal, @PathVariable("contentId") Long contentId) { + return ApiResponse.success(GET_CONTENT_DETAIL_SUCCESS, contentQueryService.getContentDetailWithImage(MemberUtil.getMemberId(principal), contentId)); + } } diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetDetailsResponseDtoVer3.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetDetailsResponseDtoVer3.java new file mode 100644 index 0000000..40255a0 --- /dev/null +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/dto/response/ContentGetDetailsResponseDtoVer3.java @@ -0,0 +1,36 @@ +package com.dontbe.www.DontBeServer.api.content.dto.response; + +import com.dontbe.www.DontBeServer.api.content.domain.Content; +import com.dontbe.www.DontBeServer.api.member.domain.Member; + +public record ContentGetDetailsResponseDtoVer3( + Long memberId, + String memberProfileUrl, + String memberNickname, + boolean isGhost, + int memberGhost, + boolean isLiked, + String time, + int likedNumber, + int commentNumber, + String contentText, + Boolean isDeleted, + String contentImageUrl +) { + public static ContentGetDetailsResponseDtoVer3 of(Member member, int memberGhost, Content content, boolean isGhost, boolean isLiked, String time, int likedNumber, int commentNumber) { + return new ContentGetDetailsResponseDtoVer3( + member.getId(), + member.getProfileUrl(), + member.getNickname(), + isGhost, + memberGhost, + isLiked, + time, + likedNumber, + commentNumber, + content.getContentText(), + member.isDeleted(), + content.getContentImage() + ); + } +} diff --git a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java index 895be04..b5f9fa3 100644 --- a/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java +++ b/DontBeServer/src/main/java/com/dontbe/www/DontBeServer/api/content/service/ContentQueryService.java @@ -60,6 +60,21 @@ public ContentGetDetailsResponseDtoVer2 getContentDetailVer2(Long memberId, Long return ContentGetDetailsResponseDtoVer2.of(writerMember, writerMemberGhost, content, isGhost, isLiked, time, likedNumber, commentNumber); } + public ContentGetDetailsResponseDtoVer3 getContentDetailWithImage(Long memberId, Long contentId) { + Member member = memberRepository.findMemberByIdOrThrow(memberId); + Content content = contentRepository.findContentByIdOrThrow(contentId); + Member writerMember = memberRepository.findMemberByIdOrThrow(content.getMember().getId()); + int writerMemberGhost = GhostUtil.refineGhost(writerMember.getMemberGhost()); + Long writerMemberId = content.getMember().getId(); + boolean isGhost = ghostRepository.existsByGhostTargetMemberIdAndGhostTriggerMemberId(writerMemberId, memberId); + boolean isLiked = contentLikedRepository.existsByContentAndMember(content,member); + String time = TimeUtilCustom.refineTime(content.getCreatedAt()); + int likedNumber = contentLikedRepository.countByContent(content); + int commentNumber = commentRepository.countByContent(content); + + return ContentGetDetailsResponseDtoVer3.of(writerMember, writerMemberGhost, content, isGhost, isLiked, time, likedNumber, commentNumber); + } + public List getContentAll(Long memberId) { //페이지네이션 적용 후 지우기 Member usingMember = memberRepository.findMemberByIdOrThrow(memberId); List contents = contentRepository.findAllByOrderByCreatedAtDesc();