From 0421d84bd62d0e47d2aab490e08aad6cd72c4466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Tue, 23 Jul 2024 12:49:49 +0900 Subject: [PATCH] =?UTF-8?q?PayReward=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/kidshift/data/RewardData.java | 2 ++ .../kidshift/data/impl/RewardDataImpl.java | 33 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/RewardData.java b/data/src/main/java/one/nem/kidshift/data/RewardData.java index cfb291d..82a5593 100644 --- a/data/src/main/java/one/nem/kidshift/data/RewardData.java +++ b/data/src/main/java/one/nem/kidshift/data/RewardData.java @@ -16,5 +16,7 @@ public interface RewardData { CompletableFuture> getRewardHistoryList(String childId); + CompletableFuture payReward(String historyId); + CompletableFuture payReward(List historyIds); } diff --git a/data/src/main/java/one/nem/kidshift/data/impl/RewardDataImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/RewardDataImpl.java index 067f442..aa4a221 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/RewardDataImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/RewardDataImpl.java @@ -10,11 +10,13 @@ import one.nem.kidshift.data.ChildData; import one.nem.kidshift.data.KSActions; import one.nem.kidshift.data.RewardData; import one.nem.kidshift.data.UserSettings; +import one.nem.kidshift.data.retrofit.KidShiftApiService; import one.nem.kidshift.data.room.utils.CacheWrapper; import one.nem.kidshift.model.ChildModel; import one.nem.kidshift.model.HistoryModel; import one.nem.kidshift.utils.KSLogger; import one.nem.kidshift.utils.factory.KSLoggerFactory; +import retrofit2.Call; public class RewardDataImpl implements RewardData { @@ -23,14 +25,15 @@ public class RewardDataImpl implements RewardData { private final CacheWrapper cacheWrapper; private final KSLogger logger; private final ChildData childData; - + private final KidShiftApiService kidShiftApiService; @Inject - public RewardDataImpl(KSLoggerFactory ksLoggerFactory, CacheWrapper cacheWrapper, UserSettings userSettings, KSActions ksActions, ChildData childData) { + public RewardDataImpl(KSLoggerFactory ksLoggerFactory, CacheWrapper cacheWrapper, UserSettings userSettings, KSActions ksActions, ChildData childData, KidShiftApiService kidShiftApiService) { this.userSettings = userSettings; this.ksActions = ksActions; this.cacheWrapper = cacheWrapper; this.childData = childData; + this.kidShiftApiService = kidShiftApiService; this.logger = ksLoggerFactory.create("RewardDataImpl"); } @@ -53,4 +56,30 @@ public class RewardDataImpl implements RewardData { public CompletableFuture> getRewardHistoryList(String childId) { // TODO: localCacheを使う return CompletableFuture.supplyAsync(() -> ksActions.syncHistory(childId).join()); } + + @Override + public CompletableFuture payReward(String historyId) { + return CompletableFuture.runAsync(() -> { + Call call = kidShiftApiService.payHistory(historyId, true); + try { + call.execute(); + } catch (Exception e) { + logger.error("Failed to pay reward : " + e.getMessage()); + } + }); + } + + @Override + public CompletableFuture payReward(List historyIds) { + return CompletableFuture.runAsync(() -> { + historyIds.forEach(historyId -> { // TODO: API側でリストに対応する + Call call = kidShiftApiService.payHistory(historyId, true); + try { + call.execute(); + } catch (Exception e) { + logger.error("Failed to pay reward : " + e.getMessage()); + } + }); + }); + } }