保存最新每日watch状态

This commit is contained in:
renhaoting 2025-12-01 18:09:19 +08:00
parent dc7ff87e33
commit a063466f15
2 changed files with 49 additions and 11 deletions

View File

@ -4,6 +4,7 @@ import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.eventbus.NotifyMan import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
@ -15,7 +16,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
init { init {
registerEvents( { eventData-> registerEvents( { eventData->
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long> val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
handleVideoWatched(dataPair) handleOneVideoWatched(dataPair)
}, VididinEvents.Event_Finish_One_Video) }, VididinEvents.Event_Finish_One_Video)
} }
@ -31,27 +32,43 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
} }
private fun notifyEvents() { private fun notifyEvents() {
// TODO check read need info NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null)
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L))
} }
private fun generateTodayTask() { private fun generateTodayTask() {
mStateBean.clearDatas()
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs()) mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
} }
private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean { private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean {
return DateUtil.isToday(stateBean.todayStartMs) return DateUtil.isToday(stateBean.todayMs)
} }
private fun handleVideoWatched(dataPair: Pair<String, Long>) { private fun handleOneVideoWatched(dataPair: Pair<String, Long>) {
mStateBean.run { mStateBean.run {
addWatchedVideoInfo(dataPair) if (!isAllTaskFinish()) {
if (addWatchedVideoInfo(dataPair)) {
checkSubTaskFinishState()
saveState2Sp()
notifyEvents() notifyEvents()
} }
} }
}
}
fun checkSubTaskFinishState() {
val todayWatchedCount = mStateBean.getTodayWatchedCount()
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetVideoCount) {
AccountManager.addGold(subTaskState.mRewardNum)
subTaskState.isFinish = true
}
}
}
} }

View File

@ -1,20 +1,21 @@
package com.gamedog.vididin.manager.taskbeans package com.gamedog.vididin.manager.taskbeans
import com.gamedog.vididin.main.fragments.task.RewardDetail
import java.io.Serializable import java.io.Serializable
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
data class DailyStateWatchVideoBean( data class DailyStateWatchVideoBean(
var todayStartMs: Long = 0, var todayMs: Long = 0,
): Serializable { ): Serializable {
private val mWatchedMap = ConcurrentHashMap<String, Long>() private val mWatchedMap = ConcurrentHashMap<String, Long>()
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
fun clearDatas() { fun clearDatas() {
mWatchedMap.clear() mWatchedMap.clear()
todayStartMs = 0 todayMs = 0
} }
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean { fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
@ -30,8 +31,28 @@ data class DailyStateWatchVideoBean(
return mWatchedMap.size return mWatchedMap.size
} }
fun getSubTaskRewardState(): List<SubTaskBean> {
return mSubTaskRewardState
}
fun isAllTaskFinish(): Boolean {
return mSubTaskRewardState.all { it.isFinish }
}
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
mSubTaskRewardState.clear()
subTasks.forEach {
mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, false))
}
}
} }
data class SubTaskBean(
val mRewardNum: Int,
val mTargetVideoCount: Int,
var isFinish: Boolean = false,)