From d773ab0295feba24ae4fc14f61e8aa310e40f4ba Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期五, 06 六月 2025 16:55:57 +0800
Subject: [PATCH] refactor(nfc): 优化写卡流程和状态更新
---
generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt | 148 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 147 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..28d6e50 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,152 @@
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.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
-class RechargeFragment:Fragment() {
+class RechargeFragment : Fragment() {
+ var binding: FragmentRechargeBinding? = null
+ private var cardNumber: String? = null
+ private var cardInfo: CardInfoResult? = 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)
+ initView()
+
+ }
+
+ private fun initView() {
+ // 鍒濆鍖栫晫闈㈡樉绀鸿鍗$姸鎬�
+ binding?.rechargeReadLL?.visibility = View.VISIBLE
+ binding?.rechargeTextLL?.visibility = View.GONE
+ }
+
+
+
+ private fun resetView() {
+ // 閲嶇疆鐣岄潰鏄剧ず璇诲崱鐘舵��
+ binding?.rechargeReadLL?.visibility = View.VISIBLE
+ binding?.rechargeTextLL?.visibility = View.GONE
+ cardInfo = null
+ }
+
+ /**
+ * 澶勭悊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) {
+ ToastUtil.show("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�")
+ return
+ }
+
+ // 浣跨敤NfcReadAdapter璇诲彇鍗″彿
+ val nfcAdapter = NfcReadHelper.getInstance(intent, activity)
+ cardNumber = nfcAdapter.getCardNumber()
+
+ if (cardNumber.isNullOrEmpty()) {
+ ToastUtil.show("璇诲崱澶辫触锛岃閲嶆柊鍒峰崱")
+ return
+ }
+
+ // 鏄剧ず璇诲埌鐨勫崱鍙�
+ binding?.redInitCode?.text = cardNumber
+
+ // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
+ getCardInfo(cardNumber!!)
+ } catch (e: Exception) {
+ ToastUtil.show("璇诲崱寮傚父锛�${e.message}")
+ e.printStackTrace()
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇鍗$墖璇︾粏淇℃伅
+ */
+ private fun getCardInfo(cardNumber: String) {
+ activity?.let { activity ->
+ ApiManager.getInstance().requestGetLoading(
+ activity,
+ "card/getCardInfo/$cardNumber", // 鍋囪API璺緞
+ CardInfoResult::class.java,
+ null,
+ object : SubscriberListener<BaseResponse<CardInfoResult>>() {
+ override fun onNext(t: BaseResponse<CardInfoResult>) {
+ if (t.success) {
+ // 淇濆瓨鍗$墖淇℃伅
+ cardInfo = t.content
+ // 鏄剧ず鍗$墖淇℃伅
+ displayCardInfo(t.content)
+ } else {
+ // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐�
+ ToastUtil.show(t.msg)
+ binding?.redStatu?.text = "鍗$姸鎬佸紓甯�"
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ ToastUtil.show("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "鏈煡閿欒"}")
+ }
+ }
+ )
+ }
+ }
+
+ /**
+ * 鏄剧ず鍗$墖淇℃伅
+ */
+ private fun displayCardInfo(cardInfo: CardInfoResult?) {
+ if (cardInfo == null) {
+ ToastUtil.show("鍗′俊鎭负绌�")
+ return
+ }
+
+ // 鍒囨崲鍒版樉绀轰俊鎭晫闈�
+ binding?.rechargeReadLL?.visibility = View.GONE
+ binding?.rechargeTextLL?.visibility = View.VISIBLE
+
+ // 璁剧疆鍗$墖淇℃伅
+ binding?.userName?.text = cardInfo.userName ?: ""
+ binding?.redUserCode?.text = cardInfo.userCode ?: ""
+ binding?.redRemainderBlance?.text = "${cardInfo.balance ?: 0} 鍏�"
+
+ // 璁剧疆鍗$姸鎬�
+ val cardStatus = when(cardInfo.status) {
+ 1 -> "姝e父"
+ 2 -> "鎸傚け"
+ 3 -> "閿佸畾"
+ else -> "鏈煡"
+ }
+ binding?.redStatu?.text = cardStatus
+
+
+ }
+
+
+
}
\ No newline at end of file
--
Gitblit v1.8.0