From dd2562d8dc2b01bcdfca3152f82f09efbbd09259 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期三, 25 六月 2025 19:49:48 +0800 Subject: [PATCH] fix(generallibrary): 优化卡片处理和支付方式获取逻辑- 修复地区卡处理逻辑,增加对"00"类型卡的特殊处理 - 优化用户卡数据解析和显示逻辑,提高容错性 - 改进支付方式获取方法,增加错误处理和日志记录 -调整充值接口调用参数,确保正确传递当前余额等信息- 修复 AreaCard 中 areaNumber 类型,改为字符串处理 --- generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt | 106 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 70 insertions(+), 36 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt index 986451b..5ca214d 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt @@ -122,6 +122,11 @@ handleUserCard(cardNumber, cardType, nfcAdapter) } + "00" -> { + // 鍦板尯鍗★細鏄剧ず鍗$墖绫诲瀷淇℃伅 + handleUserCard(cardNumber, cardType, nfcAdapter) + } + else -> { // 绠$悊绫诲崱锛氭樉绀哄崱鐗囩被鍨嬩俊鎭� handleManagementCard(cardNumber, cardType) @@ -138,33 +143,39 @@ * 澶勭悊鐢ㄦ埛鍗� */ private fun handleUserCard(cardNumber: String, cardType: String, nfcAdapter: NfcReadHelper) { - // 瑙f瀽鐢ㄦ埛鍗℃暟鎹� - val userCard = nfcAdapter.getUserCardData() - if (userCard == null) { - showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") { + if (cardType != "00") { + // 瑙f瀽鐢ㄦ埛鍗℃暟鎹� + val userCard = nfcAdapter.getUserCardData() + if (userCard == null) { + showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") { + } + return } - return + + // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織 + android.util.Log.d("CardReadActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===") + android.util.Log.d("CardReadActivity", "鍗″彿: $cardNumber") + android.util.Log.d("CardReadActivity", "鍗$墖绫诲瀷: $cardType") + android.util.Log.d("CardReadActivity", "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}") + android.util.Log.d("CardReadActivity", "鐢ㄦ埛缂栧彿: ${userCard.userCode}") + android.util.Log.d("CardReadActivity", "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}") + android.util.Log.d("CardReadActivity", "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}") + android.util.Log.d("CardReadActivity", "鎵嬫満鍙�: ${userCard.phoneNumber}") + android.util.Log.d("CardReadActivity", "椤圭洰缂栫爜: ${userCard.projectCode}") + android.util.Log.d("CardReadActivity", "鍗″唴浣欓: ${userCard.balance}") + android.util.Log.d("CardReadActivity", "鍓╀綑姘撮噺: ${userCard.surplusWater}") + android.util.Log.d("CardReadActivity", "姘撮噺鍗曚环: ${userCard.waterPrice}") + android.util.Log.d("CardReadActivity", "鐢甸噺鍗曚环: ${userCard.electricPrice}") + android.util.Log.d("CardReadActivity", "鍏呭�兼椂闂�: ${userCard.rechargeDate}") + android.util.Log.d("CardReadActivity", "==================") + getCardInfo(cardNumber, cardType, userCard) + } else { + getCardInfo(cardNumber, cardType, null) } - binding.tvCardNumber.text = cardNumber - // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織 - android.util.Log.d("CardReadActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===") - android.util.Log.d("CardReadActivity", "鍗″彿: $cardNumber") - android.util.Log.d("CardReadActivity", "鍗$墖绫诲瀷: $cardType") - android.util.Log.d("CardReadActivity", "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}") - android.util.Log.d("CardReadActivity", "鐢ㄦ埛缂栧彿: ${userCard.userCode}") - android.util.Log.d("CardReadActivity", "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}") - android.util.Log.d("CardReadActivity", "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}") - android.util.Log.d("CardReadActivity", "鎵嬫満鍙�: ${userCard.phoneNumber}") - android.util.Log.d("CardReadActivity", "椤圭洰缂栫爜: ${userCard.projectCode}") - android.util.Log.d("CardReadActivity", "鍗″唴浣欓: ${userCard.balance}") - android.util.Log.d("CardReadActivity", "鍓╀綑姘撮噺: ${userCard.surplusWater}") - android.util.Log.d("CardReadActivity", "姘撮噺鍗曚环: ${userCard.waterPrice}") - android.util.Log.d("CardReadActivity", "鐢甸噺鍗曚环: ${userCard.electricPrice}") - android.util.Log.d("CardReadActivity", "鍏呭�兼椂闂�: ${userCard.rechargeDate}") - android.util.Log.d("CardReadActivity", "==================") + // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅 - getCardInfo(cardNumber, cardType, userCard) + } /** @@ -222,7 +233,7 @@ /** * 鑾峰彇鍗$墖璇︾粏淇℃伅锛堢敤鎴峰崱涓撶敤锛� */ - private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard) { + private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard?) { val map = mutableMapOf<String, Any>() map["cardAddr"] = cardNumber ApiManager.getInstance().requestGetLoading( @@ -257,7 +268,7 @@ cardInfo: CardInfoResult?, cardNumber: String, cardType: String, - userCard: UserCard + userCard: UserCard? ) { // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩� binding.cardReadLL.visibility = android.view.View.GONE @@ -266,34 +277,49 @@ val cardTypeName = getCardTypeName(cardType) // 鏄剧ず鍗″唴鏁版嵁 - binding.tvCardType.text = cardTypeName // 鏄剧ず鐢ㄦ埛鍗$壒鏈夊瓧娈� binding.llCardBalance.visibility = android.view.View.VISIBLE binding.llUserNumber.visibility = android.view.View.VISIBLE binding.llCardStatus.visibility = android.view.View.VISIBLE - - userCard.let { card -> - // 浣欓杞崲涓哄厓锛堝師濮嬫暟鎹彲鑳芥槸鍒嗭級 - - binding.tvCardBalance.text = MornyUtil.changeF2Y(card.balance.toInt()) + "鍏�" - - // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙� - binding.tvUserNumber.text = cardInfo?.cardNum + binding.tvCardNumber.text = cardNumber + // 澶勭悊鍗″唴鏁版嵁 - 浼樺厛浣跨敤userCard锛屽鏋滀负绌哄垯浠巆ardInfo鑾峰彇 + if (userCard != null) { + // 浠庡崱鍐呮暟鎹幏鍙栦俊鎭� + binding.tvCardBalance.text = MornyUtil.changeF2Y(userCard.balance.toInt()) + "鍏�" // 鍏呭�兼椂闂翠綔涓烘渶鍚庝娇鐢ㄦ椂闂� - if (card.rechargeDate != null) { + val rechargeDate = userCard.rechargeDate + if (rechargeDate != null) { binding.llLastUseTime.visibility = android.view.View.VISIBLE val dateFormat = java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()) - binding.tvLastUseTime.text = dateFormat.format(card.rechargeDate!!.time) + binding.tvLastUseTime.text = dateFormat.format(rechargeDate.time) } else { + binding.llLastUseTime.visibility = android.view.View.GONE + } + } else { + // userCard涓虹┖鏃讹紝浠巆ardInfo鑾峰彇鏁版嵁 + cardInfo?.let { info -> + // 浠庢帴鍙h繑鍥炵殑鏁版嵁涓幏鍙栦綑棰濓紝杞崲涓烘纭殑绫诲瀷 + val balance = info.balance ?: 0.0 + binding.tvCardBalance.text = MornyUtil.changeF2Y((balance * 100).toInt()) + "鍏�" + + // 濡傛灉cardInfo涓湁鏈�鍚庝娇鐢ㄦ椂闂寸浉鍏冲瓧娈碉紝鍙互鍦ㄨ繖閲岃缃� + // 鏆傛椂闅愯棌鏈�鍚庝娇鐢ㄦ椂闂� + binding.llLastUseTime.visibility = android.view.View.GONE + } ?: run { + // 濡傛灉cardInfo涔熶负绌猴紝鏄剧ず榛樿鍊� + binding.tvCardBalance.text = "0.00鍏�" binding.llLastUseTime.visibility = android.view.View.GONE } } // 鏄剧ず鏈嶅姟鍣ㄦ暟鎹� cardInfo?.let { info -> + // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙� + binding.tvUserNumber.text = info.cardNum ?: cardNumber + binding.tvUserName.text = info.userName ?: "鏈煡" binding.tvPhone.text = info.phone ?: "鏈粦瀹�" binding.tvIdCard.text = info.userCode ?: "鏈綍鍏�" // 浣跨敤userCode浣滀负韬唤璇佸彿鐨勬浛浠� @@ -308,6 +334,14 @@ } binding.tvCardStatus.text = statusText binding.tvCardStatus.setTextColor(statusColor) + } ?: run { + // 濡傛灉cardInfo涓虹┖锛屾樉绀洪粯璁ゅ�� + binding.tvUserNumber.text = cardNumber + binding.tvUserName.text = "鏈煡" + binding.tvPhone.text = "鏈粦瀹�" + binding.tvIdCard.text = "鏈綍鍏�" + binding.tvCardStatus.text = "鏈煡鐘舵��" + binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#9E9E9E")) } } -- Gitblit v1.8.0