From 08bfe3072377b53c60e0952f00c26bce2e5b4bc0 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 18 六月 2025 17:05:55 +0800 Subject: [PATCH] feat(card): 添加卡片返还功能- 新增 CardReturnActivity 用于执行卡片返还操作 - 在 BSCardFragment 中添加返还按钮,跳转到 CardReturnActivity - 在 CardOperationType 中添加 ReturnCard 类型 - 修改 CardReadActivity,优化卡片信息显示逻辑 - 更新 CardWriteSuccessActivity,支持返还成功提示 - 新增 ic_morny_back 图标用于返还操作 --- generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt | 99 ++++++++++++++++++++++++++++--------------------- 1 files changed, 57 insertions(+), 42 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt index 271b476..986451b 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt @@ -4,16 +4,16 @@ import android.content.Intent import android.os.Bundle import com.dayu.baselibrary.net.subscribers.SubscriberListener -import com.dayu.baselibrary.utils.ToastUtil +import com.dayu.baselibrary.utils.MornyUtil import com.dayu.baselibrary.view.TipDialog import com.dayu.baselibrary.view.TitleBar +import com.dayu.general.bean.card.UserCard import com.dayu.general.bean.net.CardInfoResult import com.dayu.general.databinding.ActivityCardReadBinding import com.dayu.general.net.ApiManager import com.dayu.general.net.BaseResponse -import com.dayu.general.tool.NfcReadHelper -import com.dayu.general.bean.card.UserCard import com.dayu.general.tool.CardCommon +import com.dayu.general.tool.NfcReadHelper /** * @author: zuo @@ -38,18 +38,16 @@ super.onCreate(savedInstanceState) binding = ActivityCardReadBinding.inflate(layoutInflater) setContentView(binding.root) - + initView() } private fun initView() { - // 璁剧疆鏍囬 - binding.titleBar.setCenterText("璇诲崱") // 璁剧疆TitleBar鐨勮繑鍥炴寜閽偣鍑讳簨浠� binding.titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE) { finish() } - + } @@ -73,8 +71,8 @@ } override fun onNfcBack(intent: Intent?) { - intent?.let { - handleNfcIntent(it) + intent?.let { + handleNfcIntent(it) } ?: run { showConfirmDialog("NFC鏁版嵁寮傚父锛岃閲嶆柊鍒峰崱") { } @@ -117,12 +115,13 @@ // 鏍规嵁鍗$墖绫诲瀷杩涜涓嶅悓澶勭悊 when (cardType) { - CardCommon.USER_CARD_TYPE_1, - CardCommon.USER_CARD_TYPE_2, + CardCommon.USER_CARD_TYPE_1, + CardCommon.USER_CARD_TYPE_2, CardCommon.USER_CARD_TYPE_3 -> { // 鐢ㄦ埛鍗★細瑙f瀽鍗″唴鏁版嵁骞惰皟鐢ㄦ帴鍙� handleUserCard(cardNumber, cardType, nfcAdapter) } + else -> { // 绠$悊绫诲崱锛氭樉绀哄崱鐗囩被鍨嬩俊鎭� handleManagementCard(cardNumber, cardType) @@ -146,6 +145,23 @@ } return } + binding.tvCardNumber.text = cardNumber + // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織 + android.util.Log.d("CardReadActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===") + android.util.Log.d("CardReadActivity", "鍗″彿: $cardNumber") + android.util.Log.d("CardReadActivity", "鍗$墖绫诲瀷: $cardType") + android.util.Log.d("CardReadActivity", "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}") + android.util.Log.d("CardReadActivity", "鐢ㄦ埛缂栧彿: ${userCard.userCode}") + android.util.Log.d("CardReadActivity", "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}") + android.util.Log.d("CardReadActivity", "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}") + android.util.Log.d("CardReadActivity", "鎵嬫満鍙�: ${userCard.phoneNumber}") + android.util.Log.d("CardReadActivity", "椤圭洰缂栫爜: ${userCard.projectCode}") + android.util.Log.d("CardReadActivity", "鍗″唴浣欓: ${userCard.balance}") + android.util.Log.d("CardReadActivity", "鍓╀綑姘撮噺: ${userCard.surplusWater}") + android.util.Log.d("CardReadActivity", "姘撮噺鍗曚环: ${userCard.waterPrice}") + android.util.Log.d("CardReadActivity", "鐢甸噺鍗曚环: ${userCard.electricPrice}") + android.util.Log.d("CardReadActivity", "鍏呭�兼椂闂�: ${userCard.rechargeDate}") + android.util.Log.d("CardReadActivity", "==================") // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅 getCardInfo(cardNumber, cardType, userCard) @@ -156,7 +172,7 @@ */ private fun handleManagementCard(cardNumber: String, cardType: String) { val cardTypeName = getCardTypeName(cardType) - + // 鏄剧ず绠$悊鍗′俊鎭� showManagementCardInfo(cardNumber, cardTypeName) } @@ -168,13 +184,12 @@ // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩� binding.cardReadLL.visibility = android.view.View.GONE binding.cardInfoContainer.visibility = android.view.View.VISIBLE - - + // 鏄剧ず鍩烘湰淇℃伅 - binding.tvCardNumber.text = cardNumber + binding.tvCardType.text = cardTypeName - + // 闅愯棌鐢ㄦ埛鍗$壒鏈夌殑瀛楁 binding.llCardBalance.visibility = android.view.View.GONE binding.llUserNumber.visibility = android.view.View.GONE @@ -238,42 +253,39 @@ /** * 鏄剧ず鐢ㄦ埛鍗$墖淇℃伅锛堝寘鍚崱鍐呮暟鎹拰鎺ュ彛杩斿洖鏁版嵁锛� */ - private fun showUserCardInfo(cardInfo: CardInfoResult?, cardNumber: String, cardType: String, userCard: UserCard) { + private fun showUserCardInfo( + cardInfo: CardInfoResult?, + cardNumber: String, + cardType: String, + userCard: UserCard + ) { // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩� binding.cardReadLL.visibility = android.view.View.GONE binding.cardInfoContainer.visibility = android.view.View.VISIBLE val cardTypeName = getCardTypeName(cardType) - + // 鏄剧ず鍗″唴鏁版嵁 - binding.tvCardNumber.text = cardNumber + binding.tvCardType.text = cardTypeName - // 鏄剧ず鐢ㄦ埛鍗$壒鏈夊瓧娈� binding.llCardBalance.visibility = android.view.View.VISIBLE binding.llUserNumber.visibility = android.view.View.VISIBLE binding.llCardStatus.visibility = android.view.View.VISIBLE - + userCard.let { card -> // 浣欓杞崲涓哄厓锛堝師濮嬫暟鎹彲鑳芥槸鍒嗭級 - val balanceInYuan = if (card.balance > 1000) { - String.format("%.2f", card.balance / 100.0) - } else { - card.balance.toString() - } - binding.tvCardBalance.text = "${balanceInYuan}鍏�" - + + binding.tvCardBalance.text = MornyUtil.changeF2Y(card.balance.toInt()) + "鍏�" + // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙� - binding.tvUserNumber.text = card.getMyUserCode() - - // 鍗$墖鐘舵�侊紙鍋囪姝e父鐘舵�侊紝鍥犱负UserCard涓病鏈夌姸鎬佸瓧娈碉級 - binding.tvCardStatus.text = "姝e父" - binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#4CAF50")) - + binding.tvUserNumber.text = cardInfo?.cardNum + // 鍏呭�兼椂闂翠綔涓烘渶鍚庝娇鐢ㄦ椂闂� if (card.rechargeDate != null) { binding.llLastUseTime.visibility = android.view.View.VISIBLE - val dateFormat = java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()) + val dateFormat = + java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()) binding.tvLastUseTime.text = dateFormat.format(card.rechargeDate!!.time) } else { binding.llLastUseTime.visibility = android.view.View.GONE @@ -286,14 +298,16 @@ binding.tvPhone.text = info.phone ?: "鏈粦瀹�" binding.tvIdCard.text = info.userCode ?: "鏈綍鍏�" // 浣跨敤userCode浣滀负韬唤璇佸彿鐨勬浛浠� - // 鏍规嵁status瀛楁鏄剧ず鐘舵�� - val statusText = when (info.status) { - 1 -> "姝e父" - 2 -> "鎸傚け" - 3 -> "閿佸畾" - else -> "鏈煡" + // 鏍规嵁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) } } @@ -305,6 +319,7 @@ "1001" -> { "璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣溿��" } + else -> { when { msg.isNullOrBlank() -> "鑾峰彇鍗′俊鎭け璐ワ紝璇烽噸鏂板埛鍗¢噸璇曘��" -- Gitblit v1.8.0