From 87e5604ad04c0b7aaacf3d52bae85e62d308cb6d Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 16:41:02 +0800
Subject: [PATCH] refactor(generallibrary):重构开卡成功界面并移除未使用的开卡界面

---
 /dev/null                                                                          |  600 --------------------------
 generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt   |    2 
 generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt              |    6 
 generallibrary/src/main/AndroidManifest.xml                                        |   13 
 generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt |  114 +++-
 generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt          |  598 +++++++++++++++++++++++++
 generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt         |    8 
 7 files changed, 682 insertions(+), 659 deletions(-)

diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index 24cbef4..b9de4d7 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -12,10 +12,6 @@
         android:name="android.hardware.nfc"
         android:required="true" />
 
-    <!--    <intent-filter>-->
-    <!--        <action android:name="android.nfc.action.TAG_DISCOVERED" />-->
-    <!--        <data android:mimeType="text/plain" />-->
-    <!--    </intent-filter>-->
     <!--鐢ㄤ簬杩涜缃戠粶瀹氫綅-->
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
     <!--鐢ㄤ簬璁块棶GPS瀹氫綅-->
@@ -39,7 +35,7 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
-        <activity android:name="com.dayu.general.activity.NewCardActivity" />
+
         <activity android:name="com.dayu.general.activity.ManageListActivity" />
         <activity android:name="com.dayu.general.activity.SearchUserListActivity" />
         <activity android:name="com.dayu.general.activity.RechargeDetailActivity" />
@@ -76,7 +72,7 @@
         </activity>
         <activity android:name=".activity.SearchCardListActivity" />
         <activity
-            android:name=".activity.NewCard2Activity"
+            android:name=".activity.NewCardActivity"
             android:exported="false"
             android:launchMode="singleTop">
             <intent-filter>
@@ -138,8 +134,9 @@
         <activity
             android:name=".activity.CardUnlossActivity"
             android:exported="false"
-            android:launchMode="singleTop"/>
-        <activity android:name=".activity.CardReplaceActivity"
+            android:launchMode="singleTop" />
+        <activity
+            android:name=".activity.CardReplaceActivity"
             android:exported="false"
             android:launchMode="singleTop">
             <intent-filter>
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
index 6872853..8af188e 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
@@ -7,6 +7,7 @@
 import com.dayu.general.BaseApplication
 import com.dayu.general.bean.card.UserCard
 import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.bean.net.ClientInfo
 import com.dayu.general.databinding.ActivityCardWriteSuccessBinding
 import com.dayu.general.tool.CardOperationType
 
@@ -24,6 +25,7 @@
     private var userCard: UserCard? = null
     private var orderNumber: String? = null
     private var cardInfo: CardInfoResult? = null
+    private var clientInfo: ClientInfo? = null
 
     // 鍏呭�肩浉鍏冲弬鏁�
     private var rechargeAmount = 0.0
@@ -69,6 +71,10 @@
 
         if (intent.hasExtra("cardInfo")) {
             cardInfo = intent.getSerializableExtra("cardInfo") as CardInfoResult
+        }
+
+        if (intent.hasExtra("clientInfo")) {
+            clientInfo = intent.getSerializableExtra("clientInfo") as ClientInfo
         }
 
         initView()
