From 77d93b0211182fd73e0d3a8743b48eaf79ec01f5 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 3 Dec 2025 15:11:03 +0800 Subject: [PATCH] =?UTF-8?q?sp=E5=AE=9D=E7=AE=B1statusbean=20=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E5=8F=8A=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gamedog/vididin/manager/TaskManager.kt | 9 +++-- .../manager/helpers/BaseDailyTaskHelper.kt | 3 +- .../vididin/manager/helpers/BaseTaskHelper.kt | 7 ++-- .../vididin/manager/helpers/BoxTaskHelper.kt | 35 +++++++++++++++---- .../manager/helpers/DailySignTaskHelper.kt | 3 +- .../manager/helpers/DailyWatchAdTaskHelper.kt | 1 + .../helpers/NewbieEnableNotifyHelper.kt | 3 +- .../helpers/NewbieFirstWithdrawHelper.kt | 3 +- .../helpers/NewbieJoinDiscordHelper.kt | 3 +- .../manager/taskbeans/TaskStateBoxRoot.kt | 8 ++++- .../ama/core/architecture/util/DateUtil.kt | 17 +++++++++ 11 files changed, 73 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index a07342f..fef3f7b 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -6,6 +6,7 @@ import com.ama.core.architecture.util.eventbus.NotifyMan import com.gamedog.vididin.VidiConst import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.core.login.login.AccountManager +import com.gamedog.vididin.main.fragments.task.BoxTaskRoot import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.main.fragments.task.TaskBean import com.gamedog.vididin.manager.helpers.BoxTaskHelper @@ -149,8 +150,7 @@ class TaskManager private constructor() { mNewbieJoinDiscordHelper.setConfigDatas(getNewbieJoinDiscordTask()!!) mNewbieEnableNotifyHelper.setConfigDatas(getNewbieEnableNotifyTask()!!) mNewbieFirstWithdrawHelper.setConfigDatas(getNewbieFirstWithdrawTask()!!) - - mBoxHelper.setConfigDatas(getDailyVideoTask()!!) + mBoxHelper.setConfigDatas(getBoxTaskConfig()!!) } fun onDateChanged() { @@ -228,7 +228,10 @@ class TaskManager private constructor() { } - + // 宝箱任务 + fun getBoxTaskConfig(): BoxTaskRoot? { + return mTaskConfig?.task_module_config?.box_task + } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt index b2ea59a..66772e2 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt @@ -2,6 +2,7 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.DateUtil import com.gamedog.vididin.core.login.login.AccountManager +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.BaseDailyTaskState import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH @@ -11,7 +12,7 @@ import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd -abstract class BaseDailyTaskHelper : BaseTaskHelper() { +abstract class BaseDailyTaskHelper : BaseTaskHelper() { abstract protected fun notifyEvents() abstract protected fun generateTodayTask() diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt index f680ae7..6885195 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt @@ -2,19 +2,18 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.eventbus.NotifyMan -import com.gamedog.vididin.main.fragments.task.Task import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -abstract class BaseTaskHelper { +abstract class BaseTaskHelper { abstract val mSpKey: String protected lateinit var mStateBean: T - protected lateinit var mTaskConfig: Task + protected lateinit var mTaskConfig: C private var mEventCallback: NotifyMan.ICallback? = null abstract fun loadTaskFromSp() - suspend fun setConfigDatas(taskConfig: Task) { + suspend fun setConfigDatas(taskConfig: C) { mTaskConfig = taskConfig return withContext(Dispatchers.IO) { diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt index f0a8447..e736bcc 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt @@ -1,25 +1,48 @@ package com.gamedog.vididin.manager.helpers +import com.ama.core.architecture.util.DateUtil import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.main.fragments.task.BoxTaskRoot +import com.gamedog.vididin.manager.taskbeans.TaskStateBox import com.gamedog.vididin.manager.taskbeans.TaskStateBoxRoot +import com.gamedog.vididin.manager.taskbeans.TaskStateBoxSub -class BoxTaskHelper: BaseTaskHelper() { +class BoxTaskHelper: BaseTaskHelper() { override val mSpKey = SpUtil.KEY_TASK_BOX override fun loadTaskFromSp() { val taskStateBeanInSp = SpUtil.instance().getObject(mSpKey) - if (taskStateBeanInSp == null) { - //mStateBean = generateStateBeanFromConfig() - //saveState2Sp() + if (taskStateBeanInSp == null || isBoxRootTaskExpired(taskStateBeanInSp)) { + mStateBean = generateStateBeanFromConfig() + saveState2Sp() } else { mStateBean = taskStateBeanInSp } } - private fun generateStateBeanFromConfig(): TaskStateBoxRoot? { - return null + private fun generateStateBeanFromConfig(): TaskStateBoxRoot { + val boxStateList = mutableListOf() + mTaskConfig.chests.forEachIndexed { index, task -> + val boxSubTaskStateList = mutableListOf() + task.tasks.forEachIndexed { index, task -> + boxSubTaskStateList.add(TaskStateBoxSub(task.task_id, + task.task_name, task.required_count, task.task_type)) + } + + boxStateList.add(TaskStateBox(task.chest_id, task.chest_name, task.duration_days, + task.reward_type, task.reward_value, task.is_one_time, task.status, boxSubTaskStateList)) + } + + return TaskStateBoxRoot(DateUtil.getTodayStartTimeMs(), boxStateList) } + private fun isBoxRootTaskExpired(taskStateBoxRoot: TaskStateBoxRoot): Boolean { + var totalDurationDays = 0 + taskStateBoxRoot.tasks.forEach { + totalDurationDays += it.duration_days + } + return DateUtil.isPeriodExpired(taskStateBoxRoot.startMs, totalDurationDays) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt index 7970cba..11e8c82 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt @@ -5,11 +5,12 @@ import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.eventbus.NotifyMan import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.core.login.login.AccountManager +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean -class DailySignTaskHelper : BaseTaskHelper() { +class DailySignTaskHelper : BaseTaskHelper() { private var mCurDayIndexDailySign: Int = 0 override val mSpKey = SpUtil.KEY_TASK_BEAN diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt index 5ef9a91..8cb1263 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt @@ -4,6 +4,7 @@ import com.ama.core.architecture.util.DateUtil import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.eventbus.NotifyMan import com.gamedog.vididin.VididinEvents +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt index 0c99221..fc3a808 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt @@ -1,9 +1,10 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify -class NewbieEnableNotifyHelper: BaseTaskHelper() { +class NewbieEnableNotifyHelper: BaseTaskHelper() { override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt index 7f8708a..dc881ef 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt @@ -1,9 +1,10 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw -class NewbieFirstWithdrawHelper: BaseTaskHelper() { +class NewbieFirstWithdrawHelper: BaseTaskHelper() { override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt index 99c965b..2eeba9c 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt @@ -1,9 +1,10 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord -class NewbieJoinDiscordHelper: BaseTaskHelper() { +class NewbieJoinDiscordHelper: BaseTaskHelper() { override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt index 2b97292..0c8fc1e 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt @@ -18,7 +18,10 @@ data class TaskStateBox( val reward_value: Float, val is_one_time: Boolean, val status: String, - val tasks: List + val tasks: List, + + // new added + val hasClaimedReward: Boolean = false, ): Serializable data class TaskStateBoxSub( @@ -26,6 +29,9 @@ data class TaskStateBoxSub( val task_name: String, val required_count: Int, val task_type: Int, // This added by self for decide which task should be execute, detail see: #TaskManager.companion + + // new added + val finishedNum: Int = 0, ): Serializable diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt index 66fc6b7..ef59fce 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt @@ -67,6 +67,11 @@ class DateUtil private constructor() { return currentTime - targetTimestamp > periodMillis } + fun isPeriodExpired(startTimeMs: Long, dayNum: Int): Boolean { + val periodMillis = dayNum * 24 * 3600000 + return startTimeMs + periodMillis < getCurTimeMs() + } + /** * 从起始时间到现在已经过去多少天 */ @@ -174,6 +179,18 @@ class DateUtil private constructor() { return System.currentTimeMillis() } + fun getTodayStartTimeMs(): Long { + val calendar = Calendar.getInstance().apply { + set(Calendar.HOUR_OF_DAY, 0) + set(Calendar.MINUTE, 0) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + } + return calendar.timeInMillis + } + + + fun getPassedDayNum(periodStartMs: Long, currentMs: Long): Int { val utcTimeZone = TimeZone.getTimeZone("UTC") // 使用UTC时区