From 47a0817d8ee7818e52dd6056a03e03fddc395e75 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Tue, 29 Jul 2025 21:57:46 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat=20:=20=EB=82=98=EB=88=84=EA=B8=B0=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=EC=97=90=20rewardPencil=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20#448?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/UserNotesShareableGetResponse.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/umc/th/juinjang/api/limjang/service/response/UserNotesShareableGetResponse.java b/src/main/java/umc/th/juinjang/api/limjang/service/response/UserNotesShareableGetResponse.java index 29720ba6..c6c51821 100644 --- a/src/main/java/umc/th/juinjang/api/limjang/service/response/UserNotesShareableGetResponse.java +++ b/src/main/java/umc/th/juinjang/api/limjang/service/response/UserNotesShareableGetResponse.java @@ -24,10 +24,11 @@ record UserNoteShareableResponse( String monthlyRent, Integer pyong, String floor, - String shortAddress + String shortAddress, + Long rewardPencil ) { - static UserNoteShareableResponse of(Limjang limjang, String imageUrl, boolean isScraped) { + static UserNoteShareableResponse of(Limjang limjang, String imageUrl, boolean isScraped, Long rewardPencil) { return new UserNoteShareableResponse( limjang.getLimjangId(), limjang.getPurpose(), limjang.getPropertyType(), limjang.getPriceType(), limjang.getNickname(), @@ -39,17 +40,18 @@ static UserNoteShareableResponse of(Limjang limjang, String imageUrl, boolean is null, limjang.getPyong(), limjang.getFloor(), - limjang.getAddressEntity().getShortAddress() + limjang.getAddressEntity().getShortAddress(), + rewardPencil ); } } public static UserNotesShareableGetResponse of(List limjangs, Map imageUrl, - Map isScraped) { + Map isScraped, Map expectedReward) { return new UserNotesShareableGetResponse( limjangs.stream() .map(it -> UserNoteShareableResponse.of(it, imageUrl.get(it.getLimjangId()), - isScraped.get(it.getLimjangId()))) + isScraped.get(it.getLimjangId()), expectedReward.get(it.getLimjangId()))) .toList()); } } From 6fcb4811a311982496975cb43eb2f19df789f43e Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Tue, 29 Jul 2025 22:19:54 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat=20:=20=EA=B3=B5=EC=9C=A0=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=EC=9D=B4=20=EC=9E=88=EA=B3=A0,=20=EA=B3=B5=EC=9C=A0?= =?UTF-8?q?=20=EC=A4=91=EB=8B=A8=EB=90=9C=20=EC=9E=84=EC=9E=A5=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=BF=BC=EB=A6=AC=20=EC=B6=94=EA=B0=80=20#448?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../th/juinjang/api/note/shared/service/SharedNoteFinder.java | 4 ++++ .../domain/note/shared/repository/SharedNoteRepository.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteFinder.java b/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteFinder.java index 30b01f61..bec8ec17 100644 --- a/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteFinder.java +++ b/src/main/java/umc/th/juinjang/api/note/shared/service/SharedNoteFinder.java @@ -85,4 +85,8 @@ public boolean existsByDeletedAtIsNullAndLimjang(Limjang limjang) { public Set findLimjangIdsByDeletedAtIsNullAndLimjang(List notes) { return sharedNoteRepository.findLimjangIdsByDeletedAtIsNullAndLimjang(notes); } + + public Set findLimjangIdsByDeletedAtIsNotNullAndLimjang(List notes) { + return sharedNoteRepository.findLimjangIdsByDeletedAtIsNotNullAndLimjang(notes); + } } diff --git a/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteRepository.java b/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteRepository.java index 0ee87ced..06c675c3 100644 --- a/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteRepository.java +++ b/src/main/java/umc/th/juinjang/domain/note/shared/repository/SharedNoteRepository.java @@ -49,4 +49,7 @@ public interface SharedNoteRepository extends JpaRepository, S @Query("SELECT s.limjang.limjangId FROM SharedNote s WHERE s.limjang in :limjangs AND s.deletedAt is null") Set findLimjangIdsByDeletedAtIsNullAndLimjang(@Param("limjangs") List limjangs); + + @Query("SELECT s.limjang.limjangId FROM SharedNote s WHERE s.limjang in :limjangs AND s.deletedAt is not null") + Set findLimjangIdsByDeletedAtIsNotNullAndLimjang(@Param("limjangs") List limjangs); } From 7d234b5eaa7cb7073526dff8e221c4556f972ef8 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Tue, 29 Jul 2025 22:20:23 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat=20:=20=EC=98=88=EC=83=81=20=EC=9E=84?= =?UTF-8?q?=EC=9E=A5=20rewardPencil=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#448?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../limjang/service/NoteQueryServiceV2.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/umc/th/juinjang/api/limjang/service/NoteQueryServiceV2.java b/src/main/java/umc/th/juinjang/api/limjang/service/NoteQueryServiceV2.java index 8ad460a8..126fc78b 100644 --- a/src/main/java/umc/th/juinjang/api/limjang/service/NoteQueryServiceV2.java +++ b/src/main/java/umc/th/juinjang/api/limjang/service/NoteQueryServiceV2.java @@ -1,6 +1,7 @@ package umc.th.juinjang.api.limjang.service; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -63,13 +64,34 @@ public UserNotesShareableGetResponse findNotesShareable(Member member) { List filteredSharedNotes = findUnsharedSharableNotes(member); List imageList = imageFinder.findAllFirstCreatedImagePerNote(filteredSharedNotes); + // 예상 리워드 판별 + Map mapToExpectedReward = mapInCalculateReward(filteredSharedNotes); + return UserNotesShareableGetResponse.of(filteredSharedNotes, mapToNoteIdAndImageId(imageList), - mapToNoteScrapStatus(filteredSharedNotes)); + mapToNoteScrapStatus(filteredSharedNotes), mapToExpectedReward); + } + + private Map mapInCalculateReward(List notes) { + Set noteIdsWithPastSharedHistory = + sharedNoteFinder.findLimjangIdsByDeletedAtIsNotNullAndLimjang(notes); + + Map mapToExpectedRewardPencil = new HashMap<>(); + for (Limjang note : notes) { + mapToExpectedRewardPencil.put(note.getLimjangId(), calculateReward(note, noteIdsWithPastSharedHistory)); + } + return mapToExpectedRewardPencil; + } + + private Long calculateReward(Limjang note, Set previouslySharedNoteIds) { + if (previouslySharedNoteIds.contains(note.getLimjangId())) + return null; + return note.getImageList().isEmpty() ? 2L : 7L; } private List findUnsharedSharableNotes(Member member) { List notes = noteFinder.getAllByMemberWithAddressAndNotePriceWhereIsSharableIsTrueAndDeletedIsFalseAndAddressBcodeIsNotNull( member); + // 이미 공유 중인 임장들 필터링 Set noteIdInSharedNotes = sharedNoteFinder.findLimjangIdsByDeletedAtIsNullAndLimjang(notes); return notes.stream()