Skip to content

Commit f4a8d65

Browse files
author
SMA/유정민
committed
[hotfix] 히든 아이템 바텀시트 읽기 여부 플래그 추가
1 parent cfc227b commit f4a8d65

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

src/main/java/donmani/donmani_server/reward/dto/RewardItemResponseDTO.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class RewardItemResponseDTO {
2525
private RewardCategory category;
2626
private boolean isHidden;
2727
private boolean newAcquiredFlag;
28+
private boolean isHiddenRead;
2829

2930
// 가지고 있는 아이템들만 보여줄 때 사용
3031
public static RewardItemResponseDTO of(RewardItem rewardItem) {
@@ -52,7 +53,7 @@ public static RewardItemResponseDTO of(RewardItem rewardItem) {
5253
return response;
5354
}
5455

55-
public static RewardItemResponseDTO of(RewardItem rewardItem, boolean newAcquiredFlag) {
56+
public static RewardItemResponseDTO of(RewardItem rewardItem, boolean newAcquiredFlag, boolean isHiddenRead) {
5657
RewardItemResponseDTO response = new RewardItemResponseDTO();
5758

5859
String prefix = "https://kr.object.ncloudstorage.com/donmani.bucket/reward_content/";
@@ -74,6 +75,7 @@ public static RewardItemResponseDTO of(RewardItem rewardItem, boolean newAcquire
7475
response.setCategory(rewardItem.getCategory());
7576
response.setHidden(rewardItem.isHidden());
7677
response.setNewAcquiredFlag(newAcquiredFlag);
78+
if (rewardItem.isHidden()) response.setHiddenRead(isHiddenRead);
7779

7880
return response;
7981
}

src/main/java/donmani/donmani_server/reward/service/RewardService.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public List<RewardItemResponseDTO> openItems(String userKey) {
109109
userItemRepository.saveAll(notOpenedItems);
110110

111111
// 히든 아이템 획득
112-
acquireHiddenItems(user);;
112+
acquireHiddenItems(user);
113113

114114
List<RewardItemResponseDTO> response = new ArrayList<>();
115115
for (UserItem item : notOpenedItems) {
@@ -123,11 +123,15 @@ private void acquireHiddenItems(User user) {
123123
List<UserItem> acquiredItems = userItemRepository.findAllByUser(user);
124124
if(acquiredItems.size() == MAX_REWARD) {
125125
RewardItem hiddenItem = rewardItemRepository.findFirstByHiddenTrue().orElseThrow();
126+
127+
// 히든 아이템 획득 시 isOpened 값을 활용하여 isHiddenRead 값을 판별
128+
boolean isHiddenRead = false;
129+
126130
UserItem newUserItem = UserItem.builder()
127131
.user(user)
128132
.item(hiddenItem)
129133
.acquiredAt(LocalDateTime.now(ZoneId.of("Asia/Seoul")))
130-
.isOpened(false)
134+
.isOpened(isHiddenRead)
131135
.build();
132136
userItemRepository.save(newUserItem);
133137
}
@@ -156,21 +160,22 @@ public Map<RewardCategory, List<RewardItemResponseDTO>> getAcquiredItem(String u
156160
// 기본 아이템들을 DTO로 변환
157161
List<RewardItemResponseDTO> response = defaultItemIds.stream()
158162
.map(id -> rewardItemRepository.findById(id)
159-
.map(item -> RewardItemResponseDTO.of(item, false))
163+
.map(item -> RewardItemResponseDTO.of(item, false, false))
160164
.orElseThrow(() -> new RuntimeException("Default item ID " + id + " not found")))
161165
.collect(Collectors.toList());
162166

163167
response.addAll(
164168
acquiredItems.stream()
165169
.map(item -> {
166-
// 3일 이내 획득한 Item
170+
// 1) 3일 이내 획득한 아이템은 newAcquiredFlag가 활성화
167171
boolean newAcquired = item.getAcquiredAt().isAfter(threeDaysAgo);
168-
// Hidden 아이템 처음 받았는지 여부
169-
if(item.getItem().isHidden() && !item.isOpened()) {
170-
newAcquired = true;
171-
}
172172

173-
return RewardItemResponseDTO.of(item.getItem(), newAcquired);
173+
// 2) Hidden 아이템을 받고 바텀시트가 출력되었는지 여부는 isOpened로 판별
174+
// 초기 상태는 false
175+
// 2-1) 히든 아이템의 isOpened가 true 라면 바텀시트가 1회 이상 출력된 것
176+
boolean isHiddenRead = item.isOpened();
177+
178+
return RewardItemResponseDTO.of(item.getItem(), newAcquired, isHiddenRead);
174179
}).collect(Collectors.toList())
175180
);
176181

0 commit comments

Comments
 (0)