From 2b02b6e854a56a511588e4865ddf2c6597675329 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 16 六月 2025 16:04:54 +0800
Subject: [PATCH] feat(nfc): 添加读卡功能并优化写卡流程

---
 generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt |   73 +++++++++++++++++++++++++++++++++---
 1 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
index 4e425e0..81b20a0 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
@@ -1,6 +1,9 @@
 package com.dayu.general.activity
 
+import android.content.Intent
 import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
 import android.view.KeyEvent
 import android.view.LayoutInflater
 import android.widget.Toast
@@ -12,26 +15,88 @@
 import com.dayu.general.R
 import com.dayu.general.adapter.TabAdapter
 import com.dayu.general.bean.net.UserInfoResult
+import com.dayu.general.bean.net.WaterPriceResult
 import com.dayu.general.databinding.ActivityMainBinding
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
 
-class MainActivity : BaseActivity() {
+class MainActivity : BaseNfcActivity() {
 
     var binding: ActivityMainBinding? = null
     private val fragments: ArrayList<Fragment> = ArrayList()
     var mExitTime: Long = 0
+    private val handler = Handler(Looper.getMainLooper())
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         binding = ActivityMainBinding.inflate(LayoutInflater.from(this))
         setContentView(binding?.root)
+        
+        // 娉ㄥ唽MainActivity瀹炰緥鍒癇aseApplication
+        BaseApplication.setMainActivity(this)
+        
         setupFragments()
         initView()
         initTab()
         getUserInfo()
+        
+        // 寤舵椂20绉掑悗鑾峰彇姘翠环
+        handler.postDelayed({
+            getWaterPriceFromActivity()
+        }, 20000) // 20绉掑欢鏃�
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        // 娓呯悊Handler鍥炶皟锛岄槻姝㈠唴瀛樻硠婕�
+        handler.removeCallbacksAndMessages(null)
+        // 娓呯悊BaseApplication涓殑MainActivity寮曠敤
+        BaseApplication.setMainActivity(null)
+    }
+
+    override fun onNfcBack(intent: Intent) {
+        intent.let { nfcIntent ->
+            // 鑾峰彇褰撳墠鏄剧ず鐨凢ragment
+            val currentFragment = fragments[binding?.viewPager?.currentItem ?: 0]
+            
+            // 濡傛灉褰撳墠鏄剧ず鐨勬槸鍏呭�糉ragment锛屽垯灏哊FC淇℃伅浼犻�掔粰瀹冨鐞�
+            if (currentFragment is RechargeFragment) {
+                currentFragment.handleNfcIntent(nfcIntent)
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇姘翠环淇℃伅 - 鍏紑鏂规硶渚涘叾浠栧湴鏂硅皟鐢�
+     */
+    fun getWaterPriceFromActivity() {
+        // 濡傛灉姘翠环宸插瓨鍦ㄤ笖澶т簬0锛屽垯涓嶉噸澶嶈幏鍙�
+        if (BaseApplication.waterPrice > 0.0) {
+            return
+        }
+        
+        ApiManager.getInstance().requestGetHideLoading(
+            this,
+            "terminal/client/getWaterPrice",
+            WaterPriceResult::class.java,
+            null,
+            object : SubscriberListener<BaseResponse<WaterPriceResult>>() {
+                override fun onNext(response: BaseResponse<WaterPriceResult>) {
+                    if (response.success && response.code == "0001") {
+                        // 鑾峰彇姘翠环鎴愬姛锛屼繚瀛樺埌BaseApplication
+                        response.content?.let { waterPriceResult ->
+                            BaseApplication.waterPrice = waterPriceResult.price
+                        }
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    // 缃戠粶寮傚父鏃朵笉鏄剧ず閿欒淇℃伅锛岄伩鍏嶅奖鍝嶇敤鎴蜂綋楠�
+                }
+            }
+        )
+    }
 
     private fun getUserInfo() {
         // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
@@ -63,8 +128,8 @@
 
     private fun initView() {
         binding!!.BSCardLL.setOnClickListener {  changeBottomState(Tab.BSC) }
-        binding!!.rechargeLL.setOnClickListener {  changeBottomState(Tab.RECHARGE) }
         binding!!.myLL.setOnClickListener { changeBottomState(Tab.MY) }
+        binding!!.rechargeLL.setOnClickListener { changeBottomState(Tab.RECHARGE) }
     }
 
 
@@ -153,8 +218,6 @@
         }
     }
 
-
-
     //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
     override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
@@ -169,6 +232,4 @@
         }
         return super.onKeyDown(keyCode, event)
     }
-
-
 }
\ No newline at end of file

--
Gitblit v1.8.0