取现逻辑调整

This commit is contained in:
renhaoting 2025-12-22 17:00:22 +08:00
parent c2bb7ec0e7
commit 38b8a8d23c
6 changed files with 97 additions and 17 deletions

View File

@ -128,7 +128,7 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
} }
private fun updateUICashTotal() { private fun updateUICashTotal() {
binding.tvCashTotal.text = AccountManager.getCash().toString() binding.tvCashTotal.text = String.format("%.2f", AccountManager.getCash())
binding.tvAllCashHasWithdrawed.text = buildString { binding.tvAllCashHasWithdrawed.text = buildString {
append(ResUtil.getString(R.string.cash)) append(ResUtil.getString(R.string.cash))
append(" ") append(" ")
@ -156,7 +156,7 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
showTransactionResultDialog(record) showTransactionResultDialog(record)
} }
updateUICashTotal() updateUICashTotal()
mItemViewList[record.itemIndex].updateProgressUI() mItemViewList[record.itemIndex].updateProgressAndButUI()
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
@ -286,7 +286,7 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
} }
private fun gotoWithdrawSubActivity(selectedIndex: Int) { private fun gotoWithdrawSubActivity(selectedIndex: Int) {
Router.WithdrawSub.startActivity(this, selectedIndex - 1) Router.WithdrawSub.startActivity(this, selectedIndex)
} }

View File

@ -31,12 +31,13 @@ class WithDrawItemView @JvmOverloads constructor(
fun setNumAndAction(itemIndex: Int, cashNum: Float, clickAction: (Int)->Unit) { fun setNumAndAction(itemIndex: Int, cashNum: Float, clickAction: (Int)->Unit) {
mItemIndex = itemIndex mItemIndex = itemIndex
mCashNum = cashNum mCashNum = cashNum
mBinding.tvWithdrawNum.text = ResUtil.getString(R.string.cash) + " " + cashNum.toString() mBinding.tvWithdrawNum.text = ResUtil.getString(R.string.cash) + " " +
if (cashNum.toString().endsWith(".0")) cashNum.toString().substring(0, cashNum.toString().indexOf(".0")) else cashNum.toString()
mBinding.tvSacar.setOnClickListener { mBinding.tvSacar.setOnClickListener {
clickAction.invoke(mItemIndex) clickAction.invoke(mItemIndex)
} }
updateProgressUI() updateProgressAndButUI()
} }
@ -44,12 +45,17 @@ class WithDrawItemView @JvmOverloads constructor(
return mCashNum return mCashNum
} }
fun updateProgressUI() { fun updateProgressAndButUI() {
val progressIntNum: Float = WithdrawManager.instance().getHasWithdrawSuccessCashCount(mItemIndex) var itemProgress = WithdrawManager.instance().getItemProgress(mItemIndex) * 100
//var itemState = WithdrawManager.instance().getItemState(mItemIndex)
with(mBinding) { with(mBinding) {
progressBar.setProgress(progressIntNum.toInt()) progressBar.setProgress(itemProgress.toInt())
tvProgress.text = String.format("%.2f", progressIntNum).toString() + ResUtil.getString(R.string.percent) tvProgress.text = String.format("%.2f", itemProgress) + ResUtil.getString(R.string.percent)
var canClickable: Boolean = itemProgress >= 100F
tvSacar.isClickable = canClickable
tvSacar.alpha = if (canClickable) 1F else 0.5F
} }
} }

View File

@ -217,7 +217,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
binding?.tvCashTotal?.text = buildString { binding?.tvCashTotal?.text = buildString {
append(ResUtil.getString(R.string.cash)) append(ResUtil.getString(R.string.cash))
append(" ") append(" ")
append(AccountManager.getCash()) append(String.format("%.2f", AccountManager.getCash()))
} }
} }

View File

