From cece79bf75a9b672b33b772acffca209eecfc8f2 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 08:27:25 +0800
Subject: [PATCH] refactor(generallibrary):优化补卡界面布局和样式- 调整了卡片信息展示区域的样式,包括背景色、文字颜色等 - 优化了输入区域的布局结构,减小了控件间距和尺寸- 更新了确认补卡按钮的样式 - 统一了文字大小和颜色,提高了可读性

---
 generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt |  284 ++++++++++----------------------------------------------
 1 files changed, 53 insertions(+), 231 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
index f7c6dc0..fd354f1 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
@@ -3,23 +3,17 @@
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.util.TypedValue
-import android.view.View
-import android.widget.RadioButton
-import android.widget.Toast
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
 import com.dayu.baselibrary.utils.MornyUtil
 import com.dayu.baselibrary.utils.ToastUtil
 import com.dayu.baselibrary.view.TipDialog
 import com.dayu.baselibrary.view.TitleBar
 import com.dayu.general.BaseApplication
-import com.dayu.general.R
 import com.dayu.general.bean.card.UserCard
-import com.dayu.general.bean.net.CardInfoResult
 import com.dayu.general.bean.net.CardInfoByClientResult
+import com.dayu.general.bean.net.CardInfoResult
 import com.dayu.general.bean.net.CardReplaceResult
 import com.dayu.general.bean.net.PaymentMethod
-import com.dayu.general.bean.net.PaymentMethodResponse
 import com.dayu.general.databinding.ActivityCardReplaceBinding
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
@@ -38,23 +32,21 @@
     private var cardInfo: CardInfoResult? = null
     private var cardInfoByClient: CardInfoByClientResult? = null
     private var userCard: UserCard? = null
-    private var clientNum: String? = null
+    private var cardNum: String? = null
     private var newCardNumber: String? = null // 鏂板崱鍗″彿
 
     // 鏀粯鏂瑰紡鐩稿叧灞炴��
     private var paymentMethod: String = "鐜伴噾"
-    private var paymentId: Long = 0
+    private var paymentId: String = ""
     private var paymentMethodList: List<PaymentMethod> = listOf()
 
     companion object {
         /**
          * 鍚姩琛ュ崱Activity
          */
-        fun start(context: Context, clientNum: String? = null) {
+        fun start(context: Context, clientNum: String) {
             val intent = Intent(context, CardReplaceActivity::class.java)
-            clientNum?.let {
-                intent.putExtra("clientNum", it)
-            }
+            intent.putExtra("cardNum", clientNum)
             context.startActivity(intent)
         }
     }
@@ -65,12 +57,10 @@
         setContentView(binding.root)
 
         // 鑾峰彇浼犻�掔殑clientNum鍙傛暟
-        clientNum = intent.getStringExtra("clientNum")
+        cardNum = intent.getStringExtra("cardNum")
 
         initView()
-        // 鑾峰彇鏀粯鏂瑰紡
-        getPaymentMethods()
-        
+
         // 鏃犺鏄惁鏈塩lientNum锛岄兘鍏堟樉绀鸿鍗$晫闈紝绛夊緟鐢ㄦ埛鍒锋柊鍗�
         resetToReadingState()
     }
@@ -87,100 +77,8 @@
         }
     }
 
-    /**
-     * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-     */
-    private fun getPaymentMethods() {
-        ApiManager.getInstance().requestGetLoading(
-            this,
-            "sell/paymentmethod/get",
-            PaymentMethodResponse::class.java,
-            null,
-            object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
-                override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
-                    if (response.success) {
-                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-                        val paymentMethods = response.content?.obj ?: listOf()
-                        if (paymentMethods.isNotEmpty()) {
-                            paymentMethodList = paymentMethods
-                            // 鏇存柊鏀粯鏂瑰紡鏄剧ず
-                            updatePaymentMethodRadioGroup()
-                        }
-                    } else {
-                        Toast.makeText(
-                            this@CardReplaceActivity,
-                            "鑾峰彇鏀粯鏂瑰紡澶辫触: ${response.msg}",
-                            Toast.LENGTH_SHORT
-                        ).show()
-                    }
-                }
 
-                override fun onError(e: Throwable?) {
-                    super.onError(e)
-                    Toast.makeText(
-                        this@CardReplaceActivity,
-                        "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
-                        Toast.LENGTH_SHORT
-                    ).show()
-                }
-            }
-        )
-    }
 
