金币转现金

This commit is contained in:
renhaoting 2025-12-01 19:26:14 +08:00
parent da56a8cb42
commit 0b0805d6bc
5 changed files with 59 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package com.gamedog.vididin
object VidiConst {
const val URL_DISCORD: String = "https://www.baidu.com"
/**
@ -21,6 +22,8 @@ object VidiConst {
const val GOLD_IN_CONFIG: String = "金币"
const val PER_CASH_COST_GOLD_NUM = 1000

View File

@ -6,7 +6,9 @@ data class Account(
val deviceUUId: String,
val token: String="",
val createdAt: Long,
@Volatile
var goldCount: Long = 0L,
@Volatile
var cashCount: Float = 0F,
var bankInfo: BankInfo? = null,
)

View File

@ -1,16 +1,23 @@
package com.gamedog.vididin.core.login.login
import com.ama.core.architecture.util.AndroidUtil
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.DeviceUtil
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.Account
import com.gamedog.vididin.beans.BankInfo
import com.gamedog.vididin.main.fragments.task.TaskBean
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
object AccountManager {
private val mutex = Mutex()
private val mAccount: Account? by lazy {
var account = SpUtil.instance().getObject<Account>(SpUtil.KEY_ACCOUNT)
if (account == null) {
@ -71,5 +78,30 @@ object AccountManager {
VididinEvents.Event_Account_Bank_Info_Changed, NotifyMan.NotifyData(bankAccount))
}
@Synchronized
fun convertGold2Cash(): Boolean {
try {
val couldCovertCashTotal = mAccount?.goldCount?.div(VidiConst.PER_CASH_COST_GOLD_NUM) ?: 0L
if (couldCovertCashTotal > 0) {
val costGoldNum = couldCovertCashTotal * VidiConst.PER_CASH_COST_GOLD_NUM
mAccount?.goldCount?.let {
if (it > costGoldNum) {
addGold(-1 * costGoldNum.toInt())
addCash(couldCovertCashTotal.toFloat())
AndroidUtil.showToast("Has convert $costGoldNum gold to $couldCovertCashTotal cash.")
return true
}
}
} else {
AndroidUtil.showToast("You don't have enough gold.")
}
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
}

View File

@ -36,6 +36,7 @@ class WatchVideoDialog(context: Activity, private val mTaskType: Int, private va
private fun gotoWatchVideo() {
Router.WatchAd.startActivity(mActivity, mTaskType, mTaskDataJson)
dismiss()
}

View File

@ -1,6 +1,10 @@
package com.gamedog.vididin.manager
import com.ama.core.architecture.util.FileUtil
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.main.fragments.task.TaskBean
import com.gamedog.vididin.manager.helpers.DailyBoxHelper
@ -61,6 +65,7 @@ class TaskManager private constructor() {
init {
loadTaskConfigAsync()
registerEvents()
// TODO - remove test code
if (true) {
@ -68,6 +73,22 @@ class TaskManager private constructor() {
}
}
private fun registerEvents() {
NotifyMan.instance().register(object : NotifyMan.ICallback(true) {
override fun onEvent(data: NotifyMan.NotifyData<*>?) {
when (data?.mEventType) {
VididinEvents.Event_AD_TASK_TYPE_Convert_Gold_2_Cash -> {
AccountManager.convertGold2Cash()
}
VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_For_Gold -> {
// TODO - add gold for user
}
}
}
}, VididinEvents.Event_AD_TASK_TYPE_Convert_Gold_2_Cash, VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_For_Gold)
}
suspend fun getTaskConfig(): TaskBean? = mutex.withLock {
if (!initialized) {