From defd22f62caca2665eb4dd5f4f221fcc7e3ea856 Mon Sep 17 00:00:00 2001 From: KellyKimHyeJin Date: Mon, 31 Jul 2023 23:03:52 +0900 Subject: [PATCH] fix: Fix Diary Page --- .../controller/DiaryCommentController.java | 4 +- .../community/controller/DiaryController.java | 47 +++---- .../community/domain/diary/Diary.java | 7 +- .../community/domain/diary/DiaryComment.java | 3 +- .../community/domain/diary/DiaryFile.java | 2 +- .../community/domain/diary/DiaryLike.java | 2 +- .../community/domain/diary/DiaryScrap.java | 2 +- .../khureturn/community/domain/exam/Exam.java | 3 +- .../community/domain/exam/ExamFile.java | 3 +- .../community/domain/exam/ExamLike.java | 3 +- .../community/domain/exam/ExamScrap.java | 3 +- .../community/dto/DiaryConverter.java | 95 ------------- .../community/dto/DiaryRequestDto.java | 9 -- .../community/dto/DiaryResponseDto.java | 2 + .../repository/DiaryFileRepository.java | 5 + .../community/repository/DiaryRepository.java | 12 +- .../repository/DiaryScrapRepository.java | 4 +- .../service/DiaryCommentService.java | 20 +++ .../community/service/DiaryFileService.java | 4 +- .../community/service/DiaryLikeService.java | 9 -- .../community/service/DiaryScrapService.java | 8 +- .../community/service/DiaryService.java | 130 ++++++++++++++---- 22 files changed, 173 insertions(+), 204 deletions(-) diff --git a/src/main/java/com/khureturn/community/controller/DiaryCommentController.java b/src/main/java/com/khureturn/community/controller/DiaryCommentController.java index 91732fb..6f3ff3f 100644 --- a/src/main/java/com/khureturn/community/controller/DiaryCommentController.java +++ b/src/main/java/com/khureturn/community/controller/DiaryCommentController.java @@ -39,7 +39,7 @@ public ResponseEntity updateComme @GetMapping("/diary/{postId}/comment") public ResponseEntity> getComment(@PathVariable(name = "postId")Long postId){ List commentList = diaryCommentService.findAllByDiary(postId); - return ResponseEntity.ok(DiaryConverter.toCommentListDto(commentList)); + return ResponseEntity.ok(diaryCommentService.getCommentList(commentList)); } @PreAuthorize("isAuthenticated()") @@ -66,7 +66,7 @@ public ResponseEntity createReCom public ResponseEntity> getRecomment(@PathVariable(name = "postId")Long postId, @PathVariable(name = "commentId")Long commentId){ List commentList = diaryCommentService.findAllByDiaryAndComment(postId, commentId); - return ResponseEntity.ok(DiaryConverter.toCommentListDto(commentList)); + return ResponseEntity.ok(diaryCommentService.getCommentList(commentList)); } @PreAuthorize("isAuthenticated()") diff --git a/src/main/java/com/khureturn/community/controller/DiaryController.java b/src/main/java/com/khureturn/community/controller/DiaryController.java index 826f5c4..92134e6 100644 --- a/src/main/java/com/khureturn/community/controller/DiaryController.java +++ b/src/main/java/com/khureturn/community/controller/DiaryController.java @@ -1,18 +1,14 @@ package com.khureturn.community.controller; -import com.khureturn.community.domain.Member; import com.khureturn.community.domain.diary.Diary; import com.khureturn.community.domain.diary.DiaryFile; -import com.khureturn.community.dto.DiaryConverter; import com.khureturn.community.dto.DiaryRequestDto; import com.khureturn.community.dto.DiaryResponseDto; import com.khureturn.community.service.DiaryFileService; import com.khureturn.community.service.DiaryService; -import com.khureturn.community.service.MemberService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.hibernate.validator.constraints.ModCheck; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -32,11 +28,9 @@ public class DiaryController { private final DiaryFileService diaryFileService; - private final MemberService memberService; - @PreAuthorize("isAuthenticated()") @PostMapping("") - public ResponseEntity createDiary(Principal principal, @RequestPart(value = "mediaList", required= false)List mediaList, + public ResponseEntity createDiary(Principal principal, @RequestPart(value = "mediaList", required= false) List mediaList, @RequestPart(value = "data")DiaryRequestDto.CreateDiaryDto data) throws IOException { Diary diary = diaryService.create(mediaList, data, principal); return ResponseEntity.ok(DiaryResponseDto.CreateDiaryDto.builder().postId(diary.getId()).build()); @@ -53,39 +47,30 @@ public ResponseEntity updateDiary(@PathVariable // 일기장 상세조회 @PreAuthorize("isAuthenticated()") @GetMapping("/{postId}") - public ResponseEntity getDiary(@PathVariable(name = "postId") Long postId){ + public ResponseEntity getDiary(@PathVariable(name = "postId") Long postId, Principal principal){ Diary diary = diaryService.findById(postId); DiaryFile diaryFile = diaryFileService.findByDiary(postId); - Member member = diary.getMember(); - return ResponseEntity.ok(DiaryConverter.toDiaryDto(diary, diaryFile, member)); + return ResponseEntity.ok(diaryService.findDiary(diary, diaryFile, principal)); } - // 일기장 메인화면 (기본 최신순) - @GetMapping("/list") - public ResponseEntity> getDiaryList(@RequestParam(name = "cursor")int cursor, @RequestParam(name = "size")int size){ - List diaryList = diaryService.getPage((long) cursor,size); - return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList)); - } - // 일기장 좋아요순 - @GetMapping("/likelist") - public ResponseEntity> getDiaryListByLike(@RequestParam(name = "cursor")int cursor, - @RequestParam(name = "size")int size, @RequestParam(name = "search", required = false)String search, - @RequestParam(name = "sort", defaultValue = "likecount")String sort){ - List diaryList = diaryService.getPageByLike((long)cursor, size, search); - return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList)); + // 일기장 정렬 + @PreAuthorize("isAuthenticated()") + @GetMapping("") + public ResponseEntity> getDiaryList(@RequestParam(name = "page") int page, + @RequestParam(name = "search", required = false) String search, + @RequestParam(name = "sort", defaultValue = "createdAt") String sort, Principal principal){ + if(search != null){ + List diaryList = diaryService.getPage(page-1, sort, search); + return ResponseEntity.ok(diaryService.findDiarySort(diaryList, principal)); + } else{ + List diaryList = diaryService.findAll(page-1, sort); + return ResponseEntity.ok(diaryService.findDiarySort(diaryList, principal)); + } } - // 일기장 조회수순 - @GetMapping("/viewlist") - public ResponseEntity> getDiaryListByView(@RequestParam(name = "cursor")int cursor, - @RequestParam(name = "size")int size, @RequestParam(name = "search", required = false)String search, - @RequestParam(name = "sort", defaultValue = "viewcount")String sort){ - List diaryList = diaryService.getPageByView((long)cursor, size, search); - return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList)); - } @PreAuthorize("isAuthenticated()") @DeleteMapping("/{postId}") public ResponseEntity deleteDiary(@PathVariable(name = "postId")Long postId){ diff --git a/src/main/java/com/khureturn/community/domain/diary/Diary.java b/src/main/java/com/khureturn/community/domain/diary/Diary.java index 0e5d0cc..ddb8ec9 100644 --- a/src/main/java/com/khureturn/community/domain/diary/Diary.java +++ b/src/main/java/com/khureturn/community/domain/diary/Diary.java @@ -4,8 +4,6 @@ import com.khureturn.community.domain.base.BaseEntity; import jakarta.persistence.*; import lombok.*; - -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -16,16 +14,17 @@ @Getter public class Diary extends BaseEntity { - @Id @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "diary_id") private Long id; - @Column(nullable = false) private String diaryTitle; private String diaryContent; private Boolean isAnonymous; + // thumbnailIndex 선택 안하면 0으로 default + @Column(columnDefinition = "INT DEFAULT 0") private int thumbnailIndex; @Column(columnDefinition = "INT DEFAULT 0") diff --git a/src/main/java/com/khureturn/community/domain/diary/DiaryComment.java b/src/main/java/com/khureturn/community/domain/diary/DiaryComment.java index 2251e9d..19600cb 100644 --- a/src/main/java/com/khureturn/community/domain/diary/DiaryComment.java +++ b/src/main/java/com/khureturn/community/domain/diary/DiaryComment.java @@ -15,8 +15,7 @@ @Getter public class DiaryComment extends BaseEntity { - @Id - @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "diary_comment_id") private Long id; private String diaryCommentContent; diff --git a/src/main/java/com/khureturn/community/domain/diary/DiaryFile.java b/src/main/java/com/khureturn/community/domain/diary/DiaryFile.java index 4d61a98..aab8761 100644 --- a/src/main/java/com/khureturn/community/domain/diary/DiaryFile.java +++ b/src/main/java/com/khureturn/community/domain/diary/DiaryFile.java @@ -12,7 +12,7 @@ @Getter public class DiaryFile extends BaseEntity { - @Id @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "diary_file_id") private Long id; private String diaryOriginalUrl; diff --git a/src/main/java/com/khureturn/community/domain/diary/DiaryLike.java b/src/main/java/com/khureturn/community/domain/diary/DiaryLike.java index 336948c..1732c2f 100644 --- a/src/main/java/com/khureturn/community/domain/diary/DiaryLike.java +++ b/src/main/java/com/khureturn/community/domain/diary/DiaryLike.java @@ -10,7 +10,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class DiaryLike { - @Id @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name ="diary_like_id") private Long id; diff --git a/src/main/java/com/khureturn/community/domain/diary/DiaryScrap.java b/src/main/java/com/khureturn/community/domain/diary/DiaryScrap.java index d1dfb5f..8377140 100644 --- a/src/main/java/com/khureturn/community/domain/diary/DiaryScrap.java +++ b/src/main/java/com/khureturn/community/domain/diary/DiaryScrap.java @@ -11,7 +11,7 @@ @Getter public class DiaryScrap { - @Id @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name ="diary_scrap_id") private Long id; diff --git a/src/main/java/com/khureturn/community/domain/exam/Exam.java b/src/main/java/com/khureturn/community/domain/exam/Exam.java index 2dffb16..3135577 100644 --- a/src/main/java/com/khureturn/community/domain/exam/Exam.java +++ b/src/main/java/com/khureturn/community/domain/exam/Exam.java @@ -13,8 +13,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class Exam extends BaseEntity { - @Id - @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "exam_id") private Long id; private String examTitle; diff --git a/src/main/java/com/khureturn/community/domain/exam/ExamFile.java b/src/main/java/com/khureturn/community/domain/exam/ExamFile.java index 3d1a620..de70153 100644 --- a/src/main/java/com/khureturn/community/domain/exam/ExamFile.java +++ b/src/main/java/com/khureturn/community/domain/exam/ExamFile.java @@ -10,8 +10,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class ExamFile extends BaseEntity{ - @Id - @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "exam_file_id") private Long id; diff --git a/src/main/java/com/khureturn/community/domain/exam/ExamLike.java b/src/main/java/com/khureturn/community/domain/exam/ExamLike.java index d484490..586d77e 100644 --- a/src/main/java/com/khureturn/community/domain/exam/ExamLike.java +++ b/src/main/java/com/khureturn/community/domain/exam/ExamLike.java @@ -10,8 +10,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class ExamLike { - @Id - @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name ="exam_like_id") private Long id; diff --git a/src/main/java/com/khureturn/community/domain/exam/ExamScrap.java b/src/main/java/com/khureturn/community/domain/exam/ExamScrap.java index e581a1a..4177548 100644 --- a/src/main/java/com/khureturn/community/domain/exam/ExamScrap.java +++ b/src/main/java/com/khureturn/community/domain/exam/ExamScrap.java @@ -10,8 +10,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class ExamScrap { - @Id - @GeneratedValue + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name ="exam_scrap_id") private Long id; diff --git a/src/main/java/com/khureturn/community/dto/DiaryConverter.java b/src/main/java/com/khureturn/community/dto/DiaryConverter.java index b608541..95e7445 100644 --- a/src/main/java/com/khureturn/community/dto/DiaryConverter.java +++ b/src/main/java/com/khureturn/community/dto/DiaryConverter.java @@ -2,31 +2,9 @@ import com.khureturn.community.domain.Member; import com.khureturn.community.domain.diary.Diary; -import com.khureturn.community.domain.diary.DiaryComment; import com.khureturn.community.domain.diary.DiaryFile; -import com.khureturn.community.repository.DiaryCommentRepository; -import com.khureturn.community.repository.DiaryFileRepository; -import com.khureturn.community.repository.MemberRepository; -import com.khureturn.community.service.DiaryCommentService; -import com.khureturn.community.service.DiaryLikeService; -import com.khureturn.community.service.DiaryScrapService; -import com.khureturn.community.service.DiaryService; -import lombok.RequiredArgsConstructor; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -@RequiredArgsConstructor public class DiaryConverter { - private static DiaryLikeService diaryLikeService; - private static DiaryScrapService diaryScrapService; - private static DiaryFileRepository diaryFileRepository; - - private static DiaryCommentService diaryCommentService; - private static DiaryCommentRepository diaryCommentRepository; - private static DiaryService diaryService; public static Diary toDiary(DiaryRequestDto.CreateDiaryDto request, Member member){ return Diary.builder() @@ -45,79 +23,6 @@ public static DiaryFile toDiaryFile(DiaryRequestDto.CreateDiaryDto request, Stri .build(); } - public static DiaryResponseDto.DiaryDto toDiaryDto(Diary diary, DiaryFile diaryFile, Member member){ - Boolean isLiked = diaryLikeService.findDiaryLikeByMemberAndDiary(member.getMemberId(), diary.getId()); - Boolean isBookmarked = diaryScrapService.findDiaryScrapByMemberAndDiary(member.getMemberId(), diary.getId()); - Boolean isMyPost = diaryService.findByMember(member.getMemberId()); - String url = diaryFile.getDiaryOriginalUrl(); - List list = Arrays.asList(url.split(",")); - return DiaryResponseDto.DiaryDto.builder() - .isLiked(isLiked) - .isBookmarked(isBookmarked) - .member(MemberResponseDto.MemberDto.builder().memberId(member.getMemberId()).profileImgURL(member.getProfileImg()).name(member.getName()).phoneNumber(member.getPhoneNumber()).build()) - .title(diary.getDiaryTitle()) - .content(diary.getDiaryContent()) - .mediaList(list) - .createdDate(diary.getCreatedAt()) - .modifiedDate(diary.getUpdateAt()) - .viewCount(diary.getDiaryViewCount()) - .bookmarkedCount(diary.getDiaryScrapCount()) - .isAnonymous(diary.getIsAnonymous()) - .isMyPost(isMyPost) - .likeCount(diary.getDiaryLikeCount()) - .commentCount(diary.getDiaryCommentCount()) - .build(); - } - - public static List toDiarySortDto(List diaryList){ - - List sortList = new ArrayList<>(); - for(Diary d: diaryList){ - Member member = d.getMember(); - DiaryFile diaryFile = diaryFileRepository.findByDiary(d); - String url = diaryFile.getDiaryOriginalUrl(); - List list = Arrays.asList(url.split(",")); - Boolean isLiked = diaryLikeService.findDiaryLikeByMemberAndDiary(member.getMemberId(), d.getId()); - Boolean isBookmarked = diaryScrapService.findDiaryScrapByMemberAndDiary(member.getMemberId(), d.getId()); - Boolean isMyPost = diaryService.findByMember(member.getMemberId()); - DiaryResponseDto.DiarySortDto result =DiaryResponseDto.DiarySortDto.builder() - .diaryId(d.getId()) - .title(d.getDiaryTitle()) - .thumbnailImgURL(list.get(d.getThumbnailIndex())) - .likeCount(d.getDiaryLikeCount()) - .commentCount(d.getDiaryCommentCount()) - .viewCount(d.getDiaryViewCount()) - .member(MemberResponseDto.MemberSortDto.builder().memberId(member.getMemberId()).profileImgURL(member.getProfileImg()).name(member.getName()).build()) - .createdDate(d.getCreatedAt()) - .isAnonymous(d.getIsAnonymous()) - .isMyPost(isMyPost) - .isLiked(isLiked) - .isBookmarked(isBookmarked) - .build(); - sortList.add(result); - - } - return sortList; - - } - - - public static List toCommentListDto(List diaryCommentList){ - List list = new ArrayList<>(); - for(DiaryComment c: diaryCommentList){ - Member member = c.getMember(); - int reCommentCount = diaryCommentRepository.countAllByParent(c.getParent()); - DiaryCommentResponseDto.CommentDto comment = DiaryCommentResponseDto.CommentDto.builder() - .commentId(c.getId()) - .content(c.getDiaryCommentContent()) - .recommentCount(reCommentCount) - .user(MemberResponseDto.MemberDto.builder().memberId(member.getMemberId()).profileImgURL(member.getProfileImg()).name(member.getName()).build()) - .createdDate(c.getCreatedAt()) - .build(); - list.add(comment); - } - return list; - } } diff --git a/src/main/java/com/khureturn/community/dto/DiaryRequestDto.java b/src/main/java/com/khureturn/community/dto/DiaryRequestDto.java index 69b463b..74d5368 100644 --- a/src/main/java/com/khureturn/community/dto/DiaryRequestDto.java +++ b/src/main/java/com/khureturn/community/dto/DiaryRequestDto.java @@ -31,15 +31,6 @@ public static class UpdateDiaryDto{ private Boolean isAnonymous; } - @Builder - @Getter - @AllArgsConstructor(access = AccessLevel.PROTECTED) - @NoArgsConstructor(access = AccessLevel.PROTECTED) - public static class DiaryGetDto{ - private int cursor; - private int size; - } - diff --git a/src/main/java/com/khureturn/community/dto/DiaryResponseDto.java b/src/main/java/com/khureturn/community/dto/DiaryResponseDto.java index c3972a4..8a07e40 100644 --- a/src/main/java/com/khureturn/community/dto/DiaryResponseDto.java +++ b/src/main/java/com/khureturn/community/dto/DiaryResponseDto.java @@ -10,6 +10,7 @@ public class DiaryResponseDto { @Builder @Getter + @Setter @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class DiaryDto{ @@ -60,6 +61,7 @@ public static class UpdateDiaryDto { @Builder @Getter + @Setter @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class DiarySortDto{ diff --git a/src/main/java/com/khureturn/community/repository/DiaryFileRepository.java b/src/main/java/com/khureturn/community/repository/DiaryFileRepository.java index cb79c1e..3a88450 100644 --- a/src/main/java/com/khureturn/community/repository/DiaryFileRepository.java +++ b/src/main/java/com/khureturn/community/repository/DiaryFileRepository.java @@ -4,6 +4,11 @@ import com.khureturn.community.domain.diary.DiaryFile; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; +import java.util.Optional; + public interface DiaryFileRepository extends JpaRepository { + + DiaryFile findByDiary(Diary diary); } diff --git a/src/main/java/com/khureturn/community/repository/DiaryRepository.java b/src/main/java/com/khureturn/community/repository/DiaryRepository.java index e1eae84..c48a959 100644 --- a/src/main/java/com/khureturn/community/repository/DiaryRepository.java +++ b/src/main/java/com/khureturn/community/repository/DiaryRepository.java @@ -1,9 +1,12 @@ package com.khureturn.community.repository; +import com.khureturn.community.domain.Member; import com.khureturn.community.domain.diary.Diary; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; import java.util.Optional; @@ -14,12 +17,13 @@ public interface DiaryRepository extends JpaRepository { void deleteById(Long diaryId); List findAllByMember(Long memberId); - boolean existsByMember(Long memberId); + boolean existsByMember(Member member); - Page findByIdLessThanOrderByCreatedAtDesc(Long cursorId, PageRequest pageRequest); + @Query("select d from Diary d where d.diaryContent like %?1%") + Page findByDiaryContentContainingIgnoreCase(String search, Pageable pageable); + + Page findAll(Pageable pageable); - Page findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryLikeCountDesc(String search, Long cursorId, PageRequest pageRequest); - Page findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryViewCountDesc(String search, Long cursorId, PageRequest pageRequest); } diff --git a/src/main/java/com/khureturn/community/repository/DiaryScrapRepository.java b/src/main/java/com/khureturn/community/repository/DiaryScrapRepository.java index c68d344..dbf62bb 100644 --- a/src/main/java/com/khureturn/community/repository/DiaryScrapRepository.java +++ b/src/main/java/com/khureturn/community/repository/DiaryScrapRepository.java @@ -10,8 +10,8 @@ public interface DiaryScrapRepository extends JpaRepository { - boolean existsDiaryScrapByMemberAndDiary(Long memberId, Long diaryId); + boolean existsDiaryScrapByMemberAndDiary(Member member, Diary diary); - Optional findByMemberAndDiary(Long memberId, Long diaryId); + Optional findByMemberAndDiary(Member member, Diary diary); } diff --git a/src/main/java/com/khureturn/community/service/DiaryCommentService.java b/src/main/java/com/khureturn/community/service/DiaryCommentService.java index 7ddd7e7..ffb6ec8 100644 --- a/src/main/java/com/khureturn/community/service/DiaryCommentService.java +++ b/src/main/java/com/khureturn/community/service/DiaryCommentService.java @@ -4,6 +4,8 @@ import com.khureturn.community.domain.diary.Diary; import com.khureturn.community.domain.diary.DiaryComment; import com.khureturn.community.dto.DiaryCommentRequestDto; +import com.khureturn.community.dto.DiaryCommentResponseDto; +import com.khureturn.community.dto.MemberResponseDto; import com.khureturn.community.exception.NotFoundException; import com.khureturn.community.repository.DiaryCommentRepository; import com.khureturn.community.repository.DiaryRepository; @@ -12,6 +14,7 @@ import org.springframework.stereotype.Service; import java.security.Principal; +import java.util.ArrayList; import java.util.List; @Service @@ -84,6 +87,23 @@ public DiaryComment updateReComment(Long diaryId, Long commentId, Long recomment } + public List getCommentList(List diaryCommentList){ + List list = new ArrayList<>(); + for(DiaryComment c: diaryCommentList){ + Member member = c.getMember(); + int reCommentCount = diaryCommentRepository.countAllByParent(c.getParent()); + DiaryCommentResponseDto.CommentDto comment = DiaryCommentResponseDto.CommentDto.builder() + .commentId(c.getId()) + .content(c.getDiaryCommentContent()) + .recommentCount(reCommentCount) + .user(MemberResponseDto.MemberDto.builder().memberId(member.getMemberId()).profileImgURL(member.getProfileImg()).name(member.getName()).build()) + .createdDate(c.getCreatedAt()) + .build(); + list.add(comment); + } + return list; + } + public List findAllByDiaryAndComment(Long diaryId, Long commentId){ Diary diary = diaryRepository.findById(diaryId) .orElseThrow(()-> new NotFoundException("Diary를 찾을 수 없습니다.")); diff --git a/src/main/java/com/khureturn/community/service/DiaryFileService.java b/src/main/java/com/khureturn/community/service/DiaryFileService.java index 3a283e2..606c5a2 100644 --- a/src/main/java/com/khureturn/community/service/DiaryFileService.java +++ b/src/main/java/com/khureturn/community/service/DiaryFileService.java @@ -24,8 +24,8 @@ public class DiaryFileService { public static String fileUpload(List medias) throws IOException { - String rootPath = System.getProperty("user.dir"); - String fileDir = rootPath + "/medias/"; + String rootPath = System.getProperty("user.dir") + "/src/main/webapp/WEB-INF"; + String fileDir = rootPath + "/static/thumbnailDiaryMedia"; List list = new ArrayList<>(); for(MultipartFile media: medias){ File saveMedia = new File(fileDir, media.getOriginalFilename()); diff --git a/src/main/java/com/khureturn/community/service/DiaryLikeService.java b/src/main/java/com/khureturn/community/service/DiaryLikeService.java index 2a83029..f54a575 100644 --- a/src/main/java/com/khureturn/community/service/DiaryLikeService.java +++ b/src/main/java/com/khureturn/community/service/DiaryLikeService.java @@ -50,13 +50,4 @@ public void diaryUnlike(Long diaryId, Member member){ } - public Boolean findDiaryLikeByMemberAndDiary(Long memberId, Long diaryId){ - Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new NotFoundException("유저를 찾을 수 없습니다.")); - Diary diary = diaryRepository.findById(diaryId) - .orElseThrow(()->new NotFoundException("Diary를 찾을 수 없습니다.")); - Boolean isLiked = diaryLikeRepository.existsDiaryLikeByMemberAndDiary(member, diary); - return isLiked; - } - } diff --git a/src/main/java/com/khureturn/community/service/DiaryScrapService.java b/src/main/java/com/khureturn/community/service/DiaryScrapService.java index 98b5e11..f09b150 100644 --- a/src/main/java/com/khureturn/community/service/DiaryScrapService.java +++ b/src/main/java/com/khureturn/community/service/DiaryScrapService.java @@ -21,7 +21,7 @@ public class DiaryScrapService { public void diaryScrap(Long diaryId, Member member){ Diary diary = diaryRepository.findById(diaryId) .orElseThrow(() -> new NotFoundException("Diary를 찾을 수 없습니다")); - if(diaryScrapRepository.existsDiaryScrapByMemberAndDiary(member.getMemberId(), diaryId)){ + if(diaryScrapRepository.existsDiaryScrapByMemberAndDiary(member, diary)){ throw new DuplicateInsertionException("이미 스크랩이 완료되었습니다."); } @@ -38,7 +38,7 @@ public void diaryScrap(Long diaryId, Member member){ public void diaryUnScrap(Long diaryId, Member member){ Diary diary = diaryRepository.findById(diaryId) .orElseThrow(() -> new NotFoundException("Diary를 찾을 수 없습니다")); - DiaryScrap diaryScrap = diaryScrapRepository.findByMemberAndDiary(member.getMemberId(), diaryId) + DiaryScrap diaryScrap = diaryScrapRepository.findByMemberAndDiary(member, diary) .orElseThrow(() -> new NotFoundException("스크랩을 찾을 수 없습니다")); diaryScrapRepository.delete(diaryScrap); @@ -46,8 +46,4 @@ public void diaryUnScrap(Long diaryId, Member member){ } - public Boolean findDiaryScrapByMemberAndDiary(Long memberId, Long diaryId){ - Boolean isBookmarked = diaryScrapRepository.existsDiaryScrapByMemberAndDiary(memberId, diaryId); - return isBookmarked; - } } diff --git a/src/main/java/com/khureturn/community/service/DiaryService.java b/src/main/java/com/khureturn/community/service/DiaryService.java index 8a9a6ca..ad10732 100644 --- a/src/main/java/com/khureturn/community/service/DiaryService.java +++ b/src/main/java/com/khureturn/community/service/DiaryService.java @@ -8,12 +8,13 @@ import com.khureturn.community.dto.DiaryResponseDto; import com.khureturn.community.dto.MemberResponseDto; import com.khureturn.community.exception.NotFoundException; -import com.khureturn.community.repository.DiaryFileRepository; -import com.khureturn.community.repository.DiaryRepository; +import com.khureturn.community.repository.*; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -31,10 +32,16 @@ public class DiaryService{ private final DiaryRepository diaryRepository; private final DiaryFileRepository diaryFileRepository; + private final DiaryLikeRepository diaryLikeRepository; + private final DiaryScrapRepository diaryScrapRepository; + + private final MemberRepository memberRepository; + @Transactional public Diary create(List mediaList, DiaryRequestDto.CreateDiaryDto request, Principal principal) throws IOException { - Diary diary = DiaryConverter.toDiary(request, (Member) principal); + Member member = memberRepository.findByName(principal.getName()); + Diary diary = DiaryConverter.toDiary(request, member); diaryRepository.save(diary); DiaryFile diaryFile = DiaryConverter.toDiaryFile(request, DiaryFileService.fileUpload(mediaList), diary); diaryFileRepository.save(diaryFile); @@ -43,7 +50,8 @@ public Diary create(List mediaList, DiaryRequestDto.CreateDiaryDt @Transactional public Diary update(Long diaryId, DiaryRequestDto.UpdateDiaryDto request){ - Diary diary = diaryRepository.findById(diaryId).get(); + Diary diary = diaryRepository.findById(diaryId) + .orElseThrow(() -> new NotFoundException("Diary를 찾을 수 없습니다.")); diary.update(request.getTitle(), request.getContent(), request.getIsAnonymous()); return diary; } @@ -55,40 +63,108 @@ public void delete(Long diaryId){ public Diary findById(Long diaryId){ Diary diary = diaryRepository.findById(diaryId) - .orElseThrow(() -> new NotFoundException("Diary를 찾을 수 없습니다"));; - diaryRepository.save(diary); - diary.increaseHit(); - return diaryRepository.findById(diaryId).get(); + .orElseThrow(() -> new NotFoundException("Diary를 찾을 수 없습니다")); + return diary; } + public DiaryResponseDto.DiaryDto findDiary(Diary diary, DiaryFile diaryFile, Principal principal){ + diary.increaseHit(); + Member nowMember = memberRepository.findByName(principal.getName()); + Member diaryMember = diary.getMember(); + Boolean isLiked = diaryLikeRepository.existsDiaryLikeByMemberAndDiary(nowMember, diary); + Boolean isBookmarked = diaryScrapRepository.existsDiaryScrapByMemberAndDiary(nowMember, diary); + Boolean isMyPost = diaryRepository.existsByMember(nowMember); + DiaryResponseDto.DiaryDto result = DiaryResponseDto.DiaryDto.builder() + .isLiked(isLiked) + .isBookmarked(isBookmarked) + .member(MemberResponseDto.MemberDto.builder().memberId(diaryMember.getMemberId()).profileImgURL(diaryMember.getProfileImg()).name(diaryMember.getName()).phoneNumber(diaryMember.getPhoneNumber()).build()) + .title(diary.getDiaryTitle()) + .content(diary.getDiaryContent()) + .createdDate(diary.getCreatedAt()) + .modifiedDate(diary.getUpdateAt()) + .viewCount(diary.getDiaryViewCount()) + .bookmarkedCount(diary.getDiaryScrapCount()) + .isAnonymous(diary.getIsAnonymous()) + .isMyPost(isMyPost) + .likeCount(diary.getDiaryLikeCount()) + .commentCount(diary.getDiaryCommentCount()) + .build(); + if(diaryFile != null){ + String url = diaryFile.getDiaryOriginalUrl(); + List list = Arrays.asList(url.split(",")); + result.setMediaList(list); + } + return result; + } - public List findAllByMember(Member member){ - List diaries = diaryRepository.findAllByMember(member.getMemberId()); - return diaries; + public List findDiarySort(List diaryList, Principal principal){ + Member nowMember = memberRepository.findByName(principal.getName()); + List sortList = new ArrayList<>(); + for(Diary d: diaryList){ + Member diarymember = d.getMember(); + Boolean isLiked = diaryLikeRepository.existsDiaryLikeByMemberAndDiary(nowMember, d); + Boolean isBookmarked = diaryScrapRepository.existsDiaryScrapByMemberAndDiary(nowMember, d); + Boolean isMyPost = diaryRepository.existsByMember(nowMember); + DiaryResponseDto.DiarySortDto result =DiaryResponseDto.DiarySortDto.builder() + .diaryId(d.getId()) + .title(d.getDiaryTitle()) + .likeCount(d.getDiaryLikeCount()) + .commentCount(d.getDiaryCommentCount()) + .viewCount(d.getDiaryViewCount()) + .member(MemberResponseDto.MemberSortDto.builder().memberId(diarymember.getMemberId()).profileImgURL(diarymember.getProfileImg()).name(diarymember.getName()).build()) + .createdDate(d.getCreatedAt()) + .isAnonymous(d.getIsAnonymous()) + .isMyPost(isMyPost) + .isLiked(isLiked) + .isBookmarked(isBookmarked) + .build(); + DiaryFile diaryFile = diaryFileRepository.findByDiary(d); + if(diaryFile != null){ + String url = diaryFile.getDiaryOriginalUrl(); + List list = Arrays.asList(url.split(",")); + result.setThumbnailImgURL(list.get(d.getThumbnailIndex())); + } + sortList.add(result); + } + return sortList; } - public boolean findByMember(Long memberId){ - return diaryRepository.existsByMember(memberId); - } - public List getPage(Long cursorId, int size){ - PageRequest pageRequest = PageRequest.of(0,size); - Page fetchPages = diaryRepository.findByIdLessThanOrderByCreatedAtDesc(cursorId, pageRequest); - return fetchPages.getContent(); + // 한 페이지에 5개씩 + public List getPage(int page, String sort, String search){ + if(sort == "likecount"){ + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "diaryLikeCount")); + Page likesort = diaryRepository.findByDiaryContentContainingIgnoreCase(search, pageable); + + return likesort.getContent(); + } else if (sort == "viewcount") { + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "diaryViewCount")); + Page viewsort = diaryRepository.findByDiaryContentContainingIgnoreCase(search, pageable); + return viewsort.getContent(); + } else{ + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "createdAt")); + Page datesort = diaryRepository.findByDiaryContentContainingIgnoreCase(search, pageable); + return datesort.getContent(); + } } - public List getPageByLike(Long cursorId, int size, String search){ - PageRequest pageRequest = PageRequest.of(0,size); - Page fetchPages = diaryRepository.findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryLikeCountDesc(search, cursorId, pageRequest); - return fetchPages.getContent(); + public List findAll(int page, String sort){ + if(sort == "likecount"){ + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "diaryLikeCount")); + Page likesort = diaryRepository.findAll(pageable); + return likesort.getContent(); + } else if (sort == "viewcount") { + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "diaryViewCount")); + Page viewsort = diaryRepository.findAll(pageable); + return viewsort.getContent(); + } else{ + Pageable pageable = PageRequest.of(page, 5, Sort.by(Sort.Direction.DESC, "createdAt")); + Page datesort = diaryRepository.findAll(pageable); + return datesort.getContent(); + } } - public List getPageByView(Long cursorId, int size, String search){ - PageRequest pageRequest = PageRequest.of(0,size); - Page fetchPages = diaryRepository.findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryViewCountDesc(search, cursorId,pageRequest); - return fetchPages.getContent(); - } }