From 548dce0bcff06ee7a1795defe8e7789b9d7aad94 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 25 四月 2025 16:52:50 +0800
Subject: [PATCH] refactor(nfc): 重构 NFC 读写助手类并优化相关功能

---
 generallibrary/src/main/java/com/dayu/general/bean/card/UserCard.kt |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/bean/card/UserCard.kt b/generallibrary/src/main/java/com/dayu/general/bean/card/UserCard.kt
index 7aa0eed..9436dd7 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/card/UserCard.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/card/UserCard.kt
@@ -3,14 +3,15 @@
 import com.dayu.baselibrary.bean.BaseUserCardCard
 import com.dayu.baselibrary.tools.BcdUtil
 import com.dayu.baselibrary.tools.HexUtil
+import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1
 import java.io.Serializable
 import java.util.*
 
 /**
  * 閫氱敤椤圭洰鐢ㄦ埛鍗$粨鏋�
  */
-class UserCard : BaseCard(), Serializable {
-    var cardType: String = "A1" // 鍗$被鍨嬶細A1缁堢鍐欏崱 A8鍒峰崱寮�娉靛悗鍊� A2鍙犲姞鍏呭��
+class UserCard : BaseUserCardCard(), Serializable {
+    var cardType: String = USER_CARD_TYPE_1 // 鍗$被鍨嬶細A1缁堢鍐欏崱 A8鍒峰崱寮�娉靛悗鍊� A2鍙犲姞鍏呭��
     var areaNumber: Int = 0 // 鍥藉琛屾斂鍖哄煙鍙�(12浣岯CD,绮剧‘鍒版潙)
     var userCode: String = "" // 鐢ㄦ埛缂栧彿BCD
     var userCodeNumber: Int = 0 // 鐢ㄦ埛鍗$紪鍙�(HEX)
@@ -29,10 +30,10 @@
         if (data == null || data.size < 3) {
             return false
         }
-        
+
         val expectedBytes = arrayOf(getZeroBytes(), getOneBytes(), getTwoBytes())
-        return data.zip(expectedBytes.toList()).all { (actual, expected) -> 
-            actual.contentEquals(expected) 
+        return data.zip(expectedBytes.toList()).all { (actual, expected) ->
+            actual.contentEquals(expected)
         }
     }
 
@@ -46,7 +47,7 @@
     /**
      * 閫氳繃byte杞琤ean
      */
-     fun getBean(data: List<ByteArray>): UserCard? {
+    override fun getBean(data: List<ByteArray>): UserCard? {
         try {
             val userCard = UserCard()
             // 瑙f瀽绗�0鍧�
@@ -74,7 +75,7 @@
                 balance = HexUtil.get16To10LowHightByBytes(one.copyOfRange(1, 5))
                 surplusWater = HexUtil.get16To10LowHightByBytes(one.copyOfRange(5, 9))
                 electricPrice = HexUtil.hexToFloatLowHigh(one.copyOfRange(9, 11))
-                
+
                 // 瑙f瀽鍏呭�兼椂闂�
                 val year = HexUtil.getBcdToInt(one[11])
                 val month = HexUtil.getBcdToInt(one[12])
@@ -133,19 +134,19 @@
             val data = ByteArray(16)
             try {
                 data[0] = projectCode.toByte()
-                
+
                 // 璁剧疆浣欓
                 val balanceBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance))
                 System.arraycopy(balanceBytes, 0, data, 1, 4)
-                
+
                 // 璁剧疆鍓╀綑姘撮噺
                 val waterBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater))
                 System.arraycopy(waterBytes, 0, data, 5, 4)
-                
+
                 // 璁剧疆鐢典环
                 val priceBytes = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(electricPrice))
                 System.arraycopy(priceBytes, 0, data, 9, 2)
-                
+
                 // 璁剧疆鍏呭�兼椂闂�
                 rechargeDate?.let {
                     data[11] = HexUtil.getIntToBCD(it.get(Calendar.YEAR) % 100)[0]
@@ -153,7 +154,7 @@
                     data[13] = HexUtil.getIntToBCD(it.get(Calendar.DAY_OF_MONTH))[0]
                     data[14] = HexUtil.getIntToBCD(it.get(Calendar.HOUR_OF_DAY))[0]
                 }
-                
+
                 data[15] = getByteSum(data)
             } catch (e: Exception) {
                 e.printStackTrace()
@@ -169,14 +170,14 @@
                 // 澶囦唤浣欓鍜屾按閲忔暟鎹�
                 val balanceBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance))
                 System.arraycopy(balanceBytes, 0, data, 1, 4)
-                
+
                 val waterBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater))
                 System.arraycopy(waterBytes, 0, data, 5, 4)
-                
+
                 // 璁剧疆姘翠环
                 val priceBytes = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(waterPrice))
                 System.arraycopy(priceBytes, 0, data, 9, 2)
-                
+
                 // 璁剧疆鍏呭�兼椂闂�
                 rechargeDate?.let {
                     data[11] = HexUtil.getIntToBCD(it.get(Calendar.YEAR) % 100)[0]
@@ -184,7 +185,7 @@
                     data[13] = HexUtil.getIntToBCD(it.get(Calendar.DAY_OF_MONTH))[0]
                     data[14] = HexUtil.getIntToBCD(it.get(Calendar.HOUR_OF_DAY))[0]
                 }
-                
+
                 data[15] = getByteSum(data)
             } catch (e: Exception) {
                 e.printStackTrace()
@@ -193,7 +194,7 @@
         }
     }
 
-    fun getZeroBytes(): ByteArray = Zero().toBytes()
-    fun getOneBytes(): ByteArray = One().toBytes()
-    fun getTwoBytes(): ByteArray = Two().toBytes()
+    override fun getZeroBytes(): ByteArray = Zero().toBytes()
+    override fun getOneBytes(): ByteArray = One().toBytes()
+    override fun getTwoBytes(): ByteArray = Two().toBytes()
 }

--
Gitblit v1.8.0