支付方式管理

This commit is contained in:
yezhiqiu
2025-09-30 18:15:27 +08:00
parent 787137f6a2
commit 8930bba35f
6 changed files with 68 additions and 30 deletions

5
.idea/gradle.xml generated
View File

@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="testRunner" value="GRADLE" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="gradleJvm" value="Embedded JDK" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

1
.idea/misc.xml generated
View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">

View File

@@ -1,5 +1,6 @@
package com.abbidot.tracker.ui.activity.set
import android.content.Intent
import android.view.View
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
@@ -9,6 +10,7 @@ import com.abbidot.tracker.base.BaseActivity
import com.abbidot.tracker.base.BaseDialog
import com.abbidot.tracker.constant.GetResultCallback
import com.abbidot.tracker.databinding.ActivityAdvancedSetBinding
import com.abbidot.tracker.ui.activity.subscribe.PaymentMethodActivity
import com.abbidot.tracker.util.FileUtil
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil
@@ -42,10 +44,10 @@ class AdvancedSetActivity :
)
}
ilAdvancedSetPayManager.root.let {
it.text = getString(R.string.txt_delete_account)
it.text = getString(R.string.txt_payment_manager)
it.setImageDrawable(
ContextCompat.getDrawable(
mContext, R.drawable.ico_account
mContext, R.drawable.card_pay_manager
)
)
}
@@ -58,7 +60,11 @@ class AdvancedSetActivity :
)
}
setOnClickListenerViews(ilAdvancedSetClearCache.root, ilAdvancedSetDeleteAccount.root)
setOnClickListenerViews(
ilAdvancedSetClearCache.root,
ilAdvancedSetPayManager.root,
ilAdvancedSetDeleteAccount.root
)
}
getCacheSize()
@@ -118,6 +124,12 @@ class AdvancedSetActivity :
mClearCacheTipsType, getString(R.string.txt_clear_cache_tips)
)
ilAdvancedSetPayManager.root -> startActivity(
Intent(
mContext, PaymentMethodActivity::class.java
)
)
ilAdvancedSetDeleteAccount.root -> dialogShowType(
mCloseAccountTipsType, getString(R.string.txt_close_account_tips)
)

View File

@@ -32,6 +32,7 @@ class AddCreditCardPaymentActivity :
OnFocusChangeListener {
private var mCreditCard: CreditCardBean? = null
private var mOldCard: CreditCardBean? = null
private var isEdit = false
override fun getTopBar() = mViewBinding.ilAddPaymentMethodTopInfo.titleTopBar
@@ -47,10 +48,9 @@ class AddCreditCardPaymentActivity :
if (null == mCreditCard) mCreditCard = CreditCardBean()
if (isEdit) {
mOldCard = mCreditCard
setTopBarTitle(R.string.txt_edit_pay_method)
mRightImageButton = addRightImageButton(R.drawable.icon_delete_svg).apply {
imageTintList = ColorStateList.valueOf(Color.WHITE)
}
mRightImageButton = addRightImageButton(R.drawable.icon_delete_svg)
} else {
setTopBarTitle(R.string.txt_add_payment)
}
@@ -219,19 +219,34 @@ class AddCreditCardPaymentActivity :
lifecycleScope.launch(Dispatchers.IO) {
val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName)
if (!isEdit) {
var isCardExist = false
list?.apply {
if (isNotEmpty()) {
for (c in list) {
if (c.cardNumber == cardNumber) {
isCardExist = true
}
var existCard: CreditCardBean? = null
list?.apply {
if (isNotEmpty()) {
for (c in list) {
if (!isEdit && c.cardNumber == cardNumber) {
existCard = c
break
} else if (isEdit && null != mOldCard && c.cardNumber == mOldCard!!.cardNumber) {
existCard = c
break
}
}
}
if (isCardExist) {
}
if (isEdit) {
existCard?.let {
it.cardName = cardName
it.cardNumber = cardNumber
it.expirationDate = creditCardValidity
it.cvv = cvv
it.isPrimary = mViewBinding.cbAddCardSetPrimarySwitch.isChecked
if (null != mOldCard && mOldCard!!.cardNumber != cardNumber) {
MyDatabase.creditCardDao().delete(mOldCard!!)
}
saveCard(list)
}
} else {
if (null != existCard) {
launch(Dispatchers.Main) {
ViewUtil.instance.showDialog(
mContext,

View File

@@ -59,17 +59,22 @@ class CreditCardPaymentFragment : BaseFragment<FragmentCreditCardPaymentBinding>
setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener {
override fun onItemClick(itemView: View?, pos: Int) {
val card = getData()[pos]
if (card.checked) return
for (i in 0 until getData().size) {
val data = getData()[i]
if (data.checked) {
data.checked = false
notifyItemChanged(i)
break
//卡管理 不需要点击效果
if (null == mPaymentMethodActivity.mOrderBean) {
goEditCard(card)
} else {
if (card.checked) return
for (i in 0 until getData().size) {
val data = getData()[i]
if (data.checked) {
data.checked = false
notifyItemChanged(i)
break
}
}
getData()[pos].checked = true
notifyItemChanged(pos)
}
getData()[pos].checked = true
notifyItemChanged(pos)
}
})
}
@@ -88,7 +93,10 @@ class CreditCardPaymentFragment : BaseFragment<FragmentCreditCardPaymentBinding>
list?.let {
if (it.isNotEmpty()) mActivity!!.runOnUiThread {
val sortedByList = list.sortedByDescending { l -> l.isPrimary }.toMutableList()
setCheckAndPrimaryState(sortedByList)
//卡管理 不需要点击效果
if (null != mPaymentMethodActivity.mOrderBean) {
setCheckAndPrimaryState(sortedByList)
}
mCreditCardAdapter.setData(sortedByList, true)
}
}
@@ -155,7 +163,9 @@ class CreditCardPaymentFragment : BaseFragment<FragmentCreditCardPaymentBinding>
}
mViewBinding.apply {
btnMakePaymentCreditCard.visibility = View.VISIBLE
btnMakePaymentCreditCard.visibility =
if (null == mPaymentMethodActivity.mOrderBean) View.GONE
else View.VISIBLE
tvCreditCardPaymentChoose.visibility = View.VISIBLE
btnCreditCardPaymentAdd.visibility = View.VISIBLE
}

View File

@@ -1029,5 +1029,6 @@
<string name="txt_update_time">Updated: %s</string>
<string name="txt_as_low_as">As low as</string>
<string name="txt_payment_manager">Payment Manager</string>
</resources>