diff --git a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/controller/MyVeggieDiaryController.java b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/controller/MyVeggieDiaryController.java index b6960a40..afcec0f1 100644 --- a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/controller/MyVeggieDiaryController.java +++ b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/controller/MyVeggieDiaryController.java @@ -6,6 +6,7 @@ import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.request.Like; import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.*; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.Diary; +import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryComment; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.MyVeggie; import com.modernfarmer.farmusspring.domain.myveggiegarden.service.MyVeggieDiaryService; import com.modernfarmer.farmusspring.domain.user.entity.User; @@ -13,6 +14,7 @@ import com.modernfarmer.farmusspring.global.response.SuccessCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.repository.query.Param; import org.springframework.http.MediaType; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; @@ -98,6 +100,19 @@ public BaseResponseDto cancelLike( myVeggieDiaryService.cancelLike(userObject, diaryObject); return BaseResponseDto.of(SuccessCode.SUCCESS, null); } + + @GetMapping(value = "/{diaryId}/{farmClubId}/comment") + public BaseResponseDto selectComment( + @AuthenticationPrincipal CustomUser user, + @PathVariable("diaryId") Long diaryId, + @PathVariable("farmClubId") Long farmClubId + ) { + List diaryCommentList = myVeggieDiaryService.selectComment(user.getUserId(), diaryId, farmClubId); + + return BaseResponseDto.of(SuccessCode.SUCCESS, diaryCommentList); + } + + @PostMapping(value = "/comment") public BaseResponseDto writeComment( @AuthenticationPrincipal CustomUser user, diff --git a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/dto/response/DiaryCommentContent.java b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/dto/response/DiaryCommentContent.java new file mode 100644 index 00000000..ca9ecff8 --- /dev/null +++ b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/dto/response/DiaryCommentContent.java @@ -0,0 +1,58 @@ +package com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response; + +import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.Diary; +import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryComment; +import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.MyVeggie; +import com.modernfarmer.farmusspring.domain.myveggiegarden.util.DateManager; +import com.modernfarmer.farmusspring.domain.user.entity.User; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; +import java.util.Objects; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Slf4j +public class DiaryCommentContent { + + private Boolean myComment; + private String content; + private String date; + private String nickname; + private String profileImage; + + public static DiaryCommentContent of(Boolean check, DiaryComment diaryComment, User user){ + return new DiaryCommentContent( + check, + diaryComment.getComment(), + DateManager.parsingDotDateTime(diaryComment.getCreatedDate()), + user.getNickname(), + user.getProfileImage()); + } + + + public static List processData(List diaryCommentList, Long userId){ + return diaryCommentList.stream() + .map(diaryComment -> { + User user = diaryComment.getUser(); + boolean sortMyCommentResult = sortMyComment(user, userId); + return DiaryCommentContent.of(sortMyCommentResult, diaryComment, user ); + }) + .toList(); + } + + public static boolean sortMyComment(User user, Long userId){ + log.info(String.valueOf(user.getId())); + log.info(String.valueOf(userId)); + if(Objects.equals(user.getId(), userId)) + return true; + return false; + } + + + +} diff --git a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/entity/DiaryComment.java b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/entity/DiaryComment.java index 2a681db1..c791ca4c 100644 --- a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/entity/DiaryComment.java +++ b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/entity/DiaryComment.java @@ -2,6 +2,7 @@ import com.modernfarmer.farmusspring.domain.user.entity.User; import com.modernfarmer.farmusspring.global.common.BaseEntity; +import com.modernfarmer.farmusspring.global.response.BaseResponseDto; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -48,4 +49,5 @@ public static DiaryComment createDiaryComment(String content, Diary diary, User } + } diff --git a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/repository/DiaryRepository.java b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/repository/DiaryRepository.java index 09fdd5f6..4e5eeb3f 100644 --- a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/repository/DiaryRepository.java +++ b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/repository/DiaryRepository.java @@ -1,6 +1,8 @@ package com.modernfarmer.farmusspring.domain.myveggiegarden.repository; +import com.modernfarmer.farmusspring.domain.farmclub.entity.FarmClub; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.Diary; +import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryComment; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryLike; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.MyVeggie; import com.modernfarmer.farmusspring.domain.user.entity.User; @@ -10,6 +12,7 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @@ -24,4 +27,14 @@ public interface DiaryRepository extends JpaRepository { @Query("SELECT dl FROM diary_like AS dl WHERE dl.diary = :diary AND dl.user = :user") DiaryLike findDiaryLikeByIdAndUser(@Param("user") User user, @Param("diary") Diary diary); + + @Query("SELECT dc FROM diary_comment AS dc " + + "JOIN FETCH dc.diary AS d " + + "JOIN FETCH d.myVeggie AS mv " + + "JOIN FETCH mv.user " + + "JOIN FETCH d.farmClub " + + "WHERE d.id = :diaryId AND d.farmClub.id = :farmClubId AND d.isOpen = true") + List findDiary(@Param("diaryId") Long diaryId, @Param("farmClubId") Long farmClubId); + + } diff --git a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/service/MyVeggieDiaryService.java b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/service/MyVeggieDiaryService.java index a336e7ca..74fc44e5 100644 --- a/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/service/MyVeggieDiaryService.java +++ b/src/main/java/com/modernfarmer/farmusspring/domain/myveggiegarden/service/MyVeggieDiaryService.java @@ -1,9 +1,6 @@ package com.modernfarmer.farmusspring.domain.myveggiegarden.service; -import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.AllDairy; -import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.CheckTodayDiaryResponse; -import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.MyVeggieDiaryCount; -import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.SelectDiaryOneResponse; +import com.modernfarmer.farmusspring.domain.myveggiegarden.dto.response.*; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.Diary; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryComment; import com.modernfarmer.farmusspring.domain.myveggiegarden.entity.DiaryLike; @@ -128,6 +125,21 @@ public BaseResponseDto selectDiaryOne( } + @Transactional + public List selectComment( + Long userId, Long diaryId, Long farmClubId + ) { + + List diaryCommentList = diaryRepository.findDiary(diaryId, farmClubId); + List diaryCommentContent = DiaryCommentContent.processData(diaryCommentList, userId); + log.info(String.valueOf(diaryCommentContent)); + + + return diaryCommentContent; + } + + + public void insertComment(String content, User user, Diary diary){ DiaryComment diaryComment = DiaryComment.createDiaryComment(content, diary, user); diary.addDiaryComment(diaryComment);