-    /**
-     * 鏇存柊鏀粯鏂瑰紡RadioGroup
-     */
-    private fun updatePaymentMethodRadioGroup() {
-        // 娓呯┖鍘熸湁RadioButton
-        binding.paymentMethodGroup.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.paymentMethodGroup.addView(radioButton)
-
-            // 榛樿閫変腑绗竴涓�
-            if (index == 0) {
-                radioButton.isChecked = true
-                paymentMethod = method.name
-                paymentId = method.id
-            }
-        }
-
-        // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
-        binding.paymentMethodGroup.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
-                }
-            }
-        }
-    }
 
     /**
      * 閲嶇疆鍒拌鍗$姸鎬�
@@ -194,7 +92,7 @@
         cardInfoByClient = null
         newCardNumber = null
         binding.etCardCost.setText("")
-        binding.etReturnAmount.setText("0")
+        binding.etReturnAmount.setText("")
     }
 
     /**
@@ -244,7 +142,7 @@
             }
             val readCardNumber = parts[0]
             val cardType = parts[1]
-            
+
             if (readCardNumber.isBlank()) {
                 showConfirmDialog("鍗″彿涓虹┖锛屾棤娉曡繘琛屾搷浣滐紝璇烽噸鏂板埛鍗�") {
                 }
@@ -254,27 +152,35 @@
             // 淇濆瓨鏂板崱鍗″彿
             this.newCardNumber = readCardNumber
 
-            // 鏍规嵁鏄惁鏈塩lientNum鍙傛暟鍐冲畾鑾峰彇鍗′俊鎭殑鏂瑰紡
-            if (clientNum != null) {
-                // 濡傛灉鏈塩lientNum锛屼娇鐢╟lientNum鑾峰彇鍗′俊鎭�
-                getCardInfoByClientNum(clientNum!!)
-            } else {
-                // 濡傛灉娌℃湁clientNum锛屾牴鎹崱鐗囩被鍨嬭繘琛屽鐞�
-                when (cardType) {
-                    CardCommon.USER_CARD_TYPE_1,
-                    CardCommon.USER_CARD_TYPE_2,
-                    CardCommon.USER_CARD_TYPE_3 -> {
-                        // 鐢ㄦ埛鍗★細瑙f瀽鍗″唴鏁版嵁骞惰皟鐢ㄦ帴鍙�
-                        showConfirmDialog("璇ュ崱鐗囩被鍨嬩笉鏀寔琛ュ崱鎿嶄綔") {
+            when (cardType) {
+                "00" -> {
+                    // 鐧藉崱鎵嶅彲浠ヨˉ鍗�
+                    if (cardNum != null) {
+                        // 濡傛灉鏈塩lientNum锛屼娇鐢╟lientNum鑾峰彇鍗′俊鎭�
+                        getCardInfoByClientNum(cardNum!!)
+                    } else {
+                        showConfirmDialog("鑾峰彇鏃у崱淇℃伅鏁版嵁澶辫触") {
                             resetToReadingState()
                         }
                     }
-                    else -> {
-                        // 绠$悊绫诲崱涓嶆敮鎸佽ˉ鍗�
-                        handleUserCard(readCardNumber, cardType, nfcAdapter)
+                }
+
+                CardCommon.USER_CARD_TYPE_1,
+                CardCommon.USER_CARD_TYPE_2,
+                CardCommon.USER_CARD_TYPE_3 -> {
+                    // 鐢ㄦ埛鍗★細瑙f瀽鍗″唴鏁版嵁骞惰皟鐢ㄦ帴鍙�
+                    showConfirmDialog("鐢ㄦ埛鍗′笉鏀寔琛ュ崱") {
+                        resetToReadingState()
+                    }
+                }
+
+                else -> {
+                    showConfirmDialog("褰撳墠闈炵櫧鍗�") {
+                        resetToReadingState()
                     }
                 }
             }
+
         } catch (e: Exception) {
             showConfirmDialog("璇诲崱寮傚父锛�${e.message}") {
             }
@@ -282,102 +188,6 @@
         }
     }
 
-    /**
-     * 澶勭悊鐢ㄦ埛鍗�
-     */
-    private fun handleUserCard(cardNumber: String, cardType: String, nfcAdapter: NfcReadHelper) {
-        // 瑙f瀽鐢ㄦ埛鍗℃暟鎹�
-        val userCard = nfcAdapter.getUserCardData()
-        if (userCard == null) {
-            showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") {
-            }
-            return
-        }
-
-        // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織
-        android.util.Log.d("CardReplaceActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===")
-        android.util.Log.d("CardReplaceActivity", "鍗″彿: $cardNumber")
-        android.util.Log.d("CardReplaceActivity", "鍗$墖绫诲瀷: $cardType")
-        android.util.Log.d("CardReplaceActivity", "鍗″唴浣欓: ${userCard.balance}")
-        android.util.Log.d("CardReplaceActivity", "==================")
-        this.userCard = userCard
-        // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
-        getCardInfo(cardNumber, cardType, userCard)
-    }
-
-    /**
-     * 鑾峰彇鍗$墖璇︾粏淇℃伅锛堢敤鎴峰崱涓撶敤锛�
-     */
-    private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard) {
-        val map = mutableMapOf<String, Any>()
-        map["cardAddr"] = cardNumber
-        ApiManager.getInstance().requestGetLoading(
-            this,
-            "terminal/card/readCard",
-            CardInfoResult::class.java,
-            map,
-            object : SubscriberListener<BaseResponse<CardInfoResult>>() {
-                override fun onNext(t: BaseResponse<CardInfoResult>) {
-                    if (t.success) {
-                        // 璇诲崱鎴愬姛锛屾樉绀虹敤鎴峰崱璇︾粏淇℃伅
-                        showUserCardInfo(t.content, cardNumber, cardType, userCard)
-                    } else {
-                        // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐�
-                        handleCardInfoError(t.code, t.msg)
-                    }
-                }
-
-                override fun onError(e: Throwable?) {
-                    super.onError(e)
-                    showConfirmDialog("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") {
-                    }
-                }
-            }
-        )
-    }
-
-    /**
-     * 鏄剧ず鐢ㄦ埛鍗$墖淇℃伅锛堝寘鍚崱鍐呮暟鎹拰鎺ュ彛杩斿洖鏁版嵁锛�
-     */
-    private fun showUserCardInfo(
-        cardInfo: CardInfoResult?,
-        cardNumber: String,
-        cardType: String,
-        userCard: UserCard
-    ) {
-        // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩熷拰搴曢儴鎸夐挳
-        binding.scrollReadCard.visibility = android.view.View.GONE
-        binding.cardInfoContainer.visibility = android.view.View.VISIBLE
-        binding.bottomButtonContainer.visibility = android.view.View.VISIBLE
-
-        this.cardInfo = cardInfo
-        this.cardNumber = cardNumber
-        
-        // 鏄剧ず鏂板崱鍗″彿
-        binding.tvCurrentCardAddress.text = newCardNumber ?: cardNumber
-
-        // 鏄剧ず鏈嶅姟鍣ㄦ暟鎹�
-        cardInfo?.let { info ->
-            binding.tvUserName.text = info.userName ?: "鏈煡"
-            binding.tvPhone.text = info.phone ?: "鏈粦瀹�"
-
-            // 鏍规嵁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)
-        }
-
-        userCard.let { card ->
-            // 浣欓杞崲涓哄厓锛堝師濮嬫暟鎹彲鑳芥槸鍒嗭級
-            binding.tvCardBalance.text = MornyUtil.changeF2Y(card.balance) + "鍏�"
-        }
-    }
 
     /**
      * 澶勭悊鍗′俊鎭幏鍙栭敊璇�
@@ -463,7 +273,7 @@
 
         val map = mutableMapOf<String, Any>()
         map["cardAddr"] = newCardNumber!! // 浣跨敤鏂板崱鍗″彿
-        
+
         // 鏍规嵁鏁版嵁婧愰�夋嫨cardNum鍙傛暟
         val cardNum = when {
             cardInfo != null -> cardInfo!!.cardNum.toString()
@@ -471,7 +281,7 @@
             else -> cardNumber ?: newCardNumber!!
         }
         map["cardNum"] = cardNum
-        
+
         map["cardCost"] = cardCost
         map["returnAmount"] = returnAmount  // 浣跨敤杩斿洖閲戦
         map["paymentId"] = paymentId // 浣跨敤閫変腑鐨勬敮浠樻柟寮廔D
@@ -488,7 +298,12 @@
                 override fun onNext(t: BaseResponse<CardReplaceResult>) {
                     if (t.success && t.content != null) {
                         // 琛ュ崱鎴愬姛锛岃烦杞埌鍐欏崱鐣岄潰
-                        startWriteCardActivity(t.content!!, cardCost, returnAmount, createUserCardFromData())
+                        startWriteCardActivity(
+                            t.content!!,
+                            cardCost,
+                            returnAmount,
+                            createUserCardFromData()
+                        )
                     } else {
                         // 琛ュ崱澶辫触
                         val errorMsg = if (t.msg.isNullOrBlank()) "琛ュ崱澶辫触锛岃閲嶈瘯" else t.msg
@@ -520,6 +335,7 @@
                     phoneNumber = cardInfoByClient!!.phone.toString()
                 }
             }
+
             else -> UserCard() // 杩斿洖绌虹殑UserCard瀵硅薄
         }
     }
@@ -568,13 +384,13 @@
     /**
      * 鏍规嵁瀹㈡埛缂栧彿鑾峰彇鍗′俊鎭�
      */
