金币记录 数据收集

This commit is contained in:
renhaoting 2025-12-24 17:12:21 +08:00
parent 4ab33f382c
commit 0e9eebd85a
12 changed files with 94 additions and 27 deletions

View File

@ -3,6 +3,7 @@ package com.gamedog.vididin
object VidiConst {
const val NEWBIE_GIFT_GOLD_NUM: Long = 100
/**
* Varous type for watching Ad

View File

@ -1,24 +1,28 @@
package com.gamedog.vididin.beans
import com.ama.core.architecture.util.AndroidUtil
import com.ama.core.architecture.util.DateUtil
import com.vididin.real.money.game.R
import kotlin.Int
const val RECORD_GOLD_PLUS_WATCH_VIDEO: Int = 1
const val RECORD_GOLD_PLUS_WATCH_VIDEO_BY_TIME_DURATION: Int = 1
const val RECORD_GOLD_PLUS_WATCH_REWARD_AD: Int = 2
const val RECORD_GOLD_PLUS_TASK_NEWBIE: Int = 3
const val RECORD_GOLD_PLUS_TASK_DAILY: Int = 3
const val RECORD_GOLD_PLUS_TASK_BOX: Int = 3
const val RECORD_GOLD_MINUS_CONVERT_2_CASH: Int = 4
const val RECORD_GOLD_PLUS_NEWBIE_GIFT: Int = 3
const val RECORD_GOLD_PLUS_TASK_ENABLE_NOTIFY: Int = 4
const val RECORD_GOLD_PLUS_TASK_FIRST_WITHDRAW: Int = 5
const val RECORD_GOLD_PLUS_TASK_JOIN_DISCORD: Int = 6
const val RECORD_GOLD_PLUS_TASK_SIGN: Int = 7
const val RECORD_GOLD_PLUS_TASK_DAILY_AD: Int = 8
const val RECORD_GOLD_PLUS_TASK_DAILY_VIDEO: Int = 9
const val RECORD_GOLD_MINUS_CONVERT_2_CASH: Int = 10
open class RecordGold {
var uuid: String = ""
var dateMs: Long = 0L
open class RecordGold(var recordType: Int = 0, var amountNum: Long = 0) {
var isSuccess: Boolean = false
var amountNum: Long = 0
var recordType: Int = 0
var dateMs: Long = DateUtil.getCurTimeMs()
var uuid: String = AndroidUtil.randomUUid()
}
class RecordGoldShow: RecordGold() {
@ -37,7 +41,7 @@ fun RecordGold.toShowBean(): RecordGoldShow {
this@apply.recordType = this@toShowBean.recordType
when (this@apply.recordType) {
RECORD_GOLD_PLUS_WATCH_VIDEO -> {
RECORD_GOLD_PLUS_WATCH_VIDEO_BY_TIME_DURATION -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
@ -49,19 +53,43 @@ fun RecordGold.toShowBean(): RecordGoldShow {
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_NEWBIE -> {
RECORD_GOLD_PLUS_NEWBIE_GIFT -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_DAILY -> {
RECORD_GOLD_PLUS_TASK_ENABLE_NOTIFY -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_BOX -> {
RECORD_GOLD_PLUS_TASK_FIRST_WITHDRAW -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_JOIN_DISCORD -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_SIGN -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_DAILY_AD -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad
}
RECORD_GOLD_PLUS_TASK_DAILY_VIDEO -> {
title = R.string.apply
description = R.string.apply
iconRes = R.mipmap.icon_ad

View File

@ -10,7 +10,9 @@ import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.beans.Account
import com.gamedog.vididin.beans.BankInfo
import com.gamedog.vididin.beans.RECORD_CASH_PLUS_GOLD_CONVERT
import com.gamedog.vididin.beans.RECORD_GOLD_MINUS_CONVERT_2_CASH
import com.gamedog.vididin.beans.RecordCash
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.manager.RecordsManager
object AccountManager {
@ -54,13 +56,14 @@ object AccountManager {
return mAccount.goldCount
}
fun adjustGold(adjustNum: Long): Boolean {
fun adjustGold(adjustNum: Long, recordBean: RecordGold): Boolean {
if (adjustNum < 0L && Math.abs(adjustNum) > getGold()) {
return false
}
mAccount.goldCount += adjustNum
saveAccountInfo()
NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Gold_Changed, null)
RecordsManager.instance().appendGoldRecord(recordBean)
return true
}
@ -131,7 +134,7 @@ object AccountManager {
if (couldCovertCashTotal > 0) {
val costGoldNum = couldCovertCashTotal * VidiConst.PER_01CASH_COST_GOLD_NUM
if (getGold() >= costGoldNum) {
adjustGold(-1L * costGoldNum.toInt())
adjustGold(-1L * costGoldNum.toInt(), RecordGold(RECORD_GOLD_MINUS_CONVERT_2_CASH, -1L * costGoldNum.toInt()))
val adjustCashNum = couldCovertCashTotal * 0.1F
adjustCash(adjustCashNum, RecordCash(RECORD_CASH_PLUS_GOLD_CONVERT, adjustCashNum.toDouble(), true))
AndroidUtil.showToast("Has convert $costGoldNum gold to $couldCovertCashTotal cash.")

View File

@ -12,6 +12,9 @@ import com.ama.core.architecture.util.ResUtil.dp
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.setOnClickBatch
import com.ama.core.architecture.widget.BindingDialog
import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_NEWBIE_GIFT
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.vididin.real.money.game.R
import com.vididin.real.money.game.databinding.DialogBeginnerGiftBinding
@ -48,7 +51,7 @@ class BeginnerGiftDialog(activity: Activity) : BindingDialog<DialogBeginnerGiftB
(mActivity as MainActivity).switchTab(1)
}
if (!SpUtil.instance().getBoolean(SpUtil.KEY_GUIDE_HAS_GOT_NEWBIE_GOLD)) {
AccountManager.adjustGold(100)
AccountManager.adjustGold(VidiConst.NEWBIE_GIFT_GOLD_NUM, RecordGold(RECORD_GOLD_PLUS_NEWBIE_GIFT, VidiConst.NEWBIE_GIFT_GOLD_NUM))
SpUtil.instance().putBoolean(SpUtil.KEY_GUIDE_HAS_GOT_NEWBIE_GOLD, true)
}

View File

@ -29,6 +29,9 @@ import com.ama.core.common.util.asSafe
import com.ama.core.common.widget.PopMenuIconView
import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_NEWBIE_GIFT
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_WATCH_VIDEO_BY_TIME_DURATION
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.WatchAdDialog
import com.gamedog.vididin.main.fragments.home.HomeFragmentStateAdapter
@ -186,7 +189,8 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
} else {
mTotalMs = 0L
binding?.dragIconView?.setProgress(mTotalMs * 100/ RewardConst.HOME_WATCH_DURATION)
AccountManager.adjustGold(RewardConst.HOME_WATCH_REWARD_NUM.toLong())
val goldNum = RewardConst.HOME_WATCH_REWARD_NUM.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_WATCH_VIDEO_BY_TIME_DURATION, goldNum))
binding?.dragIconView?.showRewardGoldAnim()
}
}

View File

@ -439,7 +439,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchVideoStatus().claimSubTaskReward(itemIndex)) {
if (TaskManager.instance().dailyWatchVideoStatus().claimSubTaskReward(itemIndex, false)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}
@ -456,7 +456,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
WatchAdDialog(requireActivity(), VidiConst.WATCH_AD_FOR_DAILY_WATCH_AD, null).show()
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchAdStatus().claimSubTaskReward(itemIndex)) {
if (TaskManager.instance().dailyWatchAdStatus().claimSubTaskReward(itemIndex, true)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}

View File

@ -5,6 +5,9 @@ import com.ama.core.architecture.util.FileUtil
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_WATCH_REWARD_AD
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_WATCH_VIDEO_BY_TIME_DURATION
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.BoxTaskRoot
import com.gamedog.vididin.main.fragments.task.Task
@ -16,6 +19,7 @@ import com.gamedog.vididin.manager.helpers.DailyWatchVideoTaskHelper
import com.gamedog.vididin.manager.helpers.NewbieEnableNotifyHelper
import com.gamedog.vididin.manager.helpers.NewbieFirstWithdrawHelper
import com.gamedog.vididin.manager.helpers.NewbieJoinDiscordHelper
import com.gamedog.vididin.youtubestatistic.RewardConst
import com.google.gson.GsonBuilder
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
@ -109,7 +113,8 @@ class TaskManager private constructor() {
}
VididinEvents.EVENT_AD_WATCHED_FOR_EARN_GOLD -> {
AccountManager.adjustGold(VidiConst.WATCH_AD_REWARD_GOLD.toLong())
val goldNum = VidiConst.WATCH_AD_REWARD_GOLD.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_WATCH_REWARD_AD, goldNum))
}
}
}

View File

@ -1,6 +1,9 @@
package com.gamedog.vididin.manager.helpers
import com.ama.core.architecture.util.DateUtil
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_DAILY_AD
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_DAILY_VIDEO
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.manager.taskbeans.BaseDailyTaskState
@ -17,12 +20,15 @@ abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T, T
abstract protected fun notifyEvents()
abstract protected fun generateTodayTask()
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
fun claimSubTaskReward(subTaskIndex: Int, isEarnGoldByAd: Boolean) : Boolean {
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
try {
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
if (subTask.state == STATE_FINISH) {
AccountManager.adjustGold(subTask.mRewardNum.toLong())
val goldNum = subTask.mRewardNum.toLong()
AccountManager.adjustGold(goldNum, RecordGold(
if (isEarnGoldByAd) RECORD_GOLD_PLUS_TASK_DAILY_AD else RECORD_GOLD_PLUS_TASK_DAILY_VIDEO, goldNum))
subTask.state = STATE_CLAIMED
saveState2Sp()
notifyEvents()

View File

@ -3,7 +3,11 @@ 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.VidiConst
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_SIGN
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_WATCH_REWARD_AD
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean
@ -58,7 +62,8 @@ class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean, Task>() {
daySignState.hasSigned = true
daySignState.hasWatchedAd = isByAd
saveState2Sp()
AccountManager.adjustGold(finalReward.toLong())
val goldNum = finalReward.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_TASK_SIGN, goldNum))
notifySignStateChanged(Pair(dayIndex, daySignState))
return true
}

View File

@ -4,6 +4,9 @@ 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.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_ENABLE_NOTIFY
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_SIGN
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify
@ -29,7 +32,8 @@ class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify, Task
fun claimReward() : Boolean {
if (!mStateBean.hasClaimReward) {
AccountManager.adjustGold(mStateBean.rewardGoldNum.toLong())
val goldNum = mStateBean.rewardGoldNum.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_TASK_ENABLE_NOTIFY, goldNum))
mStateBean.hasClaimReward = true
saveState2Sp()
notifyStateChangeEvent()

View File

@ -3,6 +3,9 @@ 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.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_ENABLE_NOTIFY
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_FIRST_WITHDRAW
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw
@ -27,7 +30,8 @@ class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw, Ta
fun claimReward(): Boolean {
if (!mStateBean.hasClaimReward) {
AccountManager.adjustGold(mStateBean.rewardGoldNum.toLong())
val goldNum = mStateBean.rewardGoldNum.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_TASK_FIRST_WITHDRAW, goldNum))
mStateBean.hasClaimReward = true
saveState2Sp()
notifyStateChangeEvent()

View File

@ -3,6 +3,9 @@ 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.VididinEvents
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_FIRST_WITHDRAW
import com.gamedog.vididin.beans.RECORD_GOLD_PLUS_TASK_JOIN_DISCORD
import com.gamedog.vididin.beans.RecordGold
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord
@ -27,7 +30,8 @@ class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord, Task>(
fun claimReward() : Boolean {
if (!mStateBean.hasClaimReward) {
AccountManager.adjustGold(mStateBean.rewardGoldNum.toLong())
val goldNum = mStateBean.rewardGoldNum.toLong()
AccountManager.adjustGold(goldNum, RecordGold(RECORD_GOLD_PLUS_TASK_JOIN_DISCORD, goldNum))
mStateBean.hasClaimReward = true
saveState2Sp()
notifyStateChangeEvent()