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/bean/card/UserCard.kt | 40 ++++++++++++++++++++--------------------
1 files changed, 20 insertions(+), 20 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 243f3ea..7d16b06 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
@@ -10,9 +10,9 @@
/**
* 閫氱敤椤圭洰鐢ㄦ埛鍗$粨鏋�
*/
-class UserCard : BaseCard(), Serializable {
+class UserCard : BaseUserCardCard(), Serializable {
var cardType: String = USER_CARD_TYPE_1 // 鍗$被鍨嬶細A1缁堢鍐欏崱 A8鍒峰崱寮�娉靛悗鍊� A2鍙犲姞鍏呭��
- var areaNumber: Int = 0 // 鍥藉琛屾斂鍖哄煙鍙�(12浣岯CD,绮剧‘鍒版潙)
+ var areaNumber: String = "" // 鍥藉琛屾斂鍖哄煙鍙�(12浣岯CD,绮剧‘鍒版潙)
var userCode: String = "" // 鐢ㄦ埛缂栧彿BCD
var userCodeNumber: Int = 0 // 鐢ㄦ埛鍗$紪鍙�(HEX)
var phoneNumber: String = "" // 鎵嬫満鍙�(BCD)
@@ -30,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)
}
}
@@ -47,7 +47,7 @@
/**
* 閫氳繃byte杞琤ean
*/
- fun getBean(data: List<ByteArray>): UserCard? {
+ override fun getBean(data: List<ByteArray>): UserCard? {
try {
val userCard = UserCard()
// 瑙f瀽绗�0鍧�
@@ -55,7 +55,7 @@
userCard.apply {
// 瑙f瀽鍥藉琛屾斂鍖哄煙鍙�(0-5浣�)
val areaCodeBytes = zero.copyOfRange(0, 6)
- areaNumber = BcdUtil.bcdToStr(areaCodeBytes).toInt()
+ areaNumber = BcdUtil.bcdToStr(areaCodeBytes)
// 瑙f瀽鐢ㄦ埛鍗$紪鍙�(6-7浣�)
val userCodeNumberBytes = zero.copyOfRange(6, 8)
@@ -75,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])
@@ -134,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]
@@ -154,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()
@@ -170,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]
@@ -185,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()
@@ -194,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