-    private fun getCardInfoByClientNum(clientNum: String) {
+    private fun getCardInfoByClientNum(cardNum: String) {
         val map = mutableMapOf<String, Any>()
-        map["clientNum"] = clientNum
+        map["cardNum"] = cardNum
 
         ApiManager.getInstance().requestGetLoading(
             this,
-            "terminal/card/getcardbyclientnum",
+            "terminal/card/getcardbycardnum",
             CardInfoByClientResult::class.java,
             map,
             object : SubscriberListener<BaseResponse<CardInfoByClientResult>>() {
@@ -610,11 +426,17 @@
         binding.bottomButtonContainer.visibility = android.view.View.VISIBLE
 
         // 鏄剧ず鏂板崱鍗″彿锛堝鏋滃凡璇诲彇鍒版柊鍗★級
-        binding.tvCurrentCardAddress.text = newCardNumber ?: cardInfo.cardNum
-        
+        binding.tvCurrentCardAddress.text = newCardNumber ?: ""
+
         // 鏄剧ず鍗′俊鎭�
         binding.tvUserName.text = cardInfo.clientName
         binding.tvPhone.text = cardInfo.phone.toString()
+        
+        // 鏄剧ず鍗″彿
+        binding.tvCardNumber.text = cardInfo.cardNum ?: "--"
+        
+        // 鏄剧ず瀹㈡埛缂栧彿
+        binding.tvCustomerId.text = cardInfo.clientNum ?: "--"
 
         // 鏍规嵁cardState瀛楁鏄剧ず鐘舵��
         val (statusText, statusColor) = when (cardInfo.cardState) {
@@ -629,7 +451,7 @@
 
         // 鏄剧ず浣欓
         binding.tvCardBalance.text = "${cardInfo.money}鍏�"
-        
+
         // 璁剧疆cardNumber鐢ㄤ簬鍚庣画API璋冪敤
         cardNumber = cardInfo.cardNum
     }

--
Gitblit v1.8.0