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/RechargeFragment.kt |  102 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 64 insertions(+), 38 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
index 79c9fbd..51136ba 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
@@ -10,11 +10,14 @@
 import com.dayu.baselibrary.tools.nfc.NfcReadAdapter
 import com.dayu.baselibrary.utils.ToastUtil
 import com.dayu.baselibrary.view.ConfirmDialog
+import com.dayu.baselibrary.view.TipDialog
 import com.dayu.general.bean.net.CardInfoResult
 import com.dayu.general.databinding.FragmentRechargeBinding
 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
 
 class RechargeFragment : Fragment() {
     var binding: FragmentRechargeBinding? = null
@@ -28,25 +31,25 @@
         binding = FragmentRechargeBinding.inflate(inflater, container, false)
         return binding?.root
     }
-    
+
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        initView()
 
     }
-    
-    private fun initView() {
-        // 鍒濆鍖栫晫闈㈡樉绀鸿鍗$姸鎬�
-        binding?.rechargeReadLL?.visibility = View.VISIBLE
-    }
-    
 
-    
-    private fun resetView() {
-        // 閲嶇疆鐣岄潰鏄剧ず璇诲崱鐘舵��
-        binding?.rechargeReadLL?.visibility = View.VISIBLE
+
+    /**
+     * 鏄剧ず纭瀵硅瘽妗�
+     */
+    private fun showConfirmDialog(message: String, onConfirm: () -> Unit) {
+        activity?.let { activity ->
+            val confirmDialog = TipDialog(activity, message) {
+                onConfirm()
+            }
+            confirmDialog.show()
+        }
     }
-    
+
     /**
      * 澶勭悊NFC鍒峰崱淇℃伅
      * 璇ユ柟娉曠敱MainActivity璋冪敤
@@ -56,32 +59,60 @@
             try {
                 // 妫�鏌ntent涓槸鍚﹀寘鍚玁FC Tag
                 if (intent.getParcelableExtra<android.nfc.Tag>(android.nfc.NfcAdapter.EXTRA_TAG) == null) {
-                    ToastUtil.show("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�")
+                    showConfirmDialog("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�") {
+                    }
                     return
                 }
-                
-                // 浣跨敤NfcReadAdapter璇诲彇鍗″彿
+
                 val nfcAdapter = NfcReadHelper.getInstance(intent, activity)
-                cardNumber = nfcAdapter.getCardNumber()
-                
-                if (cardNumber.isNullOrEmpty()) {
-                    ToastUtil.show("璇诲崱澶辫触锛岃閲嶆柊鍒峰崱")
+                val cardTypeAndCardNumber = nfcAdapter.getCardTypeAndCardNumber()
+                if (cardTypeAndCardNumber.isNullOrBlank() || !cardTypeAndCardNumber.contains(",")) {
+                    showConfirmDialog("鍗$墖淇℃伅璇诲彇澶辫触锛岃閲嶆柊鍒峰崱") {
+                    }
+                    return
+                }
+                val parts = cardTypeAndCardNumber.split(",")
+                if (parts.size < 2) {
+                    showConfirmDialog("鍗$墖淇℃伅鏍煎紡寮傚父锛岃閲嶆柊鍒峰崱") {
+                    }
+                    return
+                }
+                val cardNumber = parts[0]
+                val cardType = parts[1]
+                this.cardNumber = cardNumber
+                if (cardNumber.isBlank()) {
+                    showConfirmDialog("鍗″彿涓虹┖锛屾棤娉曡繘琛屽厖鍊硷紝璇烽噸鏂板埛鍗�") {
+                    }
+                    return
+                }
+                if (cardType != CardCommon.USER_CARD_TYPE_1) {
+                    showConfirmDialog("璇ュ崱鐗囦笉鏄敤鎴峰崱锛岃浣跨敤姝g‘鐨勭敤鎴峰崱杩涜鍏呭�兼搷浣溿��") {
+                    }
+                    return
+                }
+
+                // 瑙f瀽鐢ㄦ埛鍗℃暟鎹�
+                val userCard = nfcAdapter.getUserCardData()
+                if (userCard == null) {
+                    showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") {
+                    }
                     return
                 }
 
                 // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
-                getCardInfo(cardNumber!!)
+                getCardInfo(cardNumber, userCard)
             } catch (e: Exception) {
-                ToastUtil.show("璇诲崱寮傚父锛�${e.message}")
+                showConfirmDialog("璇诲崱寮傚父锛�${e.message}") {
+                }
                 e.printStackTrace()
             }
         }
     }
-    
+
     /**
      * 鑾峰彇鍗$墖璇︾粏淇℃伅
      */
-    private fun getCardInfo(cardNumber: String) {
+    private fun getCardInfo(cardNumber: String, userCard: UserCard) {
         activity?.let { activity ->
             val map = mutableMapOf<String, Any>()
             map["cardAddr"] = cardNumber
@@ -93,8 +124,8 @@
                 object : SubscriberListener<BaseResponse<CardInfoResult>>() {
                     override fun onNext(t: BaseResponse<CardInfoResult>) {
                         if (t.success) {
-                            // 璺宠浆鍒板厖鍊艰鎯呴〉闈�
-                            RechargeDetailActivity.start(activity, t.content, cardNumber)
+                            // 璺宠浆鍒板厖鍊艰鎯呴〉闈紝浼犻�掔敤鎴峰崱淇℃伅
+                            RechargeDetailActivity.start(activity, t.content, cardNumber, userCard)
                         } else {
                             // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐�
                             handleCardInfoError(t.code, t.msg)
@@ -103,28 +134,28 @@
 
                     override fun onError(e: Throwable?) {
                         super.onError(e)
-                        ToastUtil.show("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}")
-                        // 閲嶇疆鐣岄潰鐘舵��
-                        resetView()
+                        showConfirmDialog("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") {
+                        }
                     }
                 }
             )
         }
     }
-    
+
     /**
      * 澶勭悊鍗′俊鎭幏鍙栭敊璇�
      */
     private fun handleCardInfoError(code: String?, msg: String?) {
         val errorTitle: String
         val errorMessage: String
-        
+
         when (code) {
             "1001" -> {
                 // 鏁版嵁涓嶅瓨鍦ㄧ殑鐗规畩澶勭悊
                 errorTitle = "鍗$墖鏈敞鍐�"
                 errorMessage = "璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣滃悗鍐嶅厖鍊笺��"
             }
+
             else -> {
                 // 鍏朵粬閿欒鐨勯�氱敤澶勭悊
                 errorTitle = "鑾峰彇鍗′俊鎭け璐�"
@@ -137,14 +168,9 @@
                 }
             }
         }
-        
+
         // 鏄剧ず纭瀵硅瘽妗�
-        activity?.let { activity ->
-            val confirmDialog = ConfirmDialog(activity, errorTitle, errorMessage) {
-                // 鐐瑰嚮纭鎸夐挳鍚庡叧闂璇濇骞堕噸缃晫闈�
-                resetView()
-            }
-            confirmDialog.show()
+        showConfirmDialog(errorMessage) {
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0