From 14b15539a8fbbce1145197993e0c062400174ef1 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 16:51:12 +0800
Subject: [PATCH] docs(baselibrary): 更新 NativeNfcReadHelper 类文档
---
generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt | 157 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 103 insertions(+), 54 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 271b476..5ca214d 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
@@ -4,16 +4,16 @@
import android.content.Intent
import android.os.Bundle
import com.dayu.baselibrary.net.subscribers.SubscriberListener
-import com.dayu.baselibrary.utils.ToastUtil
+import com.dayu.baselibrary.utils.MornyUtil
import com.dayu.baselibrary.view.TipDialog
import com.dayu.baselibrary.view.TitleBar
+import com.dayu.general.bean.card.UserCard
import com.dayu.general.bean.net.CardInfoResult
import com.dayu.general.databinding.ActivityCardReadBinding
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.tool.NfcReadHelper
/**
* @author: zuo
@@ -38,18 +38,16 @@
super.onCreate(savedInstanceState)
binding = ActivityCardReadBinding.inflate(layoutInflater)
setContentView(binding.root)
-
+
initView()
}
private fun initView() {
- // 璁剧疆鏍囬
- binding.titleBar.setCenterText("璇诲崱")
// 璁剧疆TitleBar鐨勮繑鍥炴寜閽偣鍑讳簨浠�
binding.titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE) {
finish()
}
-
+
}
@@ -73,8 +71,8 @@
}
override fun onNfcBack(intent: Intent?) {
- intent?.let {
- handleNfcIntent(it)
+ intent?.let {
+ handleNfcIntent(it)
} ?: run {
showConfirmDialog("NFC鏁版嵁寮傚父锛岃閲嶆柊鍒峰崱") {
}
@@ -117,12 +115,18 @@
// 鏍规嵁鍗$墖绫诲瀷杩涜涓嶅悓澶勭悊
when (cardType) {
- CardCommon.USER_CARD_TYPE_1,
- CardCommon.USER_CARD_TYPE_2,
+ CardCommon.USER_CARD_TYPE_1,
+ CardCommon.USER_CARD_TYPE_2,
CardCommon.USER_CARD_TYPE_3 -> {
// 鐢ㄦ埛鍗★細瑙f瀽鍗″唴鏁版嵁骞惰皟鐢ㄦ帴鍙�
handleUserCard(cardNumber, cardType, nfcAdapter)
}
+
+ "00" -> {
+ // 鍦板尯鍗★細鏄剧ず鍗$墖绫诲瀷淇℃伅
+ handleUserCard(cardNumber, cardType, nfcAdapter)
+ }
+
else -> {
// 绠$悊绫诲崱锛氭樉绀哄崱鐗囩被鍨嬩俊鎭�
handleManagementCard(cardNumber, cardType)
@@ -139,16 +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)
}
+
// 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
- getCardInfo(cardNumber, cardType, userCard)
+
}
/**
@@ -156,7 +183,7 @@
*/
private fun handleManagementCard(cardNumber: String, cardType: String) {
val cardTypeName = getCardTypeName(cardType)
-
+
// 鏄剧ず绠$悊鍗′俊鎭�
showManagementCardInfo(cardNumber, cardTypeName)
}
@@ -168,13 +195,12 @@
// 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩�
binding.cardReadLL.visibility = android.view.View.GONE
binding.cardInfoContainer.visibility = android.view.View.VISIBLE
-
-
+
// 鏄剧ず鍩烘湰淇℃伅
- binding.tvCardNumber.text = cardNumber
+
binding.tvCardType.text = cardTypeName
-
+
// 闅愯棌鐢ㄦ埛鍗$壒鏈夌殑瀛楁
binding.llCardBalance.visibility = android.view.View.GONE
binding.llUserNumber.visibility = android.view.View.GONE
@@ -207,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(
@@ -238,62 +264,84 @@
/**
* 鏄剧ず鐢ㄦ埛鍗$墖淇℃伅锛堝寘鍚崱鍐呮暟鎹拰鎺ュ彛杩斿洖鏁版嵁锛�
*/
- private fun showUserCardInfo(cardInfo: CardInfoResult?, cardNumber: String, cardType: String, userCard: UserCard) {
+ private fun showUserCardInfo(
+ cardInfo: CardInfoResult?,
+ cardNumber: String,
+ cardType: String,
+ userCard: UserCard?
+ ) {
// 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩�
binding.cardReadLL.visibility = android.view.View.GONE
binding.cardInfoContainer.visibility = android.view.View.VISIBLE
val cardTypeName = getCardTypeName(cardType)
-
+
// 鏄剧ず鍗″唴鏁版嵁
- binding.tvCardNumber.text = cardNumber
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 ->
- // 浣欓杞崲涓哄厓锛堝師濮嬫暟鎹彲鑳芥槸鍒嗭級
- val balanceInYuan = if (card.balance > 1000) {
- String.format("%.2f", card.balance / 100.0)
- } else {
- card.balance.toString()
- }
- binding.tvCardBalance.text = "${balanceInYuan}鍏�"
-
- // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙�
- binding.tvUserNumber.text = card.getMyUserCode()
-
- // 鍗$墖鐘舵�侊紙鍋囪姝e父鐘舵�侊紝鍥犱负UserCard涓病鏈夌姸鎬佸瓧娈碉級
- binding.tvCardStatus.text = "姝e父"
- binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#4CAF50"))
-
+ 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)
+ val dateFormat =
+ java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault())
+ 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浣滀负韬唤璇佸彿鐨勬浛浠�
- // 鏍规嵁status瀛楁鏄剧ず鐘舵��
- val statusText = when (info.status) {
- 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)
+ } ?: 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"))
}
}
@@ -305,6 +353,7 @@
"1001" -> {
"璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣溿��"
}
+
else -> {
when {
msg.isNullOrBlank() -> "鑾峰彇鍗′俊鎭け璐ワ紝璇烽噸鏂板埛鍗¢噸璇曘��"
--
Gitblit v1.8.0