@@ -186,12 +192,38 @@
             CardOperationType.OpenCard -> {
                 binding.titleBar.setCenterText("寮�鍗℃垚鍔�")
                 binding.successTitle.text = "寮�鍗℃垚鍔�"
+                
                 val messageBuilder = StringBuilder()
+                messageBuilder.append("寮�鍗℃搷浣滃凡鎴愬姛瀹屾垚\n")
+                
+                // 鏄剧ず鐢ㄦ埛濮撳悕
+                val userName = getUserName()
+                if (!userName.isNullOrEmpty()) {
+                    messageBuilder.append("鐢ㄦ埛濮撳悕锛�$userName\n")
+                }
+                
+                // 鏄剧ず鍗″湴鍧�
+                val cardAddress = cardNumber ?: cardAddr
+                if (!cardAddress.isNullOrEmpty()) {
+                    messageBuilder.append("鍗″湴鍧�锛�$cardAddress\n")
+                }
+                
+                // 鏄剧ず宸ユ湰璐�
+                if (cardFee > 0) {
+                    messageBuilder.append("宸ユ湰璐癸細${cardFee}鍏僜n")
+                }
+                
+                // 鏄剧ず鍏呭�奸噾棰�
                 if (rechargeAmount > 0) {
                     messageBuilder.append("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)}鍏僜n")
                 }
+                
+                // 鏄剧ず鍗″唴浣欓
                 messageBuilder.append("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard?.balance ?: 0)}鍏�")
-                // 鍏呭�兼垚鍔熷悗鑷姩鎵撳嵃
+                
+                binding.successMessage.text = messageBuilder.toString()
+                
+                // 寮�鍗℃垚鍔熷悗鑷姩鎵撳嵃
                 userCard?.let { card ->
                     doPrint(card)
                 }
@@ -230,6 +262,14 @@
     }
 
     /**
+     * 鑾峰彇鐢ㄦ埛濮撳悕锛屼紭鍏堜粠ClientInfo鑾峰彇锛屽鏋滄病鏈夊啀浠嶤ardInfo鑾峰彇
+     * @return 鐢ㄦ埛濮撳悕
+     */
+    private fun getUserName(): String? {
+        return clientInfo?.name ?: cardInfo?.userName
+    }
+
+    /**
      * 鎵撳嵃鍏呭�兼垚鍔熶俊鎭埌鎵撳嵃鏈�
      * @param userCard 鐢ㄦ埛鍗$墖淇℃伅锛屽寘鍚綑棰濈瓑淇℃伅
      * 鍑芥暟浼氭瀯寤烘墦鍗版暟鎹苟璋冪敤鎵撳嵃閫傞厤鍣ㄨ繘琛屾墦鍗�
@@ -249,11 +289,10 @@
                     data.add("           鍏呭�煎嚟璇�")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     // 娣诲姞鍗″湴鍧�
@@ -305,11 +344,10 @@
                     data.add("        琛ュ崱鍑瘉")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     val cardAddress = cardNumber ?: cardAddr
@@ -352,11 +390,10 @@
                     data.add("        閿�鍗″嚟璇�")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     val cardAddress = cardNumber ?: cardAddr
@@ -397,11 +434,10 @@
                     data.add("        杩旇繕鍑瘉")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     val cardAddress = cardNumber ?: cardAddr
@@ -442,11 +478,10 @@
                     data.add("        琛ユ墸鍑瘉")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     val cardAddress = cardNumber ?: cardAddr
@@ -486,11 +521,10 @@
                     data.add("           寮�鍗″嚟璇�")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     // 娣诲姞鍗″湴鍧�
@@ -507,14 +541,15 @@
                     // 娣诲姞鍏呭�奸噾棰�
                     if (rechargeAmount > 0) {
                         data.add("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)} 鍏�")
-                        // 娣诲姞鍏呭�煎悗浣欓
-                        data.add("鍏呭�煎悗浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
                     }
 
-                    // 娣诲姞璧犻�侀噾棰�
+                    // 娣诲姞宸ユ湰璐�
                     if (cardFee > 0) {
-                        data.add("宸ユ湰璐癸細" + MornyUtil.changeF2Y(cardFee) + "鍏�")
+                        data.add("宸ユ湰璐癸細" + cardFee + "鍏�")
                     }
+
+                    // 娣诲姞鍗″唴浣欓锛堝紑鍗″悗鐨勪綑棰濓級
+                    data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
 
                     // 娣诲姞璁㈠崟鍙�
                     if (!orderNumber.isNullOrEmpty()) {
@@ -541,11 +576,10 @@
                     data.add("        鎿嶄綔鍑瘉")
                     data.add("*****************************")
 
-                    // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
-                    cardInfo?.userName?.let { userName ->
-                        if (userName.isNotEmpty()) {
-                            data.add("鐢ㄦ埛濮撳悕锛�$userName")
-                        }
+                    // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+                    val userName = getUserName()
+                    if (!userName.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛濮撳悕锛�$userName")
                     }
 
                     val cardAddress = cardNumber ?: cardAddr
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
deleted file mode 100644
index 1be8768..0000000
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ /dev/null
@@ -1,600 +0,0 @@
-package com.dayu.general.activity
-
-import android.content.Intent
-import android.os.Bundle
-import android.text.Editable
-import android.text.TextWatcher
-import android.util.TypedValue
-import android.view.View
-import android.widget.RadioButton
-import android.widget.Toast
-import androidx.lifecycle.lifecycleScope
-import com.dayu.baselibrary.net.subscribers.SubscriberListener
-import com.dayu.baselibrary.utils.MornyUtil
-import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
-import com.dayu.general.BaseApplication
-import com.dayu.general.R
-import com.dayu.general.bean.card.UserCard
-import com.dayu.general.bean.db.CardRegistrationBean
-import com.dayu.general.bean.net.ClientInfo
-import com.dayu.general.bean.net.NewCardDataResult
-import com.dayu.general.bean.net.PaymentMethod
-import com.dayu.general.bean.net.PaymentMethodResponse
-import com.dayu.general.dao.BaseDaoSingleton
-import com.dayu.general.databinding.ActivityNewCardGeBinding
-import com.dayu.general.net.ApiManager
-import com.dayu.general.net.BaseResponse
-import com.dayu.general.tool.BaseCommon.Companion.protocol
-import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1
-import com.dayu.general.tool.CardOperationType
-import com.dayu.general.tool.NfcReadHelper
-import com.dayu.general.tool.NfcWreatHelper
-import com.dayu.general.utils.DateUtils
-import com.tencent.bugly.crashreport.CrashReport
-import kotlinx.coroutines.launch
-import java.util.Calendar
-
-/**
- * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
- * Author: zuo
- * Date: 2025/4/7
- */
-class NewCard2Activity : BaseNfcActivity() {
-
-    private lateinit var binding: ActivityNewCardGeBinding
-
-    // 鏀粯鏂瑰紡
-    private var paymentMethod: String = "鐜伴噾"
-
-    // 鏀粯鏂瑰紡ID
-    private var paymentId: String = ""
-
-    // 鏀粯鏂瑰紡鍒楄〃
-    private var paymentMethodList: List<PaymentMethod> = listOf()
-
-    // 鍗$墿鐞咺D
-    private var cardPhysicalId: String = ""
-
-    // 鐢ㄦ埛ID
-    private var userId: String = ""
-
-    // 瀹㈡埛ID
-    private var clientId: String = ""
-
-    private lateinit var clientInfo: ClientInfo
-
-    // 鏄惁宸茶鍗�
-    private var isReadCard: Boolean = false
-
-    private var orderId: String = ""
-
-    companion object {
-        private const val TAG = "NewCard2Activity"
-        private const val REQUEST_CODE_NFC_WRITE = 1001
-    }
-
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        binding = ActivityNewCardGeBinding.inflate(layoutInflater)
-        setContentView(binding.root)
-
-        // 鑾峰彇浼犻�掔殑clientId鍙傛暟
-        clientId = intent.getStringExtra("clientId") ?: ""
-
-        initView()
-
-        // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
-        if (clientId.isNotEmpty()) {
-            getClientInfo(clientId)
-        }
-
-        // 鑾峰彇鏀粯鏂瑰紡
-        getPaymentMethods()
-        initListener()
-    }
-
-    private fun initView() {
-        // 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
-        binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) {
-            finish()
-        }
-
-        // 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
-        binding.nfcContainer.visibility = View.VISIBLE
-
-        // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
-        binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
-        binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
-    }
-
-    /**
-     * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
-     */
-    private fun getClientInfo(clientId: String) {
-        ApiManager.getInstance().requestGetLoading(
-            this,
-            "terminal/client/getTermOne/$clientId",
-            ClientInfo::class.java,
-            null,
-            object : SubscriberListener<BaseResponse<ClientInfo>>() {
-                override fun onNext(response: BaseResponse<ClientInfo>) {
-                    if (response.success) {
-                        clientInfo = response.content!!
-                        if (clientInfo != null) {
-                            // 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
-                            displayClientInfo(clientInfo)
-                        } else {
-                            Toast.makeText(
-                                this@NewCard2Activity,
-                                "鑾峰彇瀹㈡埛淇℃伅澶辫触: 杩斿洖鏁版嵁涓虹┖",
-                                Toast.LENGTH_SHORT
-                            ).show()
-                        }
-                    } else {
-                        Toast.makeText(
-                            this@NewCard2Activity,
-                            "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${response.msg}",
-                            Toast.LENGTH_SHORT
-                        ).show()
-                    }
-                }
-
-                override fun onError(e: Throwable?) {
-                    super.onError(e)
-                    Toast.makeText(
-                        this@NewCard2Activity,
-                        "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
-                        Toast.LENGTH_SHORT
-                    ).show()
-                }
-            }
-        )
-    }
-
-    /**
-     * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
-     */
-    private fun displayClientInfo(clientInfo: ClientInfo) {
-        // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
-        userId = clientInfo.clientId
-
-        // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
-        binding.newCardUserName.text = clientInfo.name
-        binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
-        binding.newCardFarmerCode.text = clientInfo.clientNum
-    }
-
-    /**
-     * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-     */
-    private fun getPaymentMethods() {
-        ApiManager.getInstance().requestGetLoading(
-            this,
-            "terminal/paymentmethod/get",
-            Any::class.java,
-            null,
-            object : SubscriberListener<BaseResponse<Any>>() {
-                override fun onNext(response: BaseResponse<Any>) {
-                    if (response.success) {
-                        try {
-                            // 瀹夊叏鍦板鐞嗚繑鍥炵殑content锛屾湇鍔″櫒杩斿洖鐨勬槸ArrayList<LinkedHashMap>
-                            val paymentMethods = mutableListOf<PaymentMethod>()
-                            val content = response.content
-                            
-                            if (content is List<*>) {
-                                content.forEach { item ->
-                                    if (item is Map<*, *>) {
-                                        val id = item["id"]?.toString() ?: ""
-                                        val name = item["name"]?.toString() ?: ""
-                                        if (id.isNotEmpty() && name.isNotEmpty()) {
-                                            paymentMethods.add(PaymentMethod(id, name))
-                                        }
-                                    }
-                                }
-                            }
-                            
-                            if (paymentMethods.isNotEmpty()) {
-                                paymentMethodList = paymentMethods
-                                // 鏇存柊鏀粯鏂瑰紡鏄剧ず
-                                updatePaymentMethodRadioGroup()
-                            } else {
-                                Toast.makeText(
-                                    this@NewCard2Activity,
-                                    "鑾峰彇鏀粯鏂瑰紡澶辫触锛氳繑鍥炴暟鎹负绌�",
-                                    Toast.LENGTH_SHORT
-                                ).show()
-                            }
-                        } catch (e: Exception) {
-                            android.util.Log.e("NewCard2Activity", "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触", e)
-                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁绫诲瀷: ${response.content?.javaClass?.name}")
-                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁鍐呭: ${response.content}")
-                            Toast.makeText(
-                                this@NewCard2Activity,
-                                "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触: ${e.message}",
-                                Toast.LENGTH_SHORT
-                            ).show()
-                        }
-                    } else {
-                        Toast.makeText(
-                            this@NewCard2Activity,
-                            "鑾峰彇鏀粯鏂瑰紡澶辫触: ${response.msg}",
-                            Toast.LENGTH_SHORT
-                        ).show()
-                    }
-                }
-
-                override fun onError(e: Throwable?) {
-                    super.onError(e)
-                    android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
-                    Toast.makeText(
-                        this@NewCard2Activity,
-                        "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
-                        Toast.LENGTH_SHORT
-                    ).show()
-                }
-            }
-        )
-    }
-
-    /**
-     * 鏇存柊鏀粯鏂瑰紡RadioGroup
-     */
-    private fun updatePaymentMethodRadioGroup() {
-        // 娓呯┖鍘熸湁RadioButton
-        binding.newCardPaymentMethod.removeAllViews()
-
-        // 鍔ㄦ�佹坊鍔燫adioButton
-        paymentMethodList.forEachIndexed { index, method ->
-            val radioButton = RadioButton(this)
-            radioButton.id = View.generateViewId() // 鐢熸垚鍞竴ID
-            radioButton.layoutParams = android.widget.LinearLayout.LayoutParams(
-                0,
-                resources.getDimensionPixelSize(R.dimen.dimen_40),
-                1.0f
-            )
-
-            // 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
-            if (index < paymentMethodList.size - 1) {
-                (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
-                paymentMethod = method.name
-                paymentId = method.id
-            }
-        }
-    }
-
-    /**
-     * 鍒涘缓闄愬埗杈撳叆涓や綅灏忔暟鐨凾extWatcher
-     */
-    private fun createDecimalTextWatcher(): TextWatcher {
-        return object : TextWatcher {
-            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
-                // 涓嶉渶瑕佸疄鐜�
-            }
-
-            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
-                // 涓嶉渶瑕佸疄鐜�
-            }
-
-            override fun afterTextChanged(s: Editable?) {
-                if (s == null || s.isEmpty()) return
-
-                val str = s.toString()
-                // 濡傛灉杈撳叆鐨勪笉鏄湁鏁堢殑灏忔暟鏍煎紡锛岃繘琛屽鐞�
-                if (str.contains(".")) {
-                    val decimalIndex = str.indexOf(".")
-                    // 濡傛灉灏忔暟鐐瑰悗瓒呰繃涓や綅锛屾埅鍙栧埌涓や綅
-                    if (decimalIndex >= 0 && str.length - decimalIndex > 3) {
-                        s.delete(decimalIndex + 3, str.length)
-                    }
-                }
-            }
-        }
-    }
-
-    private fun initListener() {
-        // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
-        binding.newCardPaymentMethod.setOnCheckedChangeListener { group, checkedId ->
-            // 鏍规嵁閫変腑鐨処D鑾峰彇鏀粯鏂瑰紡
-            for (i in 0 until group.childCount) {
-                val radioButton = group.getChildAt(i) as RadioButton
-                if (radioButton.id == checkedId) {
-                    paymentMethod = radioButton.text.toString()
-                    paymentId = paymentMethodList[i].id
-                    break
-                }
-            }
-        }
-
-        // 璁剧疆寮�鍗℃寜閽偣鍑荤洃鍚�
-        binding.newCardRegistBtn.setOnClickListener {
-            if (cardPhysicalId.isEmpty()) {
-                // 濡傛灉灏氭湭璇诲彇鍒板崱鐗╃悊ID锛屾樉绀篘FC璇诲崱鐣岄潰
-                binding.nfcContainer.visibility = View.VISIBLE
-            } else {
-                // 宸茶鍙栧埌鍗$墿鐞咺D锛岃繘琛屽紑鍗℃搷浣�
-                registerNewCard()
-            }
-        }
-    }
-
-    /**
-     * 娉ㄥ唽鏂板崱
-     */
-    private fun registerNewCard() {
-        // 鑾峰彇鍏呭�奸噾棰�
-        val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
-        val rechargeAmount = if (rechargeAmountStr.isEmpty()) 0.0 else rechargeAmountStr.toDouble()
-
-        // 鑾峰彇宸ユ湰璐�
-        val cardFeeStr = binding.newCardCardFee.text.toString()
-        val cardFee = if (cardFeeStr.isEmpty()) 0 else cardFeeStr.toInt()
-
-        val remark = binding.newCardRemark.text.toString()
-
-        // 鏋勫缓璇锋眰鍙傛暟
-        val params = HashMap<String, Any>()
-        params["cardAddr"] = cardPhysicalId // 姘村崱鍦板潃锛堢墿鐞咺D锛�
-        params["clientId"] = clientId // 鍐滄埛ID
-        params["cardCost"] = cardFee  // 璐崱閲戦锛堝伐鏈垂锛�(鍏�)
-        params["amount"] = rechargeAmount  // 鍏呭�奸噾棰�(鍏�)
-        params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
-        params["remarks"] = remark // 澶囨敞
-        params["protocol"] = protocol // 鍗忚
-        params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
-
-        // 鎵ц鍗$墖婵�娲籄PI璇锋眰
-        ApiManager.getInstance().requestPostLoading(
-            this,
-            "terminal/card/termActiveCard",
-            NewCardDataResult::class.java,
-            params,
-            object : SubscriberListener<BaseResponse<NewCardDataResult>>() {
-                override fun onNext(response: BaseResponse<NewCardDataResult>) {
-                    if (response.success) {
-                        orderId = response.content?.orderNo.toString()
-                        // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴�
-                        val cardRegistration = CardRegistrationBean(
-                            cardNumber = cardPhysicalId,
-                            userName = binding.newCardUserName.text.toString(),
-                            idCard = binding.newCardIdCard.text.toString(),
-                            clientId = clientId,
-                            cardFee = cardFee,
-                            remark = binding.newCardRemark.text.toString(),
-                            paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
-                            isReported = true,
-                            isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
-                            operatorId = orderId,
-
-                            )
-
-                        // 浣跨敤鍗忕▼鍦ㄥ悗鍙扮嚎绋嬩腑淇濆瓨鏁版嵁
-                        lifecycleScope.launch {
-                            try {
-                                BaseDaoSingleton.getInstance(this@NewCard2Activity)
-                                    .cardRegistrationDao().insert(cardRegistration)
-                                setResult(RESULT_OK)
-                                Intent(this@NewCard2Activity, NfcWreatActivity::class.java).apply {
-                                    putExtra("cardType", USER_CARD_TYPE_1)
-                                    putExtra("orderNumber", orderId)
-                                    putExtra("cardAddr", cardPhysicalId)
-                                    var userCard = UserCard()
-                                    userCard.areaNumber =
-                                        response.content?.cardNum?.substring(0, 12).toString()
-                                    userCard.userCode = clientInfo.clientNum
-                                    userCard.phoneNumber = clientInfo.phone
-                                    userCard.userCodeNumber =
-                                        response.content?.cardNum?.substring(12)?.toInt()!!
-                                    userCard.projectCode = response.content?.projectNo!!
-                                    userCard.balance =
-                                        MornyUtil.changeY2F(response.content?.balance)
-//                                    userCard.surplusWater = response.content?.surplusWater?.toInt()!!
-                                    userCard.waterPrice =
-                                        MornyUtil.changeY2F(response.content?.waterPrice)
-                                    userCard.electricPrice =
-                                        MornyUtil.changeY2F(response.content?.waterPrice)
-                                    userCard.rechargeDate =
-                                        DateUtils.parseStringToCalendar(response.content?.time)
-
-                                    // 杈撳嚭userCard鐨勬墍鏈変俊鎭埌鏃ュ織
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "=== 寮�鍗serCard淇℃伅 ==="
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鍗$墖绫诲瀷: ${userCard.cardType}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鐢ㄦ埛缂栧彿: ${userCard.userCode}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鎵嬫満鍙�: ${userCard.phoneNumber}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "椤圭洰缂栫爜: ${userCard.projectCode}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鍗″唴浣欓: ${userCard.balance}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鍓╀綑姘撮噺: ${userCard.surplusWater}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "姘撮噺鍗曚环: ${userCard.waterPrice}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鐢甸噺鍗曚环: ${userCard.electricPrice}"
-                                    )
-                                    android.util.Log.d(
-                                        "NewCard2Activity",
-                                        "鍏呭�兼椂闂�: ${userCard.rechargeDate}"
-                                    )
-                                    android.util.Log.d("NewCard2Activity", "==================")
-
-                                    putExtra("userCard", userCard)
-                                    putExtra("operationTypeCode", CardOperationType.OpenCard.code)
-                                    putExtra("cardFee", cardFee)
-
-                                    startActivityForResult(this, REQUEST_CODE_NFC_WRITE)
-                                }
-                            } catch (e: Exception) {
-                                CrashReport.postCatchedException(e)
-                                Toast.makeText(
-                                    this@NewCard2Activity,
-                                    "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}",
-                                    Toast.LENGTH_SHORT
-                                ).show()
-                            }
-                        }
-                    } else {
-                        // 婵�娲诲け璐�
-                        Toast.makeText(
-                            this@NewCard2Activity,
-                            "寮�鍗″け璐�: ${response.msg}",
-                            Toast.LENGTH_SHORT
-                        ).show()
-                    }
-                }
-
-                override fun onError(e: Throwable?) {
-                    super.onError(e)
-                    // 璇锋眰寮傚父
-                    Toast.makeText(
-                        this@NewCard2Activity,
-                        "寮�鍗″け璐�: ${e?.message ?: "缃戠粶寮傚父"}",
-                        Toast.LENGTH_SHORT
-                    ).show()
-                }
-            }
-        )
-    }
-
-    override fun onResume() {
-        super.onResume()
-        // 寮�鍚墠鍙拌皟搴︾郴缁燂紝浼樺厛澶勭悊NFC鏍囩
-
-    }
-
-    override fun onPause() {
-        super.onPause()
-        // 鍏抽棴鍓嶅彴璋冨害绯荤粺
-
-    }
-
-    override fun onNfcBack(intent: Intent) {
-        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) {
-                            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()
-                }
-            } else {
-                Toast.makeText(
-                    this@NewCard2Activity,
-                    "鑾峰彇鍗″彿澶辫触",
-                    Toast.LENGTH_SHORT
-                ).show()
-            }
-        } else {
-            Toast.makeText(
-                this@NewCard2Activity,
-                "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
-                Toast.LENGTH_SHORT
-            ).show()
-        }
-
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        // 娓呯悊NFC宸ュ叿绫讳腑鐨凴xJava璁㈤槄锛岄槻姝㈠唴瀛樻硠婕�
-        try {
-            NfcReadHelper.getInstance(intent, this).clearDisposables()
-            NfcWreatHelper.getInstance(intent, this).clearDisposables()
-            // 纭繚鍋滄鍔ㄧ敾锛岄伩鍏嶅唴瀛樻硠婕�
-            binding.nfcProgressWheel.stopSpinning()
-        } catch (e: Exception) {
-            e.printStackTrace()
-        }
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (requestCode == REQUEST_CODE_NFC_WRITE && resultCode == RESULT_OK) {
-            // 鍐欏崱鎴愬姛锛屽叧闂綋鍓岮ctivity
-            finish()
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
index 26af596..6979b1d 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
@@ -1,17 +1,599 @@
 package com.dayu.general.activity
 
+import android.content.Intent
 import android.os.Bundle
-import android.view.LayoutInflater
-import com.dayu.baselibrary.activity.BaseActivity
+import android.text.Editable
+import android.text.TextWatcher
+import android.util.TypedValue
+import android.view.View
+import android.widget.RadioButton
+import android.widget.Toast
+import androidx.lifecycle.lifecycleScope
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.baselibrary.utils.MornyUtil
+import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
+import com.dayu.general.BaseApplication
+import com.dayu.general.R
+import com.dayu.general.bean.card.UserCard
+import com.dayu.general.bean.db.CardRegistrationBean
+import com.dayu.general.bean.net.ClientInfo
+import com.dayu.general.bean.net.NewCardDataResult
+import com.dayu.general.bean.net.PaymentMethod
+import com.dayu.general.dao.BaseDaoSingleton
 import com.dayu.general.databinding.ActivityNewCardGeBinding
+import com.dayu.general.net.ApiManager
+import com.dayu.general.net.BaseResponse
+import com.dayu.general.tool.BaseCommon.Companion.protocol
+import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1
+import com.dayu.general.tool.CardOperationType
+import com.dayu.general.tool.NfcReadHelper
+import com.dayu.general.tool.NfcWreatHelper
+import com.dayu.general.utils.DateUtils
+import com.tencent.bugly.crashreport.CrashReport
+import kotlinx.coroutines.launch
 
-class NewCardActivity:BaseActivity() {
-    var binding:ActivityNewCardGeBinding? = null
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        binding=  ActivityNewCardGeBinding.inflate(LayoutInflater.from(this))
-        setContentView(binding?.root)
+/**
+ * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
+ * Author: zuo
+ * Date: 2025/4/7
+ */
+class NewCardActivity : BaseNfcActivity() {
+
+    private lateinit var binding: ActivityNewCardGeBinding
+
+    // 鏀粯鏂瑰紡
+    private var paymentMethod: String = "鐜伴噾"
+
+    // 鏀粯鏂瑰紡ID
+    private var paymentId: String = ""
+
+    // 鏀粯鏂瑰紡鍒楄〃
+    private var paymentMethodList: List<PaymentMethod> = listOf()
+
+    // 鍗$墿鐞咺D
+    private var cardPhysicalId: String = ""
+
+    // 鐢ㄦ埛ID
+    private var userId: String = ""
+
+    // 瀹㈡埛ID
+    private var clientId: String = ""
+
+    private lateinit var clientInfo: ClientInfo
+
+    // 鏄惁宸茶鍗�
+    private var isReadCard: Boolean = false
+
+    private var orderId: String = ""
+
+    companion object {
+        private const val TAG = "NewCard2Activity"
+        private const val REQUEST_CODE_NFC_WRITE = 1001
     }
 
 
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        binding = ActivityNewCardGeBinding.inflate(layoutInflater)
+        setContentView(binding.root)
+
+        // 鑾峰彇浼犻�掔殑clientId鍙傛暟
+        clientId = intent.getStringExtra("clientId") ?: ""
+
+        initView()
+
+        // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
+        if (clientId.isNotEmpty()) {
+            getClientInfo(clientId)
+        }
+
+        // 鑾峰彇鏀粯鏂瑰紡
+        getPaymentMethods()
+        initListener()
+    }
+
+    private fun initView() {
+        // 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
+        binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) {
+            finish()
+        }
+
+        // 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
+        binding.nfcContainer.visibility = View.VISIBLE
+
+        // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
+        binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
+        binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
+    }
+
+    /**
+     * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
+     */
+    private fun getClientInfo(clientId: String) {
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "terminal/client/getTermOne/$clientId",
+            ClientInfo::class.java,
+            null,
+            object : SubscriberListener<BaseResponse<ClientInfo>>() {
+                override fun onNext(response: BaseResponse<ClientInfo>) {
+                    if (response.success) {
+                        clientInfo = response.content!!
+                        if (clientInfo != null) {
+                            // 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+                            displayClientInfo(clientInfo)
+                        } else {
+                            Toast.makeText(
+                                this@NewCardActivity,
+                                "鑾峰彇瀹㈡埛淇℃伅澶辫触: 杩斿洖鏁版嵁涓虹┖",
+                                Toast.LENGTH_SHORT
+                            ).show()
+                        }
+                    } else {
+                        Toast.makeText(
+                            this@NewCardActivity,
+                            "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${response.msg}",
+                            Toast.LENGTH_SHORT
+                        ).show()
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    Toast.makeText(
+                        this@NewCardActivity,
+                        "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
+                        Toast.LENGTH_SHORT
+                    ).show()
+                }
+            }
+        )
+    }
+
+    /**
+     * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+     */
+    private fun displayClientInfo(clientInfo: ClientInfo) {
+        // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
+        userId = clientInfo.clientId
+
+        // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
+        binding.newCardUserName.text = clientInfo.name
+        binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
+        binding.newCardFarmerCode.text = clientInfo.clientNum
+    }
+
+    /**
+     * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
+     */
+    private fun getPaymentMethods() {
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "terminal/paymentmethod/get",
+            Any::class.java,
+            null,
+            object : SubscriberListener<BaseResponse<Any>>() {
+                override fun onNext(response: BaseResponse<Any>) {
+                    if (response.success) {
+                        try {
+                            // 瀹夊叏鍦板鐞嗚繑鍥炵殑content锛屾湇鍔″櫒杩斿洖鐨勬槸ArrayList<LinkedHashMap>
+                            val paymentMethods = mutableListOf<PaymentMethod>()
+                            val content = response.content
+                            
+                            if (content is List<*>) {
+                                content.forEach { item ->
+                                    if (item is Map<*, *>) {
+                                        val id = item["id"]?.toString() ?: ""
+                                        val name = item["name"]?.toString() ?: ""
+                                        if (id.isNotEmpty() && name.isNotEmpty()) {
+                                            paymentMethods.add(PaymentMethod(id, name))
+                                        }
+                                    }
+                                }
+                            }
+                            
+                            if (paymentMethods.isNotEmpty()) {
+                                paymentMethodList = paymentMethods
+                                // 鏇存柊鏀粯鏂瑰紡鏄剧ず
+                                updatePaymentMethodRadioGroup()
+                            } else {
+                                Toast.makeText(
+                                    this@NewCardActivity,
+                                    "鑾峰彇鏀粯鏂瑰紡澶辫触锛氳繑鍥炴暟鎹负绌�",
+                                    Toast.LENGTH_SHORT
+                                ).show()
+                            }
+                        } catch (e: Exception) {
+                            android.util.Log.e("NewCard2Activity", "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触", e)
+                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁绫诲瀷: ${response.content?.javaClass?.name}")
+                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁鍐呭: ${response.content}")
+                            Toast.makeText(
+                                this@NewCardActivity,
+                                "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触: ${e.message}",
+                                Toast.LENGTH_SHORT
+                            ).show()
+                        }
+                    } else {
+                        Toast.makeText(
+                            this@NewCardActivity,
+                            "鑾峰彇鏀粯鏂瑰紡澶辫触: ${response.msg}",
+                            Toast.LENGTH_SHORT
+                        ).show()
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
+                    Toast.makeText(
+                        this@NewCardActivity,
+                        "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
+                        Toast.LENGTH_SHORT
+                    ).show()
+                }
+            }
+        )
+    }
+
+    /**
+     * 鏇存柊鏀粯鏂瑰紡RadioGroup
+     */
+    private fun updatePaymentMethodRadioGroup() {
+        // 娓呯┖鍘熸湁RadioButton
+        binding.newCardPaymentMethod.removeAllViews()
+
+        // 鍔ㄦ�佹坊鍔燫adioButton
+        paymentMethodList.forEachIndexed { index, method ->
+            val radioButton = RadioButton(this)
+            radioButton.id = View.generateViewId() // 鐢熸垚鍞竴ID
+            radioButton.layoutParams = android.widget.LinearLayout.LayoutParams(
+                0,
+                resources.getDimensionPixelSize(R.dimen.dimen_40),
+                1.0f
+            )
+
+            // 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
+            if (index < paymentMethodList.size - 1) {
+                (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
+                paymentMethod = method.name
+                paymentId = method.id
+            }
+        }
+    }
+
+    /**
+     * 鍒涘缓闄愬埗杈撳叆涓や綅灏忔暟鐨凾extWatcher
+     */
+    private fun createDecimalTextWatcher(): TextWatcher {
+        return object : TextWatcher {
+            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
+                // 涓嶉渶瑕佸疄鐜�
+            }
+
+            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+                // 涓嶉渶瑕佸疄鐜�
+            }
+
+            override fun afterTextChanged(s: Editable?) {
+                if (s == null || s.isEmpty()) return
+
+                val str = s.toString()
+                // 濡傛灉杈撳叆鐨勪笉鏄湁鏁堢殑灏忔暟鏍煎紡锛岃繘琛屽鐞�
+                if (str.contains(".")) {
+                    val decimalIndex = str.indexOf(".")
+                    // 濡傛灉灏忔暟鐐瑰悗瓒呰繃涓や綅锛屾埅鍙栧埌涓や綅
+                    if (decimalIndex >= 0 && str.length - decimalIndex > 3) {
+                        s.delete(decimalIndex + 3, str.length)
+                    }
+                }
+            }
+        }
+    }
+
+    private fun initListener() {
+        // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
+        binding.newCardPaymentMethod.setOnCheckedChangeListener { group, checkedId ->
+            // 鏍规嵁閫変腑鐨処D鑾峰彇鏀粯鏂瑰紡
+            for (i in 0 until group.childCount) {
+                val radioButton = group.getChildAt(i) as RadioButton
+                if (radioButton.id == checkedId) {
+                    paymentMethod = radioButton.text.toString()
+                    paymentId = paymentMethodList[i].id
+                    break
+                }
+            }
+        }
+
+        // 璁剧疆寮�鍗℃寜閽偣鍑荤洃鍚�
+        binding.newCardRegistBtn.setOnClickListener {
+            if (cardPhysicalId.isEmpty()) {
+                // 濡傛灉灏氭湭璇诲彇鍒板崱鐗╃悊ID锛屾樉绀篘FC璇诲崱鐣岄潰
+                binding.nfcContainer.visibility = View.VISIBLE
+            } else {
+                // 宸茶鍙栧埌鍗$墿鐞咺D锛岃繘琛屽紑鍗℃搷浣�
+                registerNewCard()
+            }
+        }
+    }
+
+    /**
+     * 娉ㄥ唽鏂板崱
+     */
+    private fun registerNewCard() {
+        // 鑾峰彇鍏呭�奸噾棰�
+        val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
+        val rechargeAmount = if (rechargeAmountStr.isEmpty()) 0.0 else rechargeAmountStr.toDouble()
+
+        // 鑾峰彇宸ユ湰璐�
+        val cardFeeStr = binding.newCardCardFee.text.toString()
+        val cardFee = if (cardFeeStr.isEmpty()) 0 else cardFeeStr.toInt()
+
+        val remark = binding.newCardRemark.text.toString()
+
+        // 鏋勫缓璇锋眰鍙傛暟
+        val params = HashMap<String, Any>()
+        params["cardAddr"] = cardPhysicalId // 姘村崱鍦板潃锛堢墿鐞咺D锛�
+        params["clientId"] = clientId // 鍐滄埛ID
+        params["cardCost"] = cardFee  // 璐崱閲戦锛堝伐鏈垂锛�(鍏�)
+        params["amount"] = rechargeAmount  // 鍏呭�奸噾棰�(鍏�)
+        params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
+        params["remarks"] = remark // 澶囨敞
+        params["protocol"] = protocol // 鍗忚
+        params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
+
+        // 鎵ц鍗$墖婵�娲籄PI璇锋眰
+        ApiManager.getInstance().requestPostLoading(
+            this,
+            "terminal/card/termActiveCard",
+            NewCardDataResult::class.java,
+            params,
+            object : SubscriberListener<BaseResponse<NewCardDataResult>>() {
+                override fun onNext(response: BaseResponse<NewCardDataResult>) {
+                    if (response.success) {
+                        orderId = response.content?.orderNo.toString()
+                        // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴�
+                        val cardRegistration = CardRegistrationBean(
+                            cardNumber = cardPhysicalId,
+                            userName = binding.newCardUserName.text.toString(),
+                            idCard = binding.newCardIdCard.text.toString(),
+                            clientId = clientId,
+                            cardFee = cardFee,
+                            remark = binding.newCardRemark.text.toString(),
+                            paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
+                            isReported = true,
+                            isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
+                            operatorId = orderId,
+
+                            )
+
+                        // 浣跨敤鍗忕▼鍦ㄥ悗鍙扮嚎绋嬩腑淇濆瓨鏁版嵁
+                        lifecycleScope.launch {
+                            try {
+                                BaseDaoSingleton.getInstance(this@NewCardActivity)
+                                    .cardRegistrationDao().insert(cardRegistration)
+                                setResult(RESULT_OK)
+                                Intent(this@NewCardActivity, NfcWreatActivity::class.java).apply {
+                                    putExtra("cardType", USER_CARD_TYPE_1)
+                                    putExtra("orderNumber", orderId)
+                                    putExtra("cardAddr", cardPhysicalId)
+                                    var userCard = UserCard()
+                                    userCard.areaNumber =
+                                        response.content?.cardNum?.substring(0, 12).toString()
+                                    userCard.userCode = clientInfo.clientNum
+                                    userCard.phoneNumber = clientInfo.phone
+                                    userCard.userCodeNumber =
+                                        response.content?.cardNum?.substring(12)?.toInt()!!
+                                    userCard.projectCode = response.content?.projectNo!!
+                                    userCard.balance =
+                                        MornyUtil.changeY2F(response.content?.balance)
+//                                    userCard.surplusWater = response.content?.surplusWater?.toInt()!!
+                                    userCard.waterPrice =
+                                        MornyUtil.changeY2F(response.content?.waterPrice)
+                                    userCard.electricPrice =
+                                        MornyUtil.changeY2F(response.content?.waterPrice)
+                                    userCard.rechargeDate =
+                                        DateUtils.parseStringToCalendar(response.content?.time)
+
+                                    // 杈撳嚭userCard鐨勬墍鏈変俊鎭埌鏃ュ織
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "=== 寮�鍗serCard淇℃伅 ==="
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍗$墖绫诲瀷: ${userCard.cardType}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢ㄦ埛缂栧彿: ${userCard.userCode}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鎵嬫満鍙�: ${userCard.phoneNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "椤圭洰缂栫爜: ${userCard.projectCode}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍗″唴浣欓: ${userCard.balance}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍓╀綑姘撮噺: ${userCard.surplusWater}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "姘撮噺鍗曚环: ${userCard.waterPrice}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢甸噺鍗曚环: ${userCard.electricPrice}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍏呭�兼椂闂�: ${userCard.rechargeDate}"
+                                    )
+                                    android.util.Log.d("NewCard2Activity", "==================")
+
+                                    putExtra("userCard", userCard)
+                                    putExtra("operationTypeCode", CardOperationType.OpenCard.code)
+                                    putExtra("cardFee", cardFee)
+                                    putExtra("clientInfo",clientInfo)
+
+                                    startActivityForResult(this, REQUEST_CODE_NFC_WRITE)
+                                }
+                            } catch (e: Exception) {
+                                CrashReport.postCatchedException(e)
+                                Toast.makeText(
+                                    this@NewCardActivity,
+                                    "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}",
+                                    Toast.LENGTH_SHORT
+                                ).show()
+                            }
+                        }
+                    } else {
+                        // 婵�娲诲け璐�
+                        Toast.makeText(
+                            this@NewCardActivity,
+                            "寮�鍗″け璐�: ${response.msg}",
+                            Toast.LENGTH_SHORT
+                        ).show()
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    // 璇锋眰寮傚父
+                    Toast.makeText(
+                        this@NewCardActivity,
+                        "寮�鍗″け璐�: ${e?.message ?: "缃戠粶寮傚父"}",
+                        Toast.LENGTH_SHORT
+                    ).show()
+                }
+            }
+        )
+    }
+
+    override fun onResume() {
+        super.onResume()
+        // 寮�鍚墠鍙拌皟搴︾郴缁燂紝浼樺厛澶勭悊NFC鏍囩
+
+    }
+
+    override fun onPause() {
+        super.onPause()
+        // 鍏抽棴鍓嶅彴璋冨害绯荤粺
+
+    }
+
+    override fun onNfcBack(intent: Intent) {
+        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) {
+                            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@NewCardActivity,
+                                "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+                                Toast.LENGTH_LONG
+                            ).show()
+                        }
+                    }
+                } catch (e: Exception) {
+                    // 澶勭悊寮傚父鎯呭喌
+                    CrashReport.postCatchedException(e)
+                    e.printStackTrace()
+                }
+            } else {
+                Toast.makeText(
+                    this@NewCardActivity,
+                    "鑾峰彇鍗″彿澶辫触",
+                    Toast.LENGTH_SHORT
+                ).show()
+            }
+        } else {
+            Toast.makeText(
+                this@NewCardActivity,
+                "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
+                Toast.LENGTH_SHORT
+            ).show()
+        }
+
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        // 娓呯悊NFC宸ュ叿绫讳腑鐨凴xJava璁㈤槄锛岄槻姝㈠唴瀛樻硠婕�
+        try {
+            NfcReadHelper.getInstance(intent, this).clearDisposables()
+            NfcWreatHelper.getInstance(intent, this).clearDisposables()
+            // 纭繚鍋滄鍔ㄧ敾锛岄伩鍏嶅唴瀛樻硠婕�
+            binding.nfcProgressWheel.stopSpinning()
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (requestCode == REQUEST_CODE_NFC_WRITE && resultCode == RESULT_OK) {
+            // 鍐欏崱鎴愬姛锛屽叧闂綋鍓岮ctivity
+            finish()
+        }
+    }
+
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
index fbe415c..ab3ae13 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
@@ -14,6 +14,7 @@
 import com.dayu.general.bean.card.DebugCard
 import com.dayu.general.bean.card.UserCard
 import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.bean.net.ClientInfo
 import com.dayu.general.dao.BaseDaoSingleton
 import com.dayu.general.databinding.ActivityNfcWriteGeBinding
 import com.dayu.general.net.ApiManager
