左晓为主开发手持机充值管理机
zuoxiao
17 小时以前 ec09d4bcd191496272099c2ab31d097ad630ee78
generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
@@ -38,18 +38,16 @@
        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()
        }
    }
@@ -73,8 +71,8 @@
    }
    override fun onNfcBack(intent: Intent?) {
        intent?.let {
            handleNfcIntent(it)
        intent?.let {
            handleNfcIntent(it)
        } ?: run {
            showConfirmDialog("NFC数据异常,请重新刷卡") {
            }
@@ -117,12 +115,13 @@
            // 根据卡片类型进行不同处理
            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)
@@ -146,6 +145,23 @@
            }
            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)
@@ -156,7 +172,7 @@
     */
    private fun handleManagementCard(cardNumber: String, cardType: String) {
        val cardTypeName = getCardTypeName(cardType)
        // 显示管理卡信息
        showManagementCardInfo(cardNumber, cardTypeName)
    }
@@ -168,13 +184,12 @@
        // 隐藏读卡提示,显示信息区域
        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
@@ -238,22 +253,26 @@
    /**
     * 显示用户卡片信息(包含卡内数据和接口返回数据)
     */
    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) {
@@ -262,18 +281,19 @@
                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
@@ -287,7 +307,7 @@
            binding.tvIdCard.text = info.userCode ?: "未录入"  // 使用userCode作为身份证号的替代
            // 根据status字段显示状态
            val statusText = when (info.status) {
            val statusText = when (info.state) {
                1 -> "正常"
                2 -> "挂失"
                3 -> "锁定"
@@ -305,6 +325,7 @@
            "1001" -> {
                "该卡片未在系统中注册,请先进行开卡操作。"
            }
            else -> {
                when {
                    msg.isNullOrBlank() -> "获取卡信息失败,请重新刷卡重试。"