From 465c8abaa982fba6868a900d25316c70afc20fb7 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 18 六月 2025 13:59:46 +0800 Subject: [PATCH] feat(card): 优化销卡功能并添加写卡操作 --- generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt | 102 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 64 insertions(+), 38 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 79c9fbd..51136ba 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt @@ -10,11 +10,14 @@ 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() { var binding: FragmentRechargeBinding? = null @@ -28,25 +31,25 @@ 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 - } - - - private fun resetView() { - // 閲嶇疆鐣岄潰鏄剧ず璇诲崱鐘舵�� - binding?.rechargeReadLL?.visibility = View.VISIBLE + + /** + * 鏄剧ず纭瀵硅瘽妗� + */ + private fun showConfirmDialog(message: String, onConfirm: () -> Unit) { + activity?.let { activity -> + val confirmDialog = TipDialog(activity, message) { + onConfirm() + } + confirmDialog.show() + } } - + /** * 澶勭悊NFC鍒峰崱淇℃伅 * 璇ユ柟娉曠敱MainActivity璋冪敤 @@ -56,32 +59,60 @@ try { // 妫�鏌ntent涓槸鍚﹀寘鍚玁FC Tag if (intent.getParcelableExtra<android.nfc.Tag>(android.nfc.NfcAdapter.EXTRA_TAG) == null) { - ToastUtil.show("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�") + showConfirmDialog("鏈娴嬪埌NFC鍗$墖锛岃纭繚鍗$墖宸叉纭斁缃�") { + } return } - - // 浣跨敤NfcReadAdapter璇诲彇鍗″彿 + val nfcAdapter = NfcReadHelper.getInstance(intent, activity) - cardNumber = nfcAdapter.getCardNumber() - - if (cardNumber.isNullOrEmpty()) { - ToastUtil.show("璇诲崱澶辫触锛岃閲嶆柊鍒峰崱") + 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!!) + getCardInfo(cardNumber, userCard) } catch (e: Exception) { - ToastUtil.show("璇诲崱寮傚父锛�${e.message}") + showConfirmDialog("璇诲崱寮傚父锛�${e.message}") { + } e.printStackTrace() } } } - + /** * 鑾峰彇鍗$墖璇︾粏淇℃伅 */ - private fun getCardInfo(cardNumber: String) { + private fun getCardInfo(cardNumber: String, userCard: UserCard) { activity?.let { activity -> val map = mutableMapOf<String, Any>() map["cardAddr"] = cardNumber @@ -93,8 +124,8 @@ object : SubscriberListener<BaseResponse<CardInfoResult>>() { override fun onNext(t: BaseResponse<CardInfoResult>) { if (t.success) { - // 璺宠浆鍒板厖鍊艰鎯呴〉闈� - RechargeDetailActivity.start(activity, t.content, cardNumber) + // 璺宠浆鍒板厖鍊艰鎯呴〉闈紝浼犻�掔敤鎴峰崱淇℃伅 + RechargeDetailActivity.start(activity, t.content, cardNumber, userCard) } else { // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐� handleCardInfoError(t.code, t.msg) @@ -103,28 +134,28 @@ override fun onError(e: Throwable?) { super.onError(e) - ToastUtil.show("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") - // 閲嶇疆鐣岄潰鐘舵�� - resetView() + showConfirmDialog("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "缃戠粶寮傚父锛岃妫�鏌ョ綉缁滆繛鎺�"}") { + } } } ) } } - + /** * 澶勭悊鍗′俊鎭幏鍙栭敊璇� */ private fun handleCardInfoError(code: String?, msg: String?) { val errorTitle: String val errorMessage: String - + when (code) { "1001" -> { // 鏁版嵁涓嶅瓨鍦ㄧ殑鐗规畩澶勭悊 errorTitle = "鍗$墖鏈敞鍐�" errorMessage = "璇ュ崱鐗囨湭鍦ㄧ郴缁熶腑娉ㄥ唽锛岃鍏堣繘琛屽紑鍗℃搷浣滃悗鍐嶅厖鍊笺��" } + else -> { // 鍏朵粬閿欒鐨勯�氱敤澶勭悊 errorTitle = "鑾峰彇鍗′俊鎭け璐�" @@ -137,14 +168,9 @@ } } } - + // 鏄剧ず纭瀵硅瘽妗� - activity?.let { activity -> - val confirmDialog = ConfirmDialog(activity, errorTitle, errorMessage) { - // 鐐瑰嚮纭鎸夐挳鍚庡叧闂璇濇骞堕噸缃晫闈� - resetView() - } - confirmDialog.show() + showConfirmDialog(errorMessage) { } } } \ No newline at end of file -- Gitblit v1.8.0