diff --git a/app/src/main/java/com/gamedog/vididin/beans/Account.kt b/app/src/main/java/com/gamedog/vididin/beans/Account.kt index 2498caf..b00b6e5 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/Account.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/Account.kt @@ -15,7 +15,9 @@ data class Account( var diamondCount: Int = 0, var bankInfo: BankInfo? = null, val zeroBuyServerSecret: String = "", - ) + ) { + +} data class BankInfo( diff --git a/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt index 2cf3cd1..72d86a7 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt @@ -17,7 +17,7 @@ open class RecordGold { var uuid: String = "" var dateMs: Long = 0L var isSuccess: Boolean = false - var amountNum: Int = 0 + var amountNum: Long = 0 var recordType: Int = 0 } diff --git a/app/src/main/java/com/gamedog/vididin/features/withdraw/dialogs/WithdrawInfoConfirmDialog.kt b/app/src/main/java/com/gamedog/vididin/features/withdraw/dialogs/WithdrawInfoConfirmDialog.kt index 8dcff1c..a30b5f9 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdraw/dialogs/WithdrawInfoConfirmDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdraw/dialogs/WithdrawInfoConfirmDialog.kt @@ -39,13 +39,11 @@ class WithdrawInfoConfirmDialog(context: Activity, private val onConfirmed: (cas } tvActionApply -> { - AccountManager.getAccount()?.cashCount?.let { - if (it < mWithdrawCashNum) { - AndroidUtil.showToast(R.string.not_enough_cash) - } else { - //WithdrawWatchAdDialog(mActivity, mWithdrawCashNum).show() - onConfirmed.invoke(mWithdrawCashNum) - } + if (AccountManager.getCash() < mWithdrawCashNum) { + AndroidUtil.showToast(R.string.not_enough_cash) + } else { + //WithdrawWatchAdDialog(mActivity, mWithdrawCashNum).show() + onConfirmed.invoke(mWithdrawCashNum) } dismiss() diff --git a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt index fb8deef..96d379e 100644 --- a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt @@ -108,7 +108,7 @@ class ZeroBuyActivity : AppViewsEmptyViewModelActivity() { } private fun updateUIDiamondNum() { - binding.tvZeroGoldNum.text = AccountManager.getAccount()?.diamondCount.toString() + binding.tvZeroGoldNum.text = AccountManager.getDiamond().toString() } override fun ViewBinding.initObservers() { diff --git a/app/src/main/java/com/gamedog/vididin/login/AccountManager.kt b/app/src/main/java/com/gamedog/vididin/login/AccountManager.kt index 08880a8..c1463ef 100644 --- a/app/src/main/java/com/gamedog/vididin/login/AccountManager.kt +++ b/app/src/main/java/com/gamedog/vididin/login/AccountManager.kt @@ -9,19 +9,15 @@ import com.gamedog.vididin.VidiConst import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.beans.Account import com.gamedog.vididin.beans.BankInfo -import kotlinx.coroutines.sync.Mutex - object AccountManager { - private val mutex = Mutex() - init { NotifyMan.instance().register(object: NotifyMan.ICallback(true) { override fun onEvent(data: NotifyMan.NotifyData<*>?) { when (data?.mEventType) { VididinEvents.EVENT_AD_WATCHED_FOR_ZEROBUY_EARN_DIAMOND -> { - addDiamond(VidiConst.DIAMOND_NUM_FOR_ONE_AD) + adjustDiamond(VidiConst.DIAMOND_NUM_FOR_ONE_AD) } } } @@ -29,7 +25,7 @@ object AccountManager { }, VididinEvents.EVENT_AD_WATCHED_FOR_ZEROBUY_EARN_DIAMOND) } - private val mAccount: Account? by lazy { + private val mAccount: Account by lazy { var account = SpUtil.instance().getObject(SpUtil.KEY_ACCOUNT) if (account == null) { val deviceUUId = DeviceUtil.generateDeviceId() @@ -45,46 +41,60 @@ object AccountManager { SpUtil.instance().putObject(SpUtil.KEY_ACCOUNT, mAccount) } - fun getAccount() : Account? { + + //------------------------- 3个数值相关属性 增减 start --------------------------// + fun getAccount() : Account { return mAccount } fun getGold(): Long { - return mAccount?.goldCount ?: 0L + return mAccount.goldCount } - fun getCash(): Float { - return mAccount?.cashCount ?: 0F - } - - @Synchronized - fun addGold(newGold: Int) { - mAccount?.goldCount += newGold + fun adjustGold(adjustNum: Long): Boolean { + if (adjustNum < 0L && Math.abs(adjustNum) > getGold()) { + return false + } + mAccount.goldCount += adjustNum saveAccountInfo() NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Gold_Changed, null) + return true + } + + + fun getCash(): Float { + return mAccount.cashCount } @Synchronized - private fun addDiamond(diamondNum: Int) { - mAccount?.diamondCount += diamondNum + fun adjustCash(adjustNum: Float): Boolean { + if (adjustNum < 0L && Math.abs(adjustNum) > getGold()) { + return false + } + mAccount.cashCount += adjustNum + saveAccountInfo() + NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Cash_Changed, null) + return true + } + + fun getDiamond(): Int { + return mAccount.diamondCount + } + + @Synchronized + fun adjustDiamond(adjustNum: Int): Boolean { + if (adjustNum < 0L && Math.abs(adjustNum) > getGold()) { + return false + } + mAccount.diamondCount += adjustNum saveAccountInfo() NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Diamond_Changed, null) + return true } - @Synchronized - fun adjustAccountCash(newCash: Float): Boolean { - val result = false - mAccount?.let { - val newCashTotal = it.cashCount + newCash - if (newCashTotal >= 0F) { - it.cashCount = newCashTotal - saveAccountInfo() - NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Cash_Changed, null) - return true - } - } - return result - } + //------------------------- 3个数值相关属性 增减 End --------------------------// + + fun getBankInfo(): BankInfo? { return mAccount?.bankInfo @@ -111,16 +121,14 @@ object AccountManager { @Synchronized fun convertGold2Cash(): Boolean { try { - val couldCovertCashTotal = mAccount?.goldCount?.div(VidiConst.PER_01CASH_COST_GOLD_NUM) ?: 0 + val couldCovertCashTotal = getGold().div(VidiConst.PER_01CASH_COST_GOLD_NUM) ?: 0 if (couldCovertCashTotal > 0) { val costGoldNum = couldCovertCashTotal * VidiConst.PER_01CASH_COST_GOLD_NUM - mAccount?.goldCount?.let { - if (it >= costGoldNum) { - addGold(-1 * costGoldNum.toInt()) - adjustAccountCash(couldCovertCashTotal * 0.1F) - AndroidUtil.showToast("Has convert $costGoldNum gold to $couldCovertCashTotal cash.") - return true - } + if (getGold() >= costGoldNum) { + adjustGold(-1L * costGoldNum.toInt()) + adjustCash(couldCovertCashTotal * 0.1F) + AndroidUtil.showToast("Has convert $costGoldNum gold to $couldCovertCashTotal cash.") + return true } } else { AndroidUtil.showToast("You don't have enough gold.") @@ -142,17 +150,6 @@ object AccountManager { return !mAccount?.bankInfo?.bankAccount.isNullOrEmpty() } - fun adjustDiamond(diamondCost: Int): Boolean { - mAccount?.let { - if (it.diamondCount >= diamondCost) { - it.diamondCount -= diamondCost - saveAccountInfo() - NotifyMan.instance().sendEvent(VididinEvents.Event_Account_Diamond_Changed, null) - return true - } - } - return false - } } diff --git a/app/src/main/java/com/gamedog/vididin/main/BeginnerGiftDialog.kt b/app/src/main/java/com/gamedog/vididin/main/BeginnerGiftDialog.kt index ad3020d..9cfad64 100644 --- a/app/src/main/java/com/gamedog/vididin/main/BeginnerGiftDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/BeginnerGiftDialog.kt @@ -7,7 +7,6 @@ import com.ama.core.architecture.highlightpro.HighlightPro import com.ama.core.architecture.highlightpro.parameter.Constraints import com.ama.core.architecture.highlightpro.parameter.HighlightParameter import com.ama.core.architecture.highlightpro.parameter.MarginOffset -import com.ama.core.architecture.highlightpro.shape.OvalShape import com.ama.core.architecture.highlightpro.shape.RectShape import com.ama.core.architecture.util.ResUtil.dp import com.ama.core.architecture.util.SpUtil @@ -49,7 +48,7 @@ class BeginnerGiftDialog(activity: Activity) : BindingDialog(), OnSwit } else { mTotalMs = 0L binding?.dragIconView?.setProgress(mTotalMs * 100/ RewardConst.HOME_WATCH_DURATION) - AccountManager.addGold(RewardConst.HOME_WATCH_REWARD_NUM) + AccountManager.adjustGold(RewardConst.HOME_WATCH_REWARD_NUM.toLong()) binding?.dragIconView?.showRewardGoldAnim() } } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index 77cb03a..e80e5fb 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -109,7 +109,7 @@ class TaskManager private constructor() { } VididinEvents.EVENT_AD_WATCHED_FOR_EARN_GOLD -> { - AccountManager.addGold(VidiConst.WATCH_AD_REWARD_GOLD) + AccountManager.adjustGold(VidiConst.WATCH_AD_REWARD_GOLD.toLong()) } } } diff --git a/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt b/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt index 01aef68..59f626d 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt @@ -221,7 +221,7 @@ class WithdrawManager private constructor() { } private fun adjustAccountCash(cashNum: Float) { - AccountManager.adjustAccountCash(cashNum) + AccountManager.adjustCash(cashNum) } private fun saveRecords2Sp() { @@ -481,40 +481,19 @@ class WithdrawManager private constructor() { return allStartedItemRestCashNum } - fun getItemState(itemIndex: Int): Int { - var returnState = ITEM_STATE_CANNOT_START - - AccountManager.getAccount()?.let { - if (itemIndex in 0..mItemList.size-1) { - val curItem = mItemList[itemIndex] - val userCashTotal = it.cashCount - val allStartedItemRestCashNum = getStartedItemRestCashCount() - - if (curItem.hasStarted) { - returnState = ITEM_STATE_STARTED - } else if ((userCashTotal - allStartedItemRestCashNum) >= curItem.totalCashNum) { - returnState = ITEM_STATE_CAN_START - } - } - } - - return returnState - } fun getItemProgress(itemIndex: Int): Float { var itemProgress = 0F - AccountManager.getAccount()?.let { - if (itemIndex in 0..mItemList.size-1) { - val curItem = mItemList[itemIndex] - val userCashTotal = it.cashCount - val restAvailableCashNum = userCashTotal - getStartedItemRestCashCount() + if (itemIndex in 0..mItemList.size-1) { + val curItem = mItemList[itemIndex] + val userCashTotal = AccountManager.getCash() + val restAvailableCashNum = userCashTotal - getStartedItemRestCashCount() - if (curItem.hasStarted || restAvailableCashNum >= curItem.totalCashNum) { - itemProgress = 1F - } else { - itemProgress = restAvailableCashNum / curItem.totalCashNum - } + if (curItem.hasStarted || restAvailableCashNum >= curItem.totalCashNum) { + itemProgress = 1F + } else { + itemProgress = restAvailableCashNum / curItem.totalCashNum } } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt index 66772e2..660f217 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt @@ -22,7 +22,7 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper() { try { val couldClaimCashNum = getCouldClaimCashNum() if (couldClaimCashNum > 0F) { - AccountManager.adjustAccountCash(couldClaimCashNum) + AccountManager.adjustCash(couldClaimCashNum) mStateBean.boxList.forEachIndexed { index, box -> if (getBoxStateEnum(index) == STATE_FINISH) { box.hasClaimedReward = true diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt index dd4df1c..e20d6e0 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt @@ -58,7 +58,7 @@ class DailySignTaskHelper : BaseTaskHelper() { daySignState.hasSigned = true daySignState.hasWatchedAd = isByAd saveState2Sp() - AccountManager.addGold(finalReward) + AccountManager.adjustGold(finalReward.toLong()) notifySignStateChanged(Pair(dayIndex, daySignState)) return true } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt index ea5a349..db5e459 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt @@ -29,7 +29,7 @@ class NewbieEnableNotifyHelper: BaseTaskHelper( fun claimReward() : Boolean { if (!mStateBean.hasClaimReward) { - AccountManager.addGold(mStateBean.rewardGoldNum) + AccountManager.adjustGold(mStateBean.rewardGoldNum.toLong()) mStateBean.hasClaimReward = true saveState2Sp() notifyStateChangeEvent()