From ef8d084744833869633cb3ab13f191971706e4ff Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Tue, 2 Dec 2025 17:56:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=A7=86=E9=A2=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=AE=8C=E6=88=90=E5=90=8E=20=E9=87=91=E5=B8=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=BA=E4=B8=BB=E5=8A=A8=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vididin/main/fragments/TasksFragment.kt | 2 +- .../manager/helpers/BaseDailyTaskHelper.kt | 28 +++++--- .../vididin/manager/helpers/BaseTaskHelper.kt | 1 + .../manager/helpers/DailyWatchAdTaskHelper.kt | 21 +++--- .../helpers/DailyWatchVideoTaskHelper.kt | 67 ++++--------------- .../manager/taskbeans/BaseDailyTaskState.kt | 38 +++++++++++ .../manager/taskbeans/TaskStateWatchAd.kt | 34 +++------- .../manager/taskbeans/TaskStateWatchVideo.kt | 43 +++--------- 8 files changed, 98 insertions(+), 136 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/manager/taskbeans/BaseDailyTaskState.kt diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt index 60581bd..1bf818d 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt @@ -220,7 +220,7 @@ class TasksFragment : AppViewsFragment(), OnTab val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean() val subTaskStatusList = statusBean.getSubTaskRewardState() mDailyWatchAdViewList.forEachIndexed { index, view -> - view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state) + view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state) } } 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 e7daa1b..3ac5206 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 @@ -1,12 +1,17 @@ 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.manager.taskbeans.BaseDailyTaskState import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING +import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd -abstract class BaseDailyTaskHelper : BaseTaskHelper() { + + +abstract class BaseDailyTaskHelper : BaseTaskHelper() { abstract protected fun notifyEvents() @@ -30,7 +35,7 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper() { protected fun calculateNewState() { - val todayWatchedCount = mStateBean.getTodayWatchedAdCount() + val todayWatchedCount = mStateBean.getTodayWatchedCount() mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> val targetCount = subTaskState.mTargetAdCount @@ -44,16 +49,17 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper() { } } + protected fun generateTodayTask() { + mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) as T + mStateBean.initSubTaskRewardList(mTaskConfig.reward_details) + } - protected fun handleOneAdWatched(newAdWatchedNum: Int) { - mStateBean.run { - if (!isAllTaskFinish()) { - addWatchedCount(newAdWatchedNum) - calculateNewState() - saveState2Sp() - notifyEvents() - } - } + protected fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean { + return DateUtil.isToday(stateBean.todayMs) + } + + protected fun isTodayStatusBean(stateBean: TaskStateWatchVideo): Boolean { + return DateUtil.isToday(stateBean.todayMs) } } \ No newline at end of file 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 64f0034..5ef563f 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 @@ -3,6 +3,7 @@ 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 com.gamedog.vididin.manager.taskbeans.BaseTaskState import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext 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 56ccef6..5a4d987 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 @@ -1,13 +1,12 @@ package com.gamedog.vididin.manager.helpers -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.manager.taskbeans.TaskStateWatchAd -class DailyWatchAdTaskHelper : BaseDailyTaskHelper() { +class DailyWatchAdTaskHelper : BaseDailyTaskHelper() { override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD @@ -34,15 +33,15 @@ class DailyWatchAdTaskHelper : BaseDailyTaskHelper() { NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null) } - - private fun generateTodayTask() { - mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) - mStateBean.initSubTaskRewardList(mTaskConfig.reward_details) + private fun handleOneAdWatched(newAdWatchedNum: Int) { + mStateBean.run { + if (!isAllTaskFinish()) { + addWatchedCount(newAdWatchedNum) + calculateNewState() + saveState2Sp() + notifyEvents() + } + } } - private fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean { - return DateUtil.isToday(stateBean.todayMs) - } - - } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt index 2ef0251..ea0a20d 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt @@ -1,17 +1,13 @@ package com.gamedog.vididin.manager.helpers -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.core.login.login.AccountManager -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING -import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean +import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo -class DailyWatchVideoTaskHelper : BaseTaskHelper() { +class DailyWatchVideoTaskHelper : BaseDailyTaskHelper() { override val mSpKey = SpUtil.KEY_DAILY_WATCH_VIDEO @@ -24,7 +20,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { } override fun loadTaskFromSp() { - val spStateBean = SpUtil.instance().getObject(mSpKey) + val spStateBean = SpUtil.instance().getObject(mSpKey) if (spStateBean == null || !isTodayStatusBean(spStateBean)) { generateTodayTask() saveState2Sp() @@ -32,23 +28,22 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { mStateBean = spStateBean notifyEvents() } + + /*val spStateBean = SpUtil.instance().getObject(mSpKey) + if (spStateBean == null || !isTodayStatusBean(spStateBean)) { + generateTodayTask() + saveState2Sp() + } else { + mStateBean = spStateBean + notifyEvents() + }*/ } - private fun notifyEvents() { + override fun notifyEvents() { NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null) } - private fun generateTodayTask() { - mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs()) - mStateBean.initSubTaskRewardList(mTaskConfig.reward_details) - } - - private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean { - return DateUtil.isToday(stateBean.todayMs) - } - - private fun handleOneVideoWatched(dataPair: Pair) { mStateBean.run { if (!isAllTaskFinish()) { @@ -62,38 +57,4 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { } - fun calculateNewState() { - val todayWatchedCount = mStateBean.getTodayWatchedCount() - - mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> - val targetCount = subTaskState.mTargetVideoCount - when(subTaskState.state) { - STATE_ONGOING -> { - if (todayWatchedCount >= targetCount) { - subTaskState.state = STATE_FINISH - } - } - } - } - } - - fun claimSubTaskReward(subTaskIndex: Int) : Boolean { - if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) { - try { - val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex] - if (subTask.state == STATE_FINISH) { - AccountManager.addGold(subTask.mRewardNum) - subTask.state = STATE_CLAIMED - saveState2Sp() - notifyEvents() - return true - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - return false - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/BaseDailyTaskState.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/BaseDailyTaskState.kt new file mode 100644 index 0000000..cf44945 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/BaseDailyTaskState.kt @@ -0,0 +1,38 @@ +package com.gamedog.vididin.manager.taskbeans + +import com.gamedog.vididin.main.fragments.task.RewardDetail +import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING +import kotlinx.serialization.Serializable +import kotlin.collections.forEach + + +@Serializable +abstract class BaseDailyTaskState : BaseTaskState() { + protected val mSubTaskRewardState: MutableList = mutableListOf() + + abstract fun getTodayWatchedCount(): Int + abstract fun addWatchedCount(newWatchedNum: Int) + abstract fun addWatchedVideoInfo(dataPair: Pair): Boolean + + + fun getSubTaskRewardState(): List { + return mSubTaskRewardState + } + + fun isAllTaskFinish(): Boolean { + return mSubTaskRewardState.all { it.state >= STATE_CLAIMED } + } + + fun initSubTaskRewardList(subTasks: List) { + mSubTaskRewardState.clear() + + subTasks.forEach { + mSubTaskRewardState.add(SubDailyTaskBean(it.value, it.target_count, STATE_ONGOING)) + } + } +} + +data class SubDailyTaskBean( + val mRewardNum: Int, + val mTargetAdCount: Int, + var state: Int = STATE_ONGOING,) \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt index 785b470..bb60e18 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt @@ -1,53 +1,37 @@ package com.gamedog.vididin.manager.taskbeans -import com.gamedog.vididin.main.fragments.task.RewardDetail -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING -import kotlin.collections.forEach data class TaskStateWatchAd( var todayMs: Long = 0, -): BaseTaskState() { - +): BaseDailyTaskState() { private var mWatchAdCount: Int = 0 - private val mSubTaskRewardState: MutableList = mutableListOf() - fun addWatchedCount(newWatchedNum: Int) { + + override fun addWatchedCount(newWatchedNum: Int) { if (newWatchedNum > 0) { mWatchAdCount += newWatchedNum } } - fun isAllTaskFinish(): Boolean { - return mSubTaskRewardState.all { it.state >= STATE_CLAIMED } + override fun addWatchedVideoInfo(dataPair: Pair): Boolean { + return false } - fun initSubTaskRewardList(subTasks: List) { - mSubTaskRewardState.clear() - - subTasks.forEach { - mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, STATE_ONGOING)) - } - } - - fun getTodayWatchedAdCount(): Int { + override fun getTodayWatchedCount(): Int { return mWatchAdCount } - fun getSubTaskRewardState(): List { - return mSubTaskRewardState - } + + } -data class SubAdTaskBean( - val mRewardNum: Int, - val mTargetAdCount: Int, - var state: Int = STATE_ONGOING,) + diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt index 4b56f3b..8494e4e 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt @@ -1,24 +1,16 @@ package com.gamedog.vididin.manager.taskbeans -import com.gamedog.vididin.main.fragments.task.RewardDetail -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING + import java.util.concurrent.ConcurrentHashMap -data class DailyStateWatchVideoBean( +data class TaskStateWatchVideo( var todayMs: Long = 0, -): BaseTaskState() { +): BaseDailyTaskState() { private val mWatchedMap = ConcurrentHashMap() - private val mSubTaskRewardState: MutableList = mutableListOf() - - fun clearDatas() { - mWatchedMap.clear() - todayMs = 0 - } - - fun addWatchedVideoInfo(dataPair: Pair): Boolean { + override fun addWatchedVideoInfo(dataPair: Pair): Boolean { if (!mWatchedMap.contains(dataPair.first)) { mWatchedMap.put(dataPair.first, dataPair.second) return true @@ -26,33 +18,14 @@ data class DailyStateWatchVideoBean( return false } + override fun addWatchedCount(newWatchedNum: Int) { - fun getTodayWatchedCount(): Int { + } + + override fun getTodayWatchedCount(): Int { return mWatchedMap.size } - fun getSubTaskRewardState(): List { - return mSubTaskRewardState - } - - fun isAllTaskFinish(): Boolean { - return mSubTaskRewardState.all { it.state >= STATE_CLAIMED } - } - - fun initSubTaskRewardList(subTasks: List) { - mSubTaskRewardState.clear() - - subTasks.forEach { - mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, STATE_ONGOING)) - } - } - } - -data class SubTaskBean( - val mRewardNum: Int, - val mTargetVideoCount: Int, - var state: Int = STATE_ONGOING,) -