From 465c8abaa982fba6868a900d25316c70afc20fb7 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 18 六月 2025 13:59:46 +0800 Subject: [PATCH] feat(card): 优化销卡功能并添加写卡操作 --- generallibrary/src/main/java/com/dayu/general/activity/CardCancelActivity.kt | 121 ++++++++++++++++++++++++++-------------- 1 files changed, 78 insertions(+), 43 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..4d29030 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父" @@ -280,64 +288,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 +366,27 @@ } ) } + + /** + * 璺宠浆鍒板啓鍗$晫闈㈣繘琛屽崱鍐呭娓呴櫎 + */ + 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) + // 浼犻�掑綋鍓嶅崱鍐呬綑棰濅俊鎭� + cardInfo?.let { info -> + putExtra("cardBalance", info.balance ?: 0.0) + } + } + startActivity(intent) + finish() + } } \ No newline at end of file -- Gitblit v1.8.0