左晓为主开发手持机充值管理机
generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
@@ -122,6 +122,11 @@
                    handleUserCard(cardNumber, cardType, nfcAdapter)
                }
                "00" -> {
                    // 地区卡:显示卡片类型信息
                    handleUserCard(cardNumber, cardType, nfcAdapter)
                }
                else -> {
                    // 管理类卡:显示卡片类型信息
                    handleManagementCard(cardNumber, cardType)
@@ -138,6 +143,7 @@
     * 处理用户卡
     */
    private fun handleUserCard(cardNumber: String, cardType: String, nfcAdapter: NfcReadHelper) {
        if (cardType != "00") {
        // 解析用户卡数据
        val userCard = nfcAdapter.getUserCardData()
        if (userCard == null) {
@@ -145,7 +151,7 @@
            }
            return
        }
        binding.tvCardNumber.text = cardNumber
        // 输出用户卡内所有信息到日志
        android.util.Log.d("CardReadActivity", "=== 用户卡信息 ===")
        android.util.Log.d("CardReadActivity", "卡号: $cardNumber")
@@ -162,9 +168,14 @@
        android.util.Log.d("CardReadActivity", "电量单价: ${userCard.electricPrice}")
        android.util.Log.d("CardReadActivity", "充值时间: ${userCard.rechargeDate}")
        android.util.Log.d("CardReadActivity", "==================")
            getCardInfo(cardNumber, cardType, userCard)
        } else {
            getCardInfo(cardNumber, cardType, null)
        }
        // 根据卡号获取卡片详细信息
        getCardInfo(cardNumber, cardType, userCard)
    }
    /**
@@ -222,7 +233,7 @@
    /**
     * 获取卡片详细信息(用户卡专用)
     */
    private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard) {
    private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard?) {
        val map = mutableMapOf<String, Any>()
        map["cardAddr"] = cardNumber
        ApiManager.getInstance().requestGetLoading(
@@ -257,7 +268,7 @@
        cardInfo: CardInfoResult?,
        cardNumber: String,
        cardType: String,
        userCard: UserCard
        userCard: UserCard?
    ) {
        // 隐藏读卡提示,显示信息区域
        binding.cardReadLL.visibility = android.view.View.GONE
@@ -266,34 +277,49 @@
        val cardTypeName = getCardTypeName(cardType)
        // 显示卡内数据
        binding.tvCardType.text = cardTypeName
        // 显示用户卡特有字段
        binding.llCardBalance.visibility = android.view.View.VISIBLE
        binding.llUserNumber.visibility = android.view.View.VISIBLE
        binding.llCardStatus.visibility = android.view.View.VISIBLE
        userCard.let { card ->
            // 余额转换为元(原始数据可能是分)
            binding.tvCardBalance.text = MornyUtil.changeF2Y(card.balance.toInt()) + "元"
            // 使用完整的用户编号
            binding.tvUserNumber.text = cardInfo?.cardNum
        binding.tvCardNumber.text = cardNumber
        // 处理卡内数据 - 优先使用userCard,如果为空则从cardInfo获取
        if (userCard != null) {
            // 从卡内数据获取信息
            binding.tvCardBalance.text = MornyUtil.changeF2Y(userCard.balance.toInt()) + "元"
            // 充值时间作为最后使用时间
            if (card.rechargeDate != null) {
            val rechargeDate = userCard.rechargeDate
            if (rechargeDate != null) {
                binding.llLastUseTime.visibility = android.view.View.VISIBLE
                val dateFormat =
                    java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault())
                binding.tvLastUseTime.text = dateFormat.format(card.rechargeDate!!.time)
                binding.tvLastUseTime.text = dateFormat.format(rechargeDate.time)
            } else {
                binding.llLastUseTime.visibility = android.view.View.GONE
            }
        } else {
            // userCard为空时,从cardInfo获取数据
            cardInfo?.let { info ->
                // 从接口返回的数据中获取余额,转换为正确的类型
                val balance = info.balance ?: 0.0
                binding.tvCardBalance.text = MornyUtil.changeF2Y((balance * 100).toInt()) + "元"
                // 如果cardInfo中有最后使用时间相关字段,可以在这里设置
                // 暂时隐藏最后使用时间
                binding.llLastUseTime.visibility = android.view.View.GONE
            } ?: run {
                // 如果cardInfo也为空,显示默认值
                binding.tvCardBalance.text = "0.00元"
                binding.llLastUseTime.visibility = android.view.View.GONE
            }
        }
        // 显示服务器数据
        cardInfo?.let { info ->
            // 使用完整的用户编号
            binding.tvUserNumber.text = info.cardNum ?: cardNumber
            binding.tvUserName.text = info.userName ?: "未知"
            binding.tvPhone.text = info.phone ?: "未绑定"
            binding.tvIdCard.text = info.userCode ?: "未录入"  // 使用userCode作为身份证号的替代
@@ -308,6 +334,14 @@
            }
            binding.tvCardStatus.text = statusText
            binding.tvCardStatus.setTextColor(statusColor)
        } ?: run {
            // 如果cardInfo为空,显示默认值
            binding.tvUserNumber.text = cardNumber
            binding.tvUserName.text = "未知"
            binding.tvPhone.text = "未绑定"
            binding.tvIdCard.text = "未录入"
            binding.tvCardStatus.text = "未知状态"
            binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#9E9E9E"))
        }
    }