VidiDin-Android/app/src/main/java/com/gamedog/vididin/login/AccountManager.kt

65 lines
1.8 KiB
Kotlin
Raw Normal View History

2025-11-25 10:23:37 +00:00
package com.gamedog.vididin.core.login.login
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.DeviceUtil
import com.ama.core.architecture.util.SpUtil
2025-11-27 06:43:33 +00:00
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents
2025-11-25 10:23:37 +00:00
import com.gamedog.vididin.beans.Account
import com.gamedog.vididin.beans.BankInfo
2025-11-25 10:23:37 +00:00
object AccountManager {
private val mAccount: Account? by lazy {
var account = SpUtil.instance().getObject<Account>(SpUtil.KEY_ACCOUNT)
if (account == null) {
val deviceUUId = DeviceUtil.generateDeviceId()
account = Account(accountId = "user_$deviceUUId", deviceUUId=deviceUUId, createdAt = DateUtil.getCurTimeMs())
account.let {
SpUtil.instance().putObject(SpUtil.KEY_ACCOUNT, account)
}
}
account
}
private fun saveAccountInfo() {
SpUtil.instance().putObject(SpUtil.KEY_ACCOUNT, mAccount)
}
2025-11-25 10:23:37 +00:00
fun getAccount() : Account? {
return mAccount
}
2025-11-27 06:43:33 +00:00
fun getGold(): Long {
return mAccount?.goldCount ?: 0L
}
fun getCash(): Float {
return mAccount?.cashCount ?: 0F
}
fun addGold(newGold: Int) {
mAccount?.goldCount += newGold
saveAccountInfo()
2025-11-27 06:43:33 +00:00
NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Gold_Changed, null)
}
fun addCash(newCash: Float) {
mAccount?.cashCount += newCash
saveAccountInfo()
2025-11-27 06:43:33 +00:00
NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Cash_Changed, null)
}
2025-11-25 10:23:37 +00:00
fun getBankInfo(): BankInfo? {
return mAccount?.bankInfo
}
fun hasValidBankInfo(): Boolean {
val backInfo = getBankInfo()
return !backInfo?.bankName.isNullOrEmpty() && !backInfo.bankAccount.isNullOrEmpty()
}
2025-11-25 10:23:37 +00:00
}