@ -47,6 +47,13 @@ class WithdrawManager private constructor() {
companion object { companion object {
const val EACH_SUB_ITEM_CASH_NUM: Float = 1F const val EACH_SUB_ITEM_CASH_NUM: Float = 1F
// subBean 状态
const val ITEM_STATE_CANNOT_START: Int = 0
const val ITEM_STATE_CAN_START: Int = 1
const val ITEM_STATE_STARTED: Int = 2
// subBean 状态 // subBean 状态
const val STATE_NEED_WATCH_AD: Int = 0 const val STATE_NEED_WATCH_AD: Int = 0
const val STATE_COULD_WITHDRAW: Int = 1 const val STATE_COULD_WITHDRAW: Int = 1
@ -83,11 +90,12 @@ class WithdrawManager private constructor() {
private fun generateItemList(): MutableList<WithdrawItemBean> { private fun generateItemList(): MutableList<WithdrawItemBean> {
val itemList = mutableListOf<WithdrawItemBean>() val itemList = mutableListOf<WithdrawItemBean>()
itemList.add(WithdrawItemBean(0, 10F, AndroidUtil.randomInt(50, 70), generateSubItemList(10F))) itemList.add(WithdrawItemBean(0, 0.1F, isBigWithDraw = false))
itemList.add(WithdrawItemBean(1, 20F, AndroidUtil.randomInt(50, 70), generateSubItemList(20F))) itemList.add(WithdrawItemBean(1, 10F, AndroidUtil.randomInt(50, 70), generateSubItemList(10F)))
itemList.add(WithdrawItemBean(2, 50F, AndroidUtil.randomInt(50, 70), generateSubItemList(50F))) itemList.add(WithdrawItemBean(2, 20F, AndroidUtil.randomInt(50, 70), generateSubItemList(20F)))
itemList.add(WithdrawItemBean(3, 100F, AndroidUtil.randomInt(50, 70), generateSubItemList(100F))) itemList.add(WithdrawItemBean(3, 50F, AndroidUtil.randomInt(50, 70), generateSubItemList(50F)))
itemList.add(WithdrawItemBean(4, 300F, AndroidUtil.randomInt(50, 70), generateSubItemList(300F))) itemList.add(WithdrawItemBean(4, 100F, AndroidUtil.randomInt(50, 70), generateSubItemList(100F)))
itemList.add(WithdrawItemBean(5, 300F, AndroidUtil.randomInt(50, 70), generateSubItemList(300F)))
return itemList return itemList
} }
@ -399,6 +407,71 @@ class WithdrawManager private constructor() {
return failTextRes return failTextRes
} }
private fun getStartedItemRestCashNum(itemIndex: Int): Float {
if (itemIndex in 0..mItemList.size-1) {
val curItem = mItemList[itemIndex]
if (curItem.hasStarted) {
var hasWithdrawedCash = 0F
curItem.subItemList.forEach { subItem->
if (subItem.withdrawState == STATE_HAS_WITHDRAWED) {
hasWithdrawedCash += subItem.cashTotal
}
}
return curItem.totalCashNum - hasWithdrawedCash
}
}
return 0F
}
private fun getStartedItemRestCashCount(): Float {
var allStartedItemRestCashNum = 0F
mItemList.forEachIndexed { index, item ->
allStartedItemRestCashNum += getStartedItemRestCashNum(index)
}
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 (curItem.hasStarted || restAvailableCashNum >= curItem.totalCashNum) {
itemProgress = 1F
} else {
itemProgress = restAvailableCashNum / curItem.totalCashNum
}
}
}
return itemProgress
}
} }
@ -409,6 +482,8 @@ data class WithdrawItemBean(
var totalProgress: Int = 0, var totalProgress: Int = 0,
val subItemList: List<WithdrawSubItem> = emptyList(), val subItemList: List<WithdrawSubItem> = emptyList(),
var startMs: Long = 0L, var startMs: Long = 0L,
var hasStarted: Boolean = false,
var isBigWithDraw: Boolean = true
) )
data class WithdrawSubItem( data class WithdrawSubItem(

View File

@ -101,6 +101,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="21sp" android:textSize="21sp"
android:textStyle="bold"
android:textColor="@color/yellow_46" android:textColor="@color/yellow_46"
android:text="0" android:text="0"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"

View File

@ -28,8 +28,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:layout_toEndOf="@id/ll_left_root"
android:layout_toStartOf="@+id/ll_right_root"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="vertical"> android:orientation="vertical">