diff --git a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemFacadeService.java b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemFacadeService.java index 2191dbf48..cd22ea3fa 100644 --- a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemFacadeService.java +++ b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemFacadeService.java @@ -190,7 +190,7 @@ public CoinCollectionRewardResponseDto collectCoinAndIssueReward(Long userId) { // DB에 코인 저장 Item coinCollect = itemQueryService.getBySku(Sku.COIN_COLLECT); int reward = (int) (coinCollect.getPrice().longValue()); - itemHistoryCommandService.purchaseItem(userId, coinCollect.getId()); + itemHistoryCommandService.createItemHistory(userId, coinCollect.getId()); // 출석 일자에 따른 랜덤 리워드 지급 Long coinCollectionCountInMonth = @@ -201,7 +201,7 @@ public CoinCollectionRewardResponseDto collectCoinAndIssueReward(Long userId) { Sku coinSku = itemPolicyService.getRewardSku(randomPercentage); Item coinReward = itemQueryService.getBySku(coinSku); - itemHistoryCommandService.purchaseItem(userId, coinReward.getId()); + itemHistoryCommandService.createItemHistory(userId, coinReward.getId()); reward += coinReward.getPrice(); } @@ -241,11 +241,12 @@ public void useItem(Long userId, Sku sku, ItemUseRequestDto data) { Item item = itemQueryService.getBySku(sku); List itemInInventory = itemHistoryQueryService.findUnusedItemsInUserInventory(user.getId(), item.getId()); - ItemHistory firstItem = itemPolicyService.verifyEmptyItems(itemInInventory); + ItemHistory oldestItemHistory = + itemPolicyService.verifyNotEmptyAndFindOldest(itemInInventory); ItemUsage itemUsage = getItemUsage(userId, item, data); eventPublisher.publishEvent(itemUsage); - firstItem.updateUsedAt(); + oldestItemHistory.updateUsedAt(); } /** @@ -298,7 +299,7 @@ public void purchaseItem(Long userId, Sku sku) { itemPolicyService.verifyIsAffordable(userCoin, price); // 아이템 구매 처리 - itemHistoryCommandService.purchaseItem(user.getId(), item.getId()); + itemHistoryCommandService.createItemHistory(user.getId(), item.getId()); LockUtil.lockRedisCoin(userId, () -> { // 코인 차감 diff --git a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemHistoryCommandService.java b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemHistoryCommandService.java index f2ab0a659..ef2856531 100644 --- a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemHistoryCommandService.java +++ b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemHistoryCommandService.java @@ -17,7 +17,7 @@ public class ItemHistoryCommandService { private final ItemHistoryRepository itemHistoryRepository; - public void purchaseItem(Long userId, Long itemId) { + public void createItemHistory(Long userId, Long itemId) { ItemHistory itemHistory = ItemHistory.of(userId, itemId, null); itemHistoryRepository.save(itemHistory); } diff --git a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemPolicyService.java b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemPolicyService.java index b2ceabb44..f27d4bf75 100644 --- a/backend/src/main/java/org/ftclub/cabinet/item/service/ItemPolicyService.java +++ b/backend/src/main/java/org/ftclub/cabinet/item/service/ItemPolicyService.java @@ -27,7 +27,7 @@ public void verifyIsAlreadyCollectedCoin(boolean isChecked) { } } - public ItemHistory verifyEmptyItems(List itemInInventory) { + public ItemHistory verifyNotEmptyAndFindOldest(List itemInInventory) { return itemInInventory.stream() .min(Comparator.comparing(ItemHistory::getPurchaseAt)) .orElseThrow(ExceptionStatus.ITEM_NOT_OWNED::asServiceException); diff --git a/backend/src/main/java/org/ftclub/cabinet/user/service/LentExtensionManager.java b/backend/src/main/java/org/ftclub/cabinet/user/service/LentExtensionManager.java index b6a3ec759..bd7a501da 100644 --- a/backend/src/main/java/org/ftclub/cabinet/user/service/LentExtensionManager.java +++ b/backend/src/main/java/org/ftclub/cabinet/user/service/LentExtensionManager.java @@ -44,7 +44,7 @@ public void issueLentExtension() { Item coinRewardItem = itemQueryService.getBySku(Sku.COIN_FULL_TIME); users.forEach(user -> { Long userId = user.getId(); - itemHistoryCommandService.purchaseItem(userId, coinRewardItem.getId()); + itemHistoryCommandService.createItemHistory(userId, coinRewardItem.getId()); LockUtil.lockRedisCoin(userId, () -> saveCoinChangeOnRedis(userId, coinRewardItem.getPrice())); });