From 2fece6551faab0402e7ed53658a60d2256e7a5be Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 12 六月 2025 14:58:56 +0800 Subject: [PATCH] feat(generallibrary): 新增挂失功能并优化相关界面- 新增 LossCardActivity 和 CardWriteSuccessActivity - 实现卡片挂失功能和写卡成功页面 - 优化充值界面布局- 调整卡片信息显示逻辑 - 修复部分 UI样式问题 --- generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 130 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 d1c6a49..79c9fbd 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt @@ -1,14 +1,24 @@ 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.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() { var binding: FragmentRechargeBinding? = null + private var cardNumber: String? = null override fun onCreateView( inflater: LayoutInflater, @@ -16,6 +26,125 @@ savedInstanceState: Bundle? ): View? { binding = FragmentRechargeBinding.inflate(inflater, container, false) - return binding?.root; + return binding?.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initView() + + } + + private fun initView() { + // 鍒濆鍖栫晫闈㈡樉绀鸿鍗$姸鎬� + binding?.rechargeReadLL?.visibility = View.VISIBLE + } + + + + private fun resetView() { + // 閲嶇疆鐣岄潰鏄剧ず璇诲崱鐘舵�� + binding?.rechargeReadLL?.visibility = View.VISIBLE + } + + /** + * 澶勭悊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 + } + + // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅 + getCardInfo(cardNumber!!) + } catch (e: Exception) { + ToastUtil.show("璇诲崱寮傚父锛�${e.message}") + e.printStackTrace() + } + } + } + + /** + * 鑾峰彇鍗$墖璇︾粏淇℃伅 + */ + private fun getCardInfo(cardNumber: String) { + 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) + } else { + // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐� + handleCardInfoError(t.code, t.msg) + } + } + + override fun onError(e: Throwable?) { + super.onError(e) + ToastUtil.show("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") + // 閲嶇疆鐣岄潰鐘舵�� + resetView() + } + } + ) + } + } + + /** + * 澶勭悊鍗′俊鎭幏鍙栭敊璇� + */ + 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璇烽噸鏂板埛鍗¢噸璇曘��" + } + } + } + + // 鏄剧ず纭瀵硅瘽妗� + activity?.let { activity -> + val confirmDialog = ConfirmDialog(activity, errorTitle, errorMessage) { + // 鐐瑰嚮纭鎸夐挳鍚庡叧闂璇濇骞堕噸缃晫闈� + resetView() + } + confirmDialog.show() + } } } \ No newline at end of file -- Gitblit v1.8.0