From 0faae97cd2523f840c426da68464e577e01dfa80 Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期一, 23 六月 2025 20:35:08 +0800
Subject: [PATCH] refactor(CardReplaceActivity): 重构补卡流程并优化界面显示- 重新设计卡片信息展示布局,增加新卡卡地址、客户编号等字段 - 优化补卡逻辑,支持通过卡号或客户编号获取卡片信息 -调整工本费和返回金额输入框位置 - 更新API调用路径,使用新的卡片查询接口
---
generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 1 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
index 04ad5c5..51136ba 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
@@ -1,6 +1,176 @@
package com.dayu.general.activity
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import androidx.fragment.app.Fragment
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.baselibrary.tools.nfc.NfcReadAdapter
+import com.dayu.baselibrary.utils.ToastUtil
+import com.dayu.baselibrary.view.ConfirmDialog
+import com.dayu.baselibrary.view.TipDialog
+import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.databinding.FragmentRechargeBinding
+import com.dayu.general.net.ApiManager
+import com.dayu.general.net.BaseResponse
+import com.dayu.general.tool.NfcReadHelper
+import com.dayu.general.bean.card.UserCard
+import com.dayu.general.tool.CardCommon
-class RechargeFragment:Fragment() {
+class RechargeFragment : Fragment() {
+ var binding: FragmentRechargeBinding? = null
+ private var cardNumber: String? = null
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentRechargeBinding.inflate(inflater, container, false)
+ return binding?.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ }
+
+
+ /**
+ * 鏄剧ず纭瀵硅瘽妗�
+ */
+ private fun showConfirmDialog(message: String, onConfirm: () -> Unit) {
+ activity?.let { activity ->
+ val confirmDialog = TipDialog(activity, message) {
+ onConfirm()
+ }
+ confirmDialog.show()
+ }
+ }
+
+ /**
+ * 澶勭悊NFC鍒峰崱淇℃伅
+ * 璇ユ柟娉曠敱MainActivity璋冪敤
+ */
+ fun handleNfcIntent(intent: Intent) {
+ activity?.let { activity ->
+ try {
+ // 妫�鏌ntent涓槸鍚﹀寘鍚玁FC Tag
+ if (intent.getParcelableExtra<android.nfc.Tag>(android.nfc.NfcAdapter.EXTRA_TAG) == null) {
+ showConfirmDialog("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�") {
+ }
+ return
+ }
+
+ val nfcAdapter = NfcReadHelper.getInstance(intent, activity)
+ val cardTypeAndCardNumber = nfcAdapter.getCardTypeAndCardNumber()
+ if (cardTypeAndCardNumber.isNullOrBlank() || !cardTypeAndCardNumber.contains(",")) {
+ showConfirmDialog("鍗$墖淇℃伅璇诲彇澶辫触锛岃閲嶆柊鍒峰崱") {
+ }
+ return
+ }
+ val parts = cardTypeAndCardNumber.split(",")
+ if (parts.size < 2) {
+ showConfirmDialog("鍗$墖淇℃伅鏍煎紡寮傚父锛岃閲嶆柊鍒峰崱") {
+ }
+ return
+ }
+ val cardNumber = parts[0]
+ val cardType = parts[1]
+ this.cardNumber = cardNumber
+ if (cardNumber.isBlank()) {
+ showConfirmDialog("鍗″彿涓虹┖锛屾棤娉曡繘琛屽厖鍊硷紝璇烽噸鏂板埛鍗�") {
+ }
+ return
+ }
+ if (cardType != CardCommon.USER_CARD_TYPE_1) {
+ showConfirmDialog("璇ュ崱鐗囦笉鏄敤鎴峰崱锛岃浣跨敤姝g‘鐨勭敤鎴峰崱杩涜鍏呭�兼搷浣溿��") {
+ }
+ return
+ }
+
+ // 瑙f瀽鐢ㄦ埛鍗℃暟鎹�
+ val userCard = nfcAdapter.getUserCardData()
+ if (userCard == null) {
+ showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") {
+ }
+ return
+ }
+
+ // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
+ getCardInfo(cardNumber, userCard)
+ } catch (e: Exception) {
+ showConfirmDialog("璇诲崱寮傚父锛�${e.message}") {
+ }
+ e.printStackTrace()
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇鍗$墖璇︾粏淇℃伅
+ */
+ private fun getCardInfo(cardNumber: String, userCard: UserCard) {
+ activity?.let { activity ->
+ val map = mutableMapOf<String, Any>()
+ map["cardAddr"] = cardNumber
+ ApiManager.getInstance().requestGetLoading(
+ activity,
+ "terminal/card/readCard", // 鍋囪API璺緞
+ CardInfoResult::class.java,
+ map,
+ object : SubscriberListener<BaseResponse<CardInfoResult>>() {
+ override fun onNext(t: BaseResponse<CardInfoResult>) {
+ if (t.success) {
+ // 璺宠浆鍒板厖鍊艰鎯呴〉闈紝浼犻�掔敤鎴峰崱淇℃伅
+ RechargeDetailActivity.start(activity, t.content, cardNumber, userCard)
+ } else {
+ // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐�
+ handleCardInfoError(t.code, t.msg)
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ showConfirmDialog("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") {
+ }
+ }
+ }
+ )
+ }
+ }
+
+ /**
+ * 澶勭悊鍗′俊鎭幏鍙栭敊璇�
+ */
+ private fun handleCardInfoError(code: String?, msg: String?) {
+ val errorTitle: String
+ val errorMessage: String
+
+ when (code) {
+ "1001" -> {
+ // 鏁版嵁涓嶅瓨鍦ㄧ殑鐗规畩澶勭悊
+ errorTitle = "鍗$墖鏈敞鍐�"
+ errorMessage = "璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣滃悗鍐嶅厖鍊笺��"
+ }
+
+ else -> {
+ // 鍏朵粬閿欒鐨勯�氱敤澶勭悊
+ errorTitle = "鑾峰彇鍗′俊鎭け璐�"
+ errorMessage = when {
+ msg.isNullOrBlank() -> "鑾峰彇鍗′俊鎭け璐ワ紝璇烽噸鏂板埛鍗¢噸璇曘��"
+ msg.contains("鏁版嵁涓嶅瓨鍦�") -> "璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣滃悗鍐嶅厖鍊笺��"
+ msg.contains("缃戠粶") -> "缃戠粶杩炴帴寮傚父锛岃妫�鏌ョ綉缁滆繛鎺ュ悗閲嶆柊鍒峰崱銆�"
+ msg.contains("瓒呮椂") -> "缃戠粶璇锋眰瓒呮椂锛岃閲嶆柊鍒峰崱閲嶈瘯銆�"
+ else -> "鑾峰彇鍗′俊鎭け璐ワ細$msg\n\n璇烽噸鏂板埛鍗¢噸璇曘��"
+ }
+ }
+ }
+
+ // 鏄剧ず纭瀵硅瘽妗�
+ showConfirmDialog(errorMessage) {
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0