From 87e5604ad04c0b7aaacf3d52bae85e62d308cb6d Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 16:41:02 +0800
Subject: [PATCH] refactor(generallibrary):重构开卡成功界面并移除未使用的开卡界面
---
generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt | 142 +++++++++++++++++++++++++++++++----------------
1 files changed, 93 insertions(+), 49 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt
index 163990f..e6256ba 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt
@@ -8,13 +8,19 @@
import com.dayu.baselibrary.utils.ToastUtil
import com.dayu.baselibrary.view.TipDialog
import com.dayu.baselibrary.view.TitleBar
+import com.dayu.general.BaseApplication
import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.bean.net.CardCancelResult
import com.dayu.general.databinding.ActivityCardCancelBinding
import com.dayu.general.net.ApiManager
import com.dayu.general.net.BaseResponse
import com.dayu.general.tool.NfcReadHelper
import com.dayu.general.bean.card.UserCard
import com.dayu.general.tool.CardCommon
+import com.dayu.general.bean.card.ClearCard
+import com.dayu.general.tool.NfcWreatHelper
+import com.dayu.baselibrary.tools.nfc.NFCCallBack
+import com.dayu.general.tool.CardOperationType
/**
* @author: zuo
@@ -25,6 +31,7 @@
private lateinit var binding: ActivityCardCancelBinding
private var cardNumber: String? = null
private var cardInfo: CardInfoResult? = null
+ private var userCard: UserCard? = null
companion object {
/**
@@ -60,8 +67,9 @@
* 閲嶇疆鍒拌鍗$姸鎬�
*/
private fun resetToReadingState() {
- binding.cardReadLL.visibility = android.view.View.VISIBLE
+ binding.scrollReadCard.visibility = android.view.View.VISIBLE
binding.cardInfoContainer.visibility = android.view.View.GONE
+ binding.bottomButtonContainer.visibility = android.view.View.GONE
cardNumber = null
cardInfo = null
binding.etRefundAmount.setText("")
@@ -80,6 +88,7 @@
override fun onNfcBack(intent: Intent?) {
intent?.let {
+ // 澶勭悊姝e父鐨勮鍗℃搷浣�
handleNfcIntent(it)
} ?: run {
showConfirmDialog("NFC鏁版嵁寮傚父锛岃閲嶆柊鍒峰崱") {
@@ -162,7 +171,7 @@
android.util.Log.d("CardCancelActivity", "鍗$墖绫诲瀷: $cardType")
android.util.Log.d("CardCancelActivity", "鍗″唴浣欓: ${userCard.balance}")
android.util.Log.d("CardCancelActivity", "==================")
-
+ this.userCard = userCard
// 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
getCardInfo(cardNumber, cardType, userCard)
}
@@ -207,9 +216,10 @@
cardType: String,
userCard: UserCard
) {
- // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩�
- binding.cardReadLL.visibility = android.view.View.GONE
+ // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩熷拰搴曢儴鎸夐挳
+ binding.scrollReadCard.visibility = android.view.View.GONE
binding.cardInfoContainer.visibility = android.view.View.VISIBLE
+ binding.bottomButtonContainer.visibility = android.view.View.VISIBLE
this.cardInfo = cardInfo
binding.tvCardNumber.text = cardNumber
@@ -222,9 +232,7 @@
card.balance.toString()
}
binding.tvCardBalance.text = "${balanceInYuan}鍏�"
-
- // 榛樿閫�娆鹃噾棰濊缃负鍗″唴浣欓
- binding.etRefundAmount.setText(balanceInYuan)
+
// 鍗$墖鐘舵��
binding.tvCardStatus.text = "姝e父"
@@ -236,12 +244,20 @@
binding.tvUserName.text = info.userName ?: "鏈煡"
binding.tvPhone.text = info.phone ?: "鏈粦瀹�"
- // 鏍规嵁status瀛楁鏄剧ず鐘舵��
- val statusText = when (info.state) {
- 1 -> "姝e父"
- 2 -> "鎸傚け"
- 3 -> "閿佸畾"
- else -> "鏈煡"
+ // 鏍规嵁state瀛楁鏄剧ず鐘舵��
+ val (statusText, statusColor) = when (info.state) {
+ 1 -> Pair("姝e父", android.graphics.Color.parseColor("#4CAF50")) // 缁胯壊
+ 2 -> Pair("宸叉敞閿�", android.graphics.Color.parseColor("#FF5722")) // 娣辨鑹�
+ 3 -> Pair("宸叉寕澶�", android.graphics.Color.parseColor("#FF9800")) // 姗欒壊
+ 4 -> Pair("鏃犳晥鍗$墖", android.graphics.Color.parseColor("#F44336")) // 绾㈣壊
+ else -> Pair("鏈煡鐘舵��", android.graphics.Color.parseColor("#9E9E9E")) // 鐏拌壊
+ }
+ binding.tvCardStatus.text = statusText
+ binding.tvCardStatus.setTextColor(statusColor)
+ if (info.state == 3) {
+ binding.btnCancelCard.visibility = android.view.View.GONE
+ } else {
+ binding.btnCancelCard.visibility = android.view.View.VISIBLE
}
}
}
@@ -280,64 +296,68 @@
val refundAmountStr = binding.etRefundAmount.text.toString().trim()
val remarks = binding.etRemarks.text.toString().trim()
- if (TextUtils.isEmpty(refundAmountStr)) {
- ToastUtil.showToast("璇疯緭鍏ラ��娆鹃噾棰�")
- return
+ // 閫�娆鹃噾棰濆鐞嗭紙闈炲繀濉級
+ val refundAmount = if (refundAmountStr.isEmpty()) {
+ 0.0 // 濡傛灉鏈緭鍏ラ��娆鹃噾棰濓紝榛樿涓�0
+ } else {
+ try {
+ val amount = refundAmountStr.toDouble()
+ if (amount < 0) {
+ ToastUtil.show("閫�娆鹃噾棰濅笉鑳戒负璐熸暟")
+ return
+ }
+ amount
+ } catch (e: NumberFormatException) {
+ ToastUtil.show("璇疯緭鍏ユ湁鏁堢殑閫�娆鹃噾棰�")
+ return
+ }
}
- val refundAmount = try {
- refundAmountStr.toDouble()
- } catch (e: NumberFormatException) {
- ToastUtil.showToast("璇疯緭鍏ユ湁鏁堢殑閫�娆鹃噾棰�")
- return
- }
-
- if (refundAmount < 0) {
- ToastUtil.showToast("閫�娆鹃噾棰濅笉鑳戒负璐熸暟")
- return
- }
-
- if (TextUtils.isEmpty(remarks)) {
- ToastUtil.showToast("璇疯緭鍏ュ娉ㄤ俊鎭�")
- return
+ // 澶囨敞澶勭悊锛堥潪蹇呭~锛�
+ val finalRemarks = if (remarks.isEmpty()) {
+ "鏃犲娉�" // 濡傛灉鏈緭鍏ュ娉紝浣跨敤榛樿鍊�
+ } else {
+ remarks
}
// 纭閿�鍗�
- showConfirmDialog(
- "纭瑕侀攢鍗″悧锛焅n\n鍗″彿锛�${cardNumber}\n閫�娆鹃噾棰濓細${refundAmount}鍏僜n澶囨敞锛�${remarks}\n\n閿�鍗″悗姝ゅ崱灏嗘棤娉曞啀娆′娇鐢紒"
- ) {
- callCancelCardApi(refundAmount, remarks)
+ val confirmMessage = if (refundAmount > 0) {
+ "纭瑕侀攢鍗″悧锛焅n\n鍗″彿锛�${cardNumber}\n閫�娆鹃噾棰濓細${refundAmount}鍏僜n澶囨敞锛�${finalRemarks}\n\n閿�鍗″悗姝ゅ崱灏嗘棤娉曞啀娆′娇鐢紒"
+ } else {
+ "纭瑕侀攢鍗″悧锛焅n\n鍗″彿锛�${cardNumber}\n鏃犻��娆鹃噾棰漒n澶囨敞锛�${finalRemarks}\n\n閿�鍗″悗姝ゅ崱灏嗘棤娉曞啀娆′娇鐢紒"
+ }
+
+ showConfirmDialog(confirmMessage) {
+ callCancelCardApi(refundAmount, finalRemarks)
}
}
/**
* 璋冪敤閿�鍗PI鎺ュ彛
*/
- private fun callCancelCardApi(refundAmount: Double, remarks: String) {
+ private fun callCancelCardApi(refundAmount: Double, finalRemarks: String) {
if (cardNumber.isNullOrBlank()) {
- ToastUtil.showToast("鍗″彿淇℃伅寮傚父锛岃閲嶆柊鍒峰崱")
+ ToastUtil.show("鍗″彿淇℃伅寮傚父锛岃閲嶆柊鍒峰崱")
return
}
val map = mutableMapOf<String, Any>()
- map["cardNum"] = cardNumber!!
- map["refund"] = (refundAmount * 100).toInt() // 杞崲涓哄垎
+ map["cardNum"] = cardInfo?.cardNum.toString()
+ map["refund"] = refundAmount.toString() // 鏀逛负String绫诲瀷锛屽崟浣嶄负鍏�
map["refundType"] = 1838466162264350700L
- map["remarks"] = remarks
- map["operator"] = 2024090516595200300L
+ map["remarks"] = finalRemarks
+ map["operator"] = BaseApplication.userId
ApiManager.getInstance().requestPostLoading(
this,
"terminal/card/termCancel",
- Boolean::class.java,
+ CardCancelResult::class.java,
map,
- object : SubscriberListener<BaseResponse<Boolean>>() {
- override fun onNext(t: BaseResponse<Boolean>) {
- if (t.success && t.content == true) {
- // 閿�鍗℃垚鍔�
- showConfirmDialog("閿�鍗℃垚鍔燂紒\n\n閫�娆鹃噾棰濓細${refundAmount}鍏冨凡閫�杩�") {
- finish()
- }
+ object : SubscriberListener<BaseResponse<CardCancelResult>>() {
+ override fun onNext(t: BaseResponse<CardCancelResult>) {
+ if (t.success && t.content != null) {
+ // 閿�鍗℃垚鍔燂紝璺宠浆鍒板啓鍗$晫闈�
+ startWriteCardActivity(t.content!!, refundAmount, userCard!!)
} else {
// 閿�鍗″け璐�
val errorMsg = if (t.msg.isNullOrBlank()) "閿�鍗″け璐ワ紝璇烽噸璇�" else t.msg
@@ -354,4 +374,28 @@
}
)
}
+
+ /**
+ * 璺宠浆鍒板啓鍗$晫闈㈣繘琛屽崱鍐呭娓呴櫎
+ */
+ private fun startWriteCardActivity(
+ cancelResult: CardCancelResult,
+ refundAmount: Double,
+ userCard: UserCard
+ ) {
+ val intent = Intent(this, NfcWreatActivity::class.java).apply {
+ putExtra("cardAddr", cardNumber)
+ putExtra("operationTypeCode", CardOperationType.CancelCard.code)
+ putExtra("orderNumber", cancelResult.orderNo)
+ putExtra("refundAmount", refundAmount)
+ putExtra("userCard", userCard)
+ putExtra("cardInfo", cardInfo)
+ // 浼犻�掑綋鍓嶅崱鍐呬綑棰濅俊鎭�
+ cardInfo?.let { info ->
+ putExtra("cardBalance", info.balance ?: 0.0)
+ }
+ }
+ startActivity(intent)
+ finish()
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0