| | |
| | | super.onCreate(savedInstanceState) |
| | | binding = ActivityCardReadBinding.inflate(layoutInflater) |
| | | setContentView(binding.root) |
| | | |
| | | |
| | | initView() |
| | | } |
| | | |
| | | private fun initView() { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("读卡") |
| | | // 设置TitleBar的返回按钮点击事件 |
| | | binding.titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE) { |
| | | finish() |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | override fun onNfcBack(intent: Intent?) { |
| | | intent?.let { |
| | | handleNfcIntent(it) |
| | | intent?.let { |
| | | handleNfcIntent(it) |
| | | } ?: run { |
| | | showConfirmDialog("NFC数据异常,请重新刷卡") { |
| | | } |
| | |
| | | |
| | | // 根据卡片类型进行不同处理 |
| | | when (cardType) { |
| | | CardCommon.USER_CARD_TYPE_1, |
| | | CardCommon.USER_CARD_TYPE_2, |
| | | CardCommon.USER_CARD_TYPE_1, |
| | | CardCommon.USER_CARD_TYPE_2, |
| | | CardCommon.USER_CARD_TYPE_3 -> { |
| | | // 用户卡:解析卡内数据并调用接口 |
| | | handleUserCard(cardNumber, cardType, nfcAdapter) |
| | | } |
| | | |
| | | else -> { |
| | | // 管理类卡:显示卡片类型信息 |
| | | handleManagementCard(cardNumber, cardType) |
| | |
| | | } |
| | | return |
| | | } |
| | | binding.tvCardNumber.text = cardNumber |
| | | // 输出用户卡内所有信息到日志 |
| | | android.util.Log.d("CardReadActivity", "=== 用户卡信息 ===") |
| | | android.util.Log.d("CardReadActivity", "卡号: $cardNumber") |
| | | android.util.Log.d("CardReadActivity", "卡片类型: $cardType") |
| | | android.util.Log.d("CardReadActivity", "国家行政区域号: ${userCard.areaNumber}") |
| | | android.util.Log.d("CardReadActivity", "用户编号: ${userCard.userCode}") |
| | | android.util.Log.d("CardReadActivity", "用户卡编号: ${userCard.userCodeNumber}") |
| | | android.util.Log.d("CardReadActivity", "完整用户编号: ${userCard.getMyUserCode()}") |
| | | android.util.Log.d("CardReadActivity", "手机号: ${userCard.phoneNumber}") |
| | | android.util.Log.d("CardReadActivity", "项目编码: ${userCard.projectCode}") |
| | | android.util.Log.d("CardReadActivity", "卡内余额: ${userCard.balance}") |
| | | android.util.Log.d("CardReadActivity", "剩余水量: ${userCard.surplusWater}") |
| | | android.util.Log.d("CardReadActivity", "水量单价: ${userCard.waterPrice}") |
| | | android.util.Log.d("CardReadActivity", "电量单价: ${userCard.electricPrice}") |
| | | android.util.Log.d("CardReadActivity", "充值时间: ${userCard.rechargeDate}") |
| | | android.util.Log.d("CardReadActivity", "==================") |
| | | |
| | | // 根据卡号获取卡片详细信息 |
| | | getCardInfo(cardNumber, cardType, userCard) |
| | |
| | | */ |
| | | private fun handleManagementCard(cardNumber: String, cardType: String) { |
| | | val cardTypeName = getCardTypeName(cardType) |
| | | |
| | | |
| | | // 显示管理卡信息 |
| | | showManagementCardInfo(cardNumber, cardTypeName) |
| | | } |
| | |
| | | // 隐藏读卡提示,显示信息区域 |
| | | binding.cardReadLL.visibility = android.view.View.GONE |
| | | binding.cardInfoContainer.visibility = android.view.View.VISIBLE |
| | | |
| | | |
| | | |
| | | |
| | | // 显示基本信息 |
| | | binding.tvCardNumber.text = cardNumber |
| | | |
| | | binding.tvCardType.text = cardTypeName |
| | | |
| | | |
| | | // 隐藏用户卡特有的字段 |
| | | binding.llCardBalance.visibility = android.view.View.GONE |
| | | binding.llUserNumber.visibility = android.view.View.GONE |
| | |
| | | /** |
| | | * 显示用户卡片信息(包含卡内数据和接口返回数据) |
| | | */ |
| | | private fun showUserCardInfo(cardInfo: CardInfoResult?, cardNumber: String, cardType: String, userCard: UserCard) { |
| | | private fun showUserCardInfo( |
| | | cardInfo: CardInfoResult?, |
| | | cardNumber: String, |
| | | cardType: String, |
| | | userCard: UserCard |
| | | ) { |
| | | // 隐藏读卡提示,显示信息区域 |
| | | binding.cardReadLL.visibility = android.view.View.GONE |
| | | binding.cardInfoContainer.visibility = android.view.View.VISIBLE |
| | | |
| | | val cardTypeName = getCardTypeName(cardType) |
| | | |
| | | |
| | | // 显示卡内数据 |
| | | binding.tvCardNumber.text = cardNumber |
| | | |
| | | 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 -> |
| | | // 余额转换为元(原始数据可能是分) |
| | | val balanceInYuan = if (card.balance > 1000) { |
| | |
| | | card.balance.toString() |
| | | } |
| | | binding.tvCardBalance.text = "${balanceInYuan}元" |
| | | |
| | | |
| | | // 使用完整的用户编号 |
| | | binding.tvUserNumber.text = card.getMyUserCode() |
| | | |
| | | binding.tvUserNumber.text = cardInfo?.cardNum |
| | | |
| | | // 卡片状态(假设正常状态,因为UserCard中没有状态字段) |
| | | binding.tvCardStatus.text = "正常" |
| | | binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#4CAF50")) |
| | | |
| | | |
| | | // 充值时间作为最后使用时间 |
| | | if (card.rechargeDate != null) { |
| | | binding.llLastUseTime.visibility = android.view.View.VISIBLE |
| | | val dateFormat = java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()) |
| | | val dateFormat = |
| | | java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()) |
| | | binding.tvLastUseTime.text = dateFormat.format(card.rechargeDate!!.time) |
| | | } else { |
| | | binding.llLastUseTime.visibility = android.view.View.GONE |
| | |
| | | binding.tvIdCard.text = info.userCode ?: "未录入" // 使用userCode作为身份证号的替代 |
| | | |
| | | // 根据status字段显示状态 |
| | | val statusText = when (info.status) { |
| | | val statusText = when (info.state) { |
| | | 1 -> "正常" |
| | | 2 -> "挂失" |
| | | 3 -> "锁定" |
| | |
| | | "1001" -> { |
| | | "该卡片未在系统中注册,请先进行开卡操作。" |
| | | } |
| | | |
| | | else -> { |
| | | when { |
| | | msg.isNullOrBlank() -> "获取卡信息失败,请重新刷卡重试。" |