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