diff --git a/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteQueryService.java b/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteQueryService.java index 3c9537ef..2fc918ff 100644 --- a/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteQueryService.java +++ b/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteQueryService.java @@ -59,22 +59,27 @@ public SharedNoteGetResponse findSharedNote(Member member, Long sharedNoteId) { SharedNote sharedNote = sharedNoteFinder.findByIdWithNoteAndAddress(sharedNoteId); Limjang limjang = sharedNote.getLimjang(); - boolean isBuyer = usedPencilFinder.existsByMemberAndSharedNoteId(member, sharedNoteId); + boolean isBuyerOrOwner = getIsBuyerOrOwner(member, sharedNote); long viewCount = getViewCountAndCheckReward(member, sharedNoteId, sharedNote); Integer countBuyer = makeBuyerCount(usedPencilFinder.countBySharedNoteId(sharedNoteId)); boolean isLiked = likedNoteFinder.existsByMemberAndSharedNote(member, sharedNote); - if (isBuyer) { - return SharedNoteGetResponse.ofPurchased(isBuyer, limjang, limjang.getAddressEntity(), sharedNote, + if (isBuyerOrOwner) { + return SharedNoteGetResponse.ofPurchased(isBuyerOrOwner, limjang, limjang.getAddressEntity(), sharedNote, sharedNote.getMember(), countBuyer, isLiked, viewCount); } else { - return SharedNoteGetResponse.ofNotPurchased(isBuyer, limjang, limjang.getAddressEntity(), sharedNote, + return SharedNoteGetResponse.ofNotPurchased(isBuyerOrOwner, limjang, limjang.getAddressEntity(), sharedNote, sharedNote.getMember(), countBuyer, isLiked, viewCount); } } + private boolean getIsBuyerOrOwner(Member requestMember, SharedNote sharedNote) { + return usedPencilFinder.existsByMemberAndSharedNoteId(requestMember, sharedNote.getSharedNoteId()) || + sharedNote.getMember().getMemberId().equals(requestMember.getMemberId()); + } + private long getViewCountAndCheckReward(Member member, Long sharedNoteId, SharedNote sharedNote) { long viewCount = viewCountService.getRedisViewCount(sharedNote.getSharedNoteId()); if (!viewCountService.isDuplicate(member.getMemberId(), sharedNoteId)) { diff --git a/src/main/java/umc/th/juinjang/api/note/shared/service/response/SharedNoteGetResponse.java b/src/main/java/umc/th/juinjang/api/note/shared/service/response/SharedNoteGetResponse.java index 3eecec5e..44079de5 100644 --- a/src/main/java/umc/th/juinjang/api/note/shared/service/response/SharedNoteGetResponse.java +++ b/src/main/java/umc/th/juinjang/api/note/shared/service/response/SharedNoteGetResponse.java @@ -62,7 +62,7 @@ public static SharedNoteGetResponse ofNotPurchased( limjang.getPriceType(), buyerCount, findImagesUrlBySharingStatus(sharedNote.isImageShared(), limjang, 2), - address.getFullAddress(), + address.getRoadAddress(), address.getShortAddress(), limjang.getLimjangPrice().getPrice(limjang.getPriceType(), limjang.getPurpose()), limjang.getPriceType() == LimjangPriceType.MONTHLY_RENT ? limjang.getLimjangPrice().getMonthlyRent() : @@ -103,7 +103,7 @@ public static SharedNoteGetResponse ofPurchased( limjang.getPriceType(), buyerCount, findImagesUrlBySharingStatus(sharedNote.isImageShared(), limjang, 3), - address.getFullAddress(), + address.getRoadAddress(), address.getShortAddress(), limjang.getLimjangPrice().getPrice(limjang.getPriceType(), limjang.getPurpose()), limjang.getPriceType() == LimjangPriceType.MONTHLY_RENT ? limjang.getLimjangPrice().getMonthlyRent() : diff --git a/src/main/java/umc/th/juinjang/domain/limjang/model/Address.java b/src/main/java/umc/th/juinjang/domain/limjang/model/Address.java index be641278..063f51f8 100644 --- a/src/main/java/umc/th/juinjang/domain/limjang/model/Address.java +++ b/src/main/java/umc/th/juinjang/domain/limjang/model/Address.java @@ -70,7 +70,7 @@ public static Address create(String roadAddress, String addressDetail, String bc public String getShortAddress() { return Stream.of(sigungo, bname1, bname2) - .filter(Objects::nonNull) + .filter(s -> s != null && !s.isBlank()) .collect(Collectors.joining(" ")); } diff --git a/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteQueryDSLRepositoryImpl.java b/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteQueryDSLRepositoryImpl.java index bf6ed23a..9e374247 100644 --- a/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteQueryDSLRepositoryImpl.java +++ b/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteQueryDSLRepositoryImpl.java @@ -10,6 +10,7 @@ import static umc.th.juinjang.domain.report.model.QReport.*; import java.util.List; +import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -64,9 +65,10 @@ public Page findSharedNoteInExployer(List code, ExploreSortT .fetch(); JPAQuery countQuery = queryFactory - .select(sharedNote.count()) - .from(sharedNote) + .select(sharedNote.count()).from(sharedNote) .join(sharedNote.limjang, limjang) + .join(sharedNote.member, member) + .join(limjang.limjangPrice, limjangPrice) .join(limjang.addressEntity, address) .leftJoin(limjang.report, report) .where( @@ -74,9 +76,10 @@ public Page findSharedNoteInExployer(List code, ExploreSortT getWhereByPropertyType(propertyType), getWhereByPriceType(priceType), keywordCondition(keyword), - sharedNote.deletedAt.isNull() + sharedNote.deletedAt.isNull(), + limjang.deleted.isFalse() ); - long totalCount = countQuery.fetchOne(); + long totalCount = Optional.ofNullable(countQuery.fetchOne()).orElse(0L); return new PageImpl<>(content, pageable, totalCount); }