@@ -132,11 +132,15 @@ private void acquireHiddenItems(User user) {
132132 List <UserItem > acquiredItems = userItemRepository .findAllByUser (user );
133133 if (acquiredItems .size () == MAX_REWARD ) {
134134 RewardItem hiddenItem = rewardItemRepository .findFirstByHiddenTrue ().orElseThrow ();
135+
136+ // 히든 아이템 획득 시 isOpened 값을 활용하여 isHiddenRead 값을 판별
137+ boolean isHiddenRead = false ;
138+
135139 UserItem newUserItem = UserItem .builder ()
136140 .user (user )
137141 .item (hiddenItem )
138142 .acquiredAt (LocalDateTime .now (ZoneId .of ("Asia/Seoul" )))
139- .isOpened (true )
143+ .isOpened (isHiddenRead )
140144 .build ();
141145 userItemRepository .save (newUserItem );
142146 }
@@ -165,21 +169,22 @@ public Map<RewardCategory, List<RewardItemResponseDTO>> getAcquiredItem(String u
165169 // 기본 아이템들을 DTO로 변환
166170 List <RewardItemResponseDTO > response = defaultItemIds .stream ()
167171 .map (id -> rewardItemRepository .findById (id )
168- .map (item -> RewardItemResponseDTO .of (item , false ))
172+ .map (item -> RewardItemResponseDTO .of (item , false , false ))
169173 .orElseThrow (() -> new RuntimeException ("Default item ID " + id + " not found" )))
170174 .collect (Collectors .toList ());
171175
172176 response .addAll (
173177 acquiredItems .stream ()
174178 .map (item -> {
175- // 3일 이내 획득한 Item
179+ // 1) 3일 이내 획득한 아이템은 newAcquiredFlag가 활성화
176180 boolean newAcquired = item .getAcquiredAt ().isAfter (threeDaysAgo );
177- // Hidden 아이템 처음 받았는지 여부
178- if (item .getItem ().isHidden () && !item .isOpened ()) {
179- newAcquired = true ;
180- }
181181
182- return RewardItemResponseDTO .of (item .getItem (), newAcquired );
182+ // 2) Hidden 아이템을 받고 바텀시트가 출력되었는지 여부는 isOpened로 판별
183+ // 초기 상태는 false
184+ // 2-1) 히든 아이템의 isOpened가 true 라면 바텀시트가 1회 이상 출력된 것
185+ boolean isHiddenRead = item .isOpened ();
186+
187+ return RewardItemResponseDTO .of (item .getItem (), newAcquired , isHiddenRead );
183188 }).collect (Collectors .toList ())
184189 );
185190
@@ -191,8 +196,7 @@ public Map<RewardCategory, List<RewardItemResponseDTO>> getAcquiredItem(String u
191196 public void updateHiddenRead (HiddenUpdateRequestDTO request ) {
192197 User user = userRepository .findByUserKey (request .getUserKey ()).orElseThrow (() -> new RuntimeException ("USER NOT FOUND" ));
193198
194- UserItem findItem = userItemRepository .findOneUnopenedHiddenItem (user , request .getYear (), request .getMonth ())
195- .orElseThrow (HiddenItemAlreadyOpenedException ::new );
199+ UserItem findItem = userItemRepository .findOneUnopenedHiddenItem (user ).orElseThrow (HiddenItemAlreadyOpenedException ::new );
196200
197201 findItem .setOpened (true );
198202
0 commit comments