From 59237ecbcb9828b1dc762da07f83fa598bd9d6b2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 03 六月 2025 18:07:01 +0800
Subject: [PATCH] fix(NewCard2Activity): 优化读卡逻辑

---
 generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt |  109 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 63 insertions(+), 46 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
index 46c5a42..57e331a 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -34,7 +34,7 @@
 
     // 鏀粯鏂瑰紡
     private var paymentMethod: String = "鐜伴噾"
-    
+
     // 鏀粯鏂瑰紡ID
     private var paymentId: Long = 0
 
@@ -46,9 +46,12 @@
 
     // 鐢ㄦ埛ID
     private var userId: String = ""
-    
+
     // 瀹㈡埛ID
     private var clientId: String = ""
+
+    // 鏄惁宸茶鍗�
+    private var isReadCard: Boolean = false
 
     companion object {
         private const val TAG = "NewCard2Activity"
@@ -70,7 +73,7 @@
         val pageSize: Any?,
         val pageTotal: Any?
     )
-    
+
     // 鐢ㄦ埛淇℃伅鏁版嵁绫�
     data class ClientInfo(
         val clientId: String,
@@ -92,14 +95,14 @@
 
         // 鑾峰彇浼犻�掔殑clientId鍙傛暟
         clientId = intent.getStringExtra("clientId") ?: ""
-        
+
         initView()
-        
+
         // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
         if (clientId.isNotEmpty()) {
             getClientInfo(clientId)
         }
-        
+
         // 鑾峰彇鏀粯鏂瑰紡
         getPaymentMethods()
         initListener()
@@ -118,7 +121,7 @@
         binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
         binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
     }
-    
+
     /**
      * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
      */
@@ -162,14 +165,14 @@
             }
         )
     }
-    
+
     /**
      * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
      */
     private fun displayClientInfo(clientInfo: ClientInfo) {
         // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
         userId = clientInfo.clientId
-        
+
         // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
         binding.newCardUserName.text = clientInfo.name
         binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
@@ -232,23 +235,23 @@
                 resources.getDimensionPixelSize(R.dimen.dimen_40),
                 1.0f
             )
-            
+
             // 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
             if (index < paymentMethodList.size - 1) {
-                (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin = 
+                (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin =
                     resources.getDimensionPixelSize(R.dimen.dimen_15)
             }
-            
+
             radioButton.text = method.name
             radioButton.background = resources.getDrawable(R.drawable.radio_selector)
             radioButton.buttonDrawable = null
             radioButton.gravity = android.view.Gravity.CENTER
             radioButton.setTextColor(resources.getColorStateList(R.color.radio_button_text_color))
             radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
-            
+
             // 娣诲姞鍒癛adioGroup
             binding.newCardPaymentMethod.addView(radioButton)
-            
+
             // 榛樿閫変腑绗竴涓�
             if (index == 0) {
                 radioButton.isChecked = true
@@ -420,48 +423,62 @@
     }
 
     override fun onNfcBack(intent: Intent) {
-        val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
-        if (cardNumber.isNotEmpty()) {
-            try {
-                // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
-                val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+        if (!isReadCard) {
+            val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+            if (cardNumber.isNotEmpty()) {
+                try {
+                    // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
+                    val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
 
-                // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
-                val nfcHelper = NfcWreatHelper.getInstance(intent, this)
-                nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
-                
-                // 寮傛淇敼瀵嗙爜
-                nfcHelper.changePSAsync(keyList, false, true) { success: Boolean, msg: String? ->
-                    if (success) {
-                        // 淇濆瓨鍗$墿鐞咺D
-                        cardPhysicalId = cardNumber
-                        // 鏇存柊UI
-                        binding.newCardArerNumber.text = cardNumber
-                        // 闅愯棌NFC璇诲崱鐣岄潰
-                        binding.nfcContainer.visibility = View.GONE
-                        binding.centerScroll.visibility = View.VISIBLE
-                        binding.newCardRegistBtn.visibility = View.VISIBLE
-                    } else {
-                        // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
-                        Toast.makeText(
-                            this@NewCard2Activity,
-                            "鍗$墖鍒濆鍖栧け璐ワ細$msg",
-                            Toast.LENGTH_LONG
-                        ).show()
+                    // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
+                    val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+                    nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+
+                    // 寮傛淇敼瀵嗙爜
+                    nfcHelper.changePSAsync(
+                        keyList,
+                        false,
+                        true
+                    ) { success: Boolean, msg: String? ->
+                        if (success) {
+                            isReadCard = true
+                            // 淇濆瓨鍗$墿鐞咺D
+                            cardPhysicalId = cardNumber
+                            // 鏇存柊UI
+                            binding.newCardArerNumber.text = cardNumber
+                            // 闅愯棌NFC璇诲崱鐣岄潰
+                            binding.nfcContainer.visibility = View.GONE
+                            binding.centerScroll.visibility = View.VISIBLE
+                            binding.newCardRegistBtn.visibility = View.VISIBLE
+                        } else {
+                            // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+                            Toast.makeText(
+                                this@NewCard2Activity,
+                                "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+                                Toast.LENGTH_LONG
+                            ).show()
+                        }
                     }
+                } catch (e: Exception) {
+                    // 澶勭悊寮傚父鎯呭喌
+                    CrashReport.postCatchedException(e)
+                    e.printStackTrace()
                 }
-            } catch (e: Exception) {
-                // 澶勭悊寮傚父鎯呭喌
-                CrashReport.postCatchedException(e)
-                e.printStackTrace()
+            } else {
+                Toast.makeText(
+                    this@NewCard2Activity,
+                    "鑾峰彇鍗″彿澶辫触",
+                    Toast.LENGTH_SHORT
+                ).show()
             }
         } else {
             Toast.makeText(
                 this@NewCard2Activity,
-                "鑾峰彇鍗″彿澶辫触",
+                "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
                 Toast.LENGTH_SHORT
             ).show()
         }
+
     }
 
     override fun onDestroy() {

--
Gitblit v1.8.0