| | |
| | | handleUserCard(cardNumber, cardType, nfcAdapter) |
| | | } |
| | | |
| | | "00" -> { |
| | | // 地区卡:显示卡片类型信息 |
| | | handleUserCard(cardNumber, cardType, nfcAdapter) |
| | | } |
| | | |
| | | else -> { |
| | | // 管理类卡:显示卡片类型信息 |
| | | handleManagementCard(cardNumber, cardType) |
| | |
| | | * 处理用户卡 |
| | | */ |
| | | private fun handleUserCard(cardNumber: String, cardType: String, nfcAdapter: NfcReadHelper) { |
| | | if (cardType != "00") { |
| | | // 解析用户卡数据 |
| | | val userCard = nfcAdapter.getUserCardData() |
| | | if (userCard == null) { |
| | |
| | | } |
| | | return |
| | | } |
| | | binding.tvCardNumber.text = cardNumber |
| | | |
| | | // 输出用户卡内所有信息到日志 |
| | | android.util.Log.d("CardReadActivity", "=== 用户卡信息 ===") |
| | | android.util.Log.d("CardReadActivity", "卡号: $cardNumber") |
| | |
| | | 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) |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 获取卡片详细信息(用户卡专用) |
| | | */ |
| | | 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( |
| | |
| | | cardInfo: CardInfoResult?, |
| | | cardNumber: String, |
| | | cardType: String, |
| | | userCard: UserCard |
| | | userCard: UserCard? |
| | | ) { |
| | | // 隐藏读卡提示,显示信息区域 |
| | | binding.cardReadLL.visibility = android.view.View.GONE |
| | |
| | | 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作为身份证号的替代 |
| | |
| | | } |
| | | 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")) |
| | | } |
| | | } |
| | | |