From 4ceacd9e21e09989287e8dc4e526d182091af282 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 13:39:52 +0800
Subject: [PATCH] feat(nfc): 优化 NFC卡片处理流程

---
 generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
index a58bf9a..4a7def0 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
@@ -5,6 +5,7 @@
 import android.text.Editable
 import android.text.TextWatcher
 import android.view.View
+import android.widget.Toast
 import androidx.databinding.DataBindingUtil
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
 import com.dayu.baselibrary.utils.BaseCommon
@@ -18,6 +19,7 @@
 import com.dayu.general.tool.BaseCommon.Companion.protocol
 import com.dayu.general.tool.CardCommon
 import com.dayu.general.tool.NfcReadHelper
+import com.dayu.general.tool.NfcWreatHelper
 
 class ManagerReadActivity : BaseNfcActivity() {
 
@@ -196,16 +198,42 @@
     fun getRemark(): String = viewModel.remark.get() ?: ""
 
     override fun onNfcBack(intent: Intent) {
+        val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+        if (cardNumber.isNotEmpty()) {
+            val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+            val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+            nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+            // 寮傛淇敼瀵嗙爜
+            nfcHelper.changePSAsync(
+                keyList,
+                true,  // 淇敼涓簍rue锛岀‘淇濆缓绔婲FC杩炴帴
+                true
+            ) { success: Boolean, msg: String? ->
+                if (success) {
+                    // 闅愯棌NFC璇诲崱鐣岄潰
+                    if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
+                        binding.btnNext.visibility = View.VISIBLE
+                        binding.dataLayout.visibility = View.VISIBLE
+                        binding.scrollReadCard.visibility = View.GONE
+                        setCardNumber(cardNumber)
+                    } else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
+                        ToastUtil.show("褰撳墠鍗″瘑鐮侀敊璇紝涓嶆槸鏈叕鍙稿崱")
+                    }
+                } else {
+                    // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+                    Toast.makeText(
+                        this@ManagerReadActivity,
+                        "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+                        Toast.LENGTH_LONG
+                    ).show()
+                }
+            }
+        }
+        // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
+
         // 澶勭悊NFC璇诲彇缁撴灉
         NfcReadHelper.getInstance(intent, this).getCardNumber().let { cardNumber ->
-            if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
-                binding.btnNext.visibility = View.VISIBLE
-                binding.dataLayout.visibility = View.VISIBLE
-                binding.scrollReadCard.visibility = View.GONE
-                setCardNumber(cardNumber)
-            } else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
-                ToastUtil.show("褰撳墠鍗″瘑鐮侀敊璇紝涓嶆槸鏈叕鍙稿崱")
-            }
+
         }
     }
 
@@ -281,7 +309,7 @@
             map["projectNumber"] = projectNumber
         }
         map["protocol"] = protocol
-        map["securityCode"]="A0B1C289"
+        map["securityCode"] = "A0B1C289"
 
         // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
         ApiManager.getInstance().requestPostLoading(

--
Gitblit v1.8.0