Skip to content

Commit

Permalink
fix: Fix Diary Page
Browse files Browse the repository at this point in the history
  • Loading branch information
KellyKimHyeJin committed Jul 31, 2023
1 parent 65e44ff commit defd22f
Show file tree
Hide file tree
Showing 22 changed files with 173 additions and 204 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public ResponseEntity<DiaryCommentResponseDto.UpdateDiaryCommentDto> updateComme
@GetMapping("/diary/{postId}/comment")
public ResponseEntity<List<DiaryCommentResponseDto.CommentDto>> getComment(@PathVariable(name = "postId")Long postId){
List<DiaryComment> commentList = diaryCommentService.findAllByDiary(postId);
return ResponseEntity.ok(DiaryConverter.toCommentListDto(commentList));
return ResponseEntity.ok(diaryCommentService.getCommentList(commentList));
}

@PreAuthorize("isAuthenticated()")
Expand All @@ -66,7 +66,7 @@ public ResponseEntity<DiaryCommentResponseDto.CreateDiaryCommentDto> createReCom
public ResponseEntity<List<DiaryCommentResponseDto.CommentDto>> getRecomment(@PathVariable(name = "postId")Long postId,
@PathVariable(name = "commentId")Long commentId){
List<DiaryComment> commentList = diaryCommentService.findAllByDiaryAndComment(postId, commentId);
return ResponseEntity.ok(DiaryConverter.toCommentListDto(commentList));
return ResponseEntity.ok(diaryCommentService.getCommentList(commentList));
}

@PreAuthorize("isAuthenticated()")
Expand Down
Original file line number Diff line number Diff line change
@@ -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.*;
Expand All @@ -32,11 +28,9 @@ public class DiaryController {

private final DiaryFileService diaryFileService;

private final MemberService memberService;

@PreAuthorize("isAuthenticated()")
@PostMapping("")
public ResponseEntity<DiaryResponseDto.CreateDiaryDto> createDiary(Principal principal, @RequestPart(value = "mediaList", required= false)List<MultipartFile> mediaList,
public ResponseEntity<DiaryResponseDto.CreateDiaryDto> createDiary(Principal principal, @RequestPart(value = "mediaList", required= false) List<MultipartFile> 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());
Expand All @@ -53,39 +47,30 @@ public ResponseEntity<DiaryResponseDto.UpdateDiaryDto> updateDiary(@PathVariable
// 일기장 상세조회
@PreAuthorize("isAuthenticated()")
@GetMapping("/{postId}")
public ResponseEntity<DiaryResponseDto.DiaryDto> getDiary(@PathVariable(name = "postId") Long postId){
public ResponseEntity<DiaryResponseDto.DiaryDto> 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<List<DiaryResponseDto.DiarySortDto>> getDiaryList(@RequestParam(name = "cursor")int cursor, @RequestParam(name = "size")int size){
List<Diary> diaryList = diaryService.getPage((long) cursor,size);
return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList));
}

// 일기장 좋아요순
@GetMapping("/likelist")
public ResponseEntity<List<DiaryResponseDto.DiarySortDto>> 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<Diary> diaryList = diaryService.getPageByLike((long)cursor, size, search);
return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList));

// 일기장 정렬
@PreAuthorize("isAuthenticated()")
@GetMapping("")
public ResponseEntity<List<DiaryResponseDto.DiarySortDto>> 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<Diary> diaryList = diaryService.getPage(page-1, sort, search);
return ResponseEntity.ok(diaryService.findDiarySort(diaryList, principal));
} else{
List<Diary> diaryList = diaryService.findAll(page-1, sort);
return ResponseEntity.ok(diaryService.findDiarySort(diaryList, principal));
}
}

// 일기장 조회수순
@GetMapping("/viewlist")
public ResponseEntity<List<DiaryResponseDto.DiarySortDto>> 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<Diary> diaryList = diaryService.getPageByView((long)cursor, size, search);
return ResponseEntity.ok(DiaryConverter.toDiarySortDto(diaryList));

}
@PreAuthorize("isAuthenticated()")
@DeleteMapping("/{postId}")
public ResponseEntity<Void> deleteDiary(@PathVariable(name = "postId")Long postId){
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/com/khureturn/community/domain/diary/Diary.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
@Getter
public class DiaryScrap {

@Id @GeneratedValue
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name ="diary_scrap_id")
private Long id;

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/khureturn/community/domain/exam/Exam.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
95 changes: 0 additions & 95 deletions src/main/java/com/khureturn/community/dto/DiaryConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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<String> 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<DiaryResponseDto.DiarySortDto> toDiarySortDto(List<Diary> diaryList){

List<DiaryResponseDto.DiarySortDto> sortList = new ArrayList<>();
for(Diary d: diaryList){
Member member = d.getMember();
DiaryFile diaryFile = diaryFileRepository.findByDiary(d);
String url = diaryFile.getDiaryOriginalUrl();
List<String> 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<DiaryCommentResponseDto.CommentDto> toCommentListDto(List<DiaryComment> diaryCommentList){
List<DiaryCommentResponseDto.CommentDto> 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;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class DiaryResponseDto {

@Builder
@Getter
@Setter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public static class DiaryDto{
Expand Down Expand Up @@ -60,6 +61,7 @@ public static class UpdateDiaryDto {

@Builder
@Getter
@Setter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public static class DiarySortDto{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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, Long> {


DiaryFile findByDiary(Diary diary);
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -14,12 +17,13 @@ public interface DiaryRepository extends JpaRepository<Diary, Long> {
void deleteById(Long diaryId);
List<Diary> findAllByMember(Long memberId);

boolean existsByMember(Long memberId);
boolean existsByMember(Member member);

Page<Diary> findByIdLessThanOrderByCreatedAtDesc(Long cursorId, PageRequest pageRequest);
@Query("select d from Diary d where d.diaryContent like %?1%")
Page<Diary> findByDiaryContentContainingIgnoreCase(String search, Pageable pageable);

Page<Diary> findAll(Pageable pageable);

Page<Diary> findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryLikeCountDesc(String search, Long cursorId, PageRequest pageRequest);

Page<Diary> findByDiaryContentContainingIgnoreCaseAndIdLessThanOrderByDiaryViewCountDesc(String search, Long cursorId, PageRequest pageRequest);

}
Loading

0 comments on commit defd22f

Please sign in to comment.