diff --git a/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepository.java b/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepository.java new file mode 100644 index 0000000..e94004a --- /dev/null +++ b/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepository.java @@ -0,0 +1,6 @@ +package com.api.readinglog.domain.likesummary.repository; + +public interface CustomLikeSummaryRepository { + + long getLikeTotalCountInMonth(Long memberId, int month); +} diff --git a/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepositoryImpl.java b/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepositoryImpl.java new file mode 100644 index 0000000..40fbfb6 --- /dev/null +++ b/src/main/java/com/api/readinglog/domain/likesummary/repository/CustomLikeSummaryRepositoryImpl.java @@ -0,0 +1,22 @@ +package com.api.readinglog.domain.likesummary.repository; + +import static com.api.readinglog.domain.likesummary.entity.QLikeSummary.likeSummary; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +public class CustomLikeSummaryRepositoryImpl implements CustomLikeSummaryRepository { + + private final JPAQueryFactory queryFactory; + + @Override + public long getLikeTotalCountInMonth(Long memberId, int month) { + return queryFactory + .select(likeSummary.count()) + .from(likeSummary) + .where(likeSummary.member.id.eq(memberId).and(likeSummary.createdAt.month().eq(month))) + .fetchFirst(); + } + +} diff --git a/src/main/java/com/api/readinglog/domain/likesummary/repository/LikeSummaryRepository.java b/src/main/java/com/api/readinglog/domain/likesummary/repository/LikeSummaryRepository.java index 0fa7539..34074cb 100644 --- a/src/main/java/com/api/readinglog/domain/likesummary/repository/LikeSummaryRepository.java +++ b/src/main/java/com/api/readinglog/domain/likesummary/repository/LikeSummaryRepository.java @@ -3,6 +3,6 @@ import com.api.readinglog.domain.likesummary.entity.LikeSummary; import org.springframework.data.jpa.repository.JpaRepository; -public interface LikeSummaryRepository extends JpaRepository { +public interface LikeSummaryRepository extends JpaRepository, CustomLikeSummaryRepository { void deleteByMemberIdAndSummaryId(Long userId, Long summaryId); } diff --git a/src/main/java/com/api/readinglog/domain/stat/service/StatService.java b/src/main/java/com/api/readinglog/domain/stat/service/StatService.java index 0582e97..e7c4a86 100644 --- a/src/main/java/com/api/readinglog/domain/stat/service/StatService.java +++ b/src/main/java/com/api/readinglog/domain/stat/service/StatService.java @@ -3,6 +3,7 @@ import com.api.readinglog.domain.book.dto.BookCalendarResponse; import com.api.readinglog.domain.book.dto.BookCategoryResponse; import com.api.readinglog.domain.book.repository.BookRepository; +import com.api.readinglog.domain.likesummary.repository.LikeSummaryRepository; import com.api.readinglog.domain.stat.controller.dto.StatResponse; import java.util.List; import lombok.RequiredArgsConstructor; @@ -15,15 +16,16 @@ public class StatService { private final BookRepository bookRepository; + private final LikeSummaryRepository likeSummaryRepository; public StatResponse getStats(Long memberId, int month) { Long lastMonthTotalBookCount = bookRepository.getBookTotalCountInMonth(memberId, month - 1); Long thisMonthTotalBookCount = bookRepository.getBookTotalCountInMonth(memberId, month); - List bookCountGroupByCategory = bookRepository.getBookCountGroupByCategory(memberId, month); + List bookCountGroupByCategory = bookRepository.getBookCountGroupByCategoryInMonth(memberId, month); List bookCalendarInMonth = bookRepository.getBookCalendarInMonth(memberId, month); + long thisMonthLikeTotalCount = likeSummaryRepository.getLikeTotalCountInMonth(memberId, month); - // TODO: 이번달 받은 좋아요 개수 추가 - return StatResponse.of(month, lastMonthTotalBookCount, thisMonthTotalBookCount, null, bookCountGroupByCategory, bookCalendarInMonth); + return StatResponse.of(month, lastMonthTotalBookCount, thisMonthTotalBookCount, thisMonthLikeTotalCount, bookCountGroupByCategory, bookCalendarInMonth); } }