@@ -100,6 +101,8 @@
     private var projectNumber: String = ""
 
     private var cardInfo: CardInfoResult? = null
+    
+    private var clientInfo: ClientInfo? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -120,6 +123,7 @@
         orderNumber = intent?.getStringExtra("orderNumber") ?: ""
         operationType = CardOperationType.fromCode(operationTypeCode)
         cardInfo = intent?.getSerializableExtra("cardInfo") as? CardInfoResult
+        clientInfo = intent?.getSerializableExtra("clientInfo") as? ClientInfo
 
         // 鑾峰彇鍏呭�肩浉鍏抽噾棰�
         rechargeAmount = intent?.getDoubleExtra("rechargeAmount", 0.0) ?: 0.0
@@ -681,6 +685,10 @@
                             putExtra("cardInfo", it)
                         }
 
+                        // 浼犻�掑鎴蜂俊鎭璞�
+                        clientInfo?.let {
+                            putExtra("clientInfo", it)
+                        }
 
                         startActivity(this)
                     }
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
index a4282a2..b47b11b 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -91,7 +91,7 @@
         userAdapter?.setOnItemClickListener { user ->
             // 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢
             // 浼犻�掔敤鎴蜂俊鎭埌寮�鍗$晫闈�
-            val intent = Intent(this, NewCard2Activity::class.java)
+            val intent = Intent(this, NewCardActivity::class.java)
             intent.putExtra("clientId", user.clientId)
             startActivity(intent)
         }
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
index 6ceaf69..30f37a4 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
@@ -1,5 +1,7 @@
 package com.dayu.general.bean.net
 
+import java.io.Serializable
+
 // 鏀粯鏂瑰紡鏁版嵁绫�
 data class PaymentMethod(
     val id: String,
@@ -30,7 +32,7 @@
 }
 
 // 鐢ㄦ埛淇℃伅鏁版嵁绫�
-data class ClientInfo(
+data class ClientInfo (
     val clientId: String,
     val clientNum: String,
     val name: String,
@@ -41,4 +43,4 @@
     val address: String,
     val cardCount: Int,
     val operateDt: String
-)
+) : Serializable

--
Gitblit v1.8.0