保存最新每日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.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
@ -15,7 +16,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
init {
registerEvents( { eventData->
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
handleVideoWatched(dataPair)
handleOneVideoWatched(dataPair)
}, VididinEvents.Event_Finish_One_Video)
}
@ -31,27 +32,43 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
}
private fun notifyEvents() {
// TODO check read need info
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L))
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null)
}
private fun generateTodayTask() {
mStateBean.clearDatas()
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
}
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 {
addWatchedVideoInfo(dataPair)
if (!isAllTaskFinish()) {
if (addWatchedVideoInfo(dataPair)) {
checkSubTaskFinishState()
saveState2Sp()
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
import com.gamedog.vididin.main.fragments.task.RewardDetail
import java.io.Serializable
import java.util.concurrent.ConcurrentHashMap
data class DailyStateWatchVideoBean(
var todayStartMs: Long = 0,
var todayMs: Long = 0,
): Serializable {
private val mWatchedMap = ConcurrentHashMap<String, Long>()
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
fun clearDatas() {
mWatchedMap.clear()
todayStartMs = 0
todayMs = 0
}
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
@ -30,8 +31,28 @@ data class DailyStateWatchVideoBean(
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,)