From 4ceacd9e21e09989287e8dc4e526d182091af282 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 13:39:52 +0800
Subject: [PATCH] feat(nfc): 优化 NFC卡片处理流程

---
 generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt |  293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 289 insertions(+), 4 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
index 9e08bf7..6452333 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
@@ -1,7 +1,10 @@
 package com.dayu.general.activity
 
 import android.os.Bundle
+import com.dayu.baselibrary.tools.print.PrintAdater
+import com.dayu.baselibrary.utils.DateUtil
 import com.dayu.baselibrary.utils.MornyUtil
+import com.dayu.general.BaseApplication
 import com.dayu.general.bean.card.UserCard
 import com.dayu.general.databinding.ActivityCardWriteSuccessBinding
 import com.dayu.general.tool.CardOperationType
@@ -15,8 +18,22 @@
 
     private lateinit var binding: ActivityCardWriteSuccessBinding
     private var cardNumber: String? = null
+    private var cardAddr: String? = null
     private var operationTypeCode: Int = -1
     private var userCard: UserCard? = null
+    private var orderNumber: String? = null
+    
+    // 鍏呭�肩浉鍏冲弬鏁�
+    private var rechargeAmount = 0.0
+    private var bonusAmount = 0.0
+    
+    // 鍏朵粬鎿嶄綔鐩稿叧鍙傛暟
+    private var refundAmount = 0.0
+    private var cardBalance = 0.0
+    private var returnAmount = 0.0
+    private var deductAmount = 0.0
+    private var cardCost = 0.0
+    private var reissueAmount = 0.0
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -25,7 +42,22 @@
 
         // 鑾峰彇浼犲叆鐨勫崱鍙峰拰鎿嶄綔绫诲瀷
         cardNumber = intent.getStringExtra("cardNumber")
+        cardAddr = intent.getStringExtra("cardAddr")
         operationTypeCode = intent.getIntExtra("operationTypeCode", -1)
+        orderNumber = intent.getStringExtra("orderNumber")
+        
+        // 鑾峰彇鍏呭�肩浉鍏冲弬鏁�
+        rechargeAmount = intent.getDoubleExtra("rechargeAmount", 0.0)
+        bonusAmount = intent.getDoubleExtra("bonusAmount", 0.0)
+        
+        // 鑾峰彇鍏朵粬鎿嶄綔鐩稿叧鍙傛暟
+        refundAmount = intent.getDoubleExtra("refundAmount", 0.0)
+        cardBalance = intent.getDoubleExtra("cardBalance", 0.0)
+        returnAmount = intent.getDoubleExtra("returnAmount", 0.0)
+        deductAmount = intent.getDoubleExtra("deductAmount", 0.0)
+        cardCost = intent.getDoubleExtra("cardCost", 0.0)
+        reissueAmount = intent.getDoubleExtra("reissueAmount", 0.0)
+        
         if (intent.hasExtra("userCard")) {
             userCard = intent.getSerializableExtra("userCard") as UserCard
         }
@@ -52,6 +84,11 @@
                     "鍗$墖宸叉垚鍔熼攢鍗″苟娓呴櫎鍐呭\n鍗″彿锛�$cardNumber\n璇ュ崱鐗囧皢鏃犳硶鍐嶆浣跨敤"
                 }
                 binding.successMessage.text = message
+                
+                // 閿�鍗℃垚鍔熷悗鑷姩鎵撳嵃
+                userCard?.let { card ->
+                    doPrint(card)
+                }
             }
 
             CardOperationType.SUPPLEMENT -> {
@@ -68,6 +105,11 @@
                     "鍗$墖杩旇繕鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�"
                 }
                 binding.successMessage.text = message
+                
+                // 杩旇繕鎴愬姛鍚庤嚜鍔ㄦ墦鍗�
+                userCard?.let { card ->
+                    doPrint(card)
+                }
             }
 
             CardOperationType.DeductCard -> {
@@ -84,6 +126,11 @@
                     "鍗$墖琛ユ墸鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�"
                 }
                 binding.successMessage.text = message
+                
+                // 琛ユ墸鎴愬姛鍚庤嚜鍔ㄦ墦鍗�
+                userCard?.let { card ->
+                    doPrint(card)
+                }
             }
 
             CardOperationType.ReplaceCard -> {
@@ -103,10 +150,28 @@
             }
 
             CardOperationType.Recharge -> {
-                binding.titleBar.setCenterText("鍐欏崱鎴愬姛")
-                binding.successTitle.text = "鍐欏崱鎴愬姛"
-                binding.successMessage.text =
-                    "鍗″唴浣欓宸叉洿鏂颁负"+MornyUtil.changeF2Y(userCard?.balance?:0.toInt()) +"鍏�"
+                binding.titleBar.setCenterText("鍏呭�兼垚鍔�")
+                binding.successTitle.text = "鍏呭�兼垚鍔�"
+                
+                val messageBuilder = StringBuilder()
+                messageBuilder.append("鍏呭�兼搷浣滃凡鎴愬姛瀹屾垚\n")
+                
+                if (rechargeAmount > 0) {
+                    messageBuilder.append("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)}鍏僜n")
+                }
+                
+                if (bonusAmount > 0) {
+                    messageBuilder.append("璧犻�侀噾棰濓細${String.format("%.2f", bonusAmount)}鍏僜n")
+                }
+                
+                messageBuilder.append("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard?.balance ?: 0)}鍏�")
+                
+                binding.successMessage.text = messageBuilder.toString()
+                
+                // 鍏呭�兼垚鍔熷悗鑷姩鎵撳嵃
+                userCard?.let { card ->
+                    doPrint(card)
+                }
             }
 
             else -> {
@@ -133,4 +198,224 @@
             finish()
         }
     }
+
+    /**
+     * 鎵撳嵃鍏呭�兼垚鍔熶俊鎭埌鎵撳嵃鏈�
+     * @param userCard 鐢ㄦ埛鍗$墖淇℃伅锛屽寘鍚綑棰濈瓑淇℃伅
+     * 鍑芥暟浼氭瀯寤烘墦鍗版暟鎹苟璋冪敤鎵撳嵃閫傞厤鍣ㄨ繘琛屾墦鍗�
+     */
+    private fun doPrint(userCard: UserCard) {
+        try {
+            // 鍒涘缓鎵撳嵃鏁版嵁鍒楄〃
+            val data: MutableList<String> = ArrayList()
+            
+            // 鏍规嵁鎿嶄綔绫诲瀷璁剧疆涓嶅悓鐨勬墦鍗板唴瀹�
+            val operationType = CardOperationType.fromCode(operationTypeCode)
+            
+            when (operationType) {
+                CardOperationType.Recharge -> {
+                    // 鍏呭�兼墦鍗板唴瀹�
+                    data.add("*****************************")
+                    data.add("        鍏呭�煎嚟璇�")
+                    data.add("*****************************")
+                    
+                    // 娣诲姞鐢ㄦ埛缂栧彿锛堜粠UserCard涓幏鍙栵級
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.userCode}")
+                    }
+                    
+                    // 娣诲姞鍗″湴鍧�
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    // 娣诲姞鐢ㄦ埛缂栧彿锛堜粠UserCard涓幏鍙栵級
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}")
+                    }
+                    
+                    // 娣诲姞鍏呭�奸噾棰�
+                    if (rechargeAmount > 0) {
+                        data.add("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)} 鍏�")
+                    }
+                    
+                    // 娣诲姞璧犻�侀噾棰�
+                    if (bonusAmount > 0) {
+                        data.add("璧犻�侀噾棰濓細${String.format("%.2f", bonusAmount)} 鍏�")
+                    }
+                    
+                    // 娣诲姞鍏呭�煎悗浣欓
+                    data.add("鍏呭�煎悗浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
+                    
+                    // 娣诲姞鏃ユ湡淇℃伅
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    
+                    // 娣诲姞璁㈠崟鍙�
+                    if (!orderNumber.isNullOrEmpty()) {
+                        data.add("璁㈠崟鍙凤細$orderNumber")
+                    }
+                    
+                    // 娣诲姞璁惧鎿嶄綔鍛樹俊鎭�
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+                
+                CardOperationType.ReplaceCard -> {
+                    // 琛ュ崱鎵撳嵃鍐呭
+                    data.add("*****************************")
+                    data.add("        琛ュ崱鍑瘉")
+                    data.add("*****************************")
+                    
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}")
+                    }
+                    
+                    if (cardCost > 0) {
+                        data.add("宸� 鏈� 璐癸細${String.format("%.2f", cardCost)} 鍏�")
+                    }
+                    
+                    if (reissueAmount > 0) {
+                        data.add("杩旇繕閲戦锛�${String.format("%.2f", reissueAmount)} 鍏�")
+                    }
+                    
+                    data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    
+                    if (!orderNumber.isNullOrEmpty()) {
+                        data.add("璁㈠崟鍙凤細$orderNumber")
+                    }
+                    
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+                
+                CardOperationType.CancelCard -> {
+                    // 閿�鍗℃墦鍗板唴瀹�
+                    data.add("*****************************")
+                    data.add("        閿�鍗″嚟璇�")
+                    data.add("*****************************")
+                    
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}")
+                    }
+                    
+                    if (refundAmount > 0) {
+                        data.add("閫�娆鹃噾棰濓細${String.format("%.2f", refundAmount)} 鍏�")
+                    }
+                    
+                    data.add("鍘熷崱浣欓锛�${String.format("%.2f", cardBalance)} 鍏�")
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    
+                    if (!orderNumber.isNullOrEmpty()) {
+                        data.add("璁㈠崟鍙凤細$orderNumber")
+                    }
+                    
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+                
+                 CardOperationType.SUPPLEMENT -> {
+                    // 杩旇繕鎵撳嵃鍐呭
+                    data.add("*****************************")
+                    data.add("        杩旇繕鍑瘉")
+                    data.add("*****************************")
+                    
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}")
+                    }
+                    
+                    if (returnAmount > 0) {
+                        data.add("杩旇繕閲戦锛�${String.format("%.2f", returnAmount)} 鍏�")
+                    }
+                    
+                    data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    
+                    if (!orderNumber.isNullOrEmpty()) {
+                        data.add("璁㈠崟鍙凤細$orderNumber")
+                    }
+                    
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+                
+                CardOperationType.DeductCard -> {
+                    // 琛ユ墸鎵撳嵃鍐呭
+                    data.add("*****************************")
+                    data.add("        琛ユ墸鍑瘉")
+                    data.add("*****************************")
+                    
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    if (!userCard.userCode.isNullOrEmpty()) {
+                        data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}")
+                    }
+                    
+                    if (deductAmount > 0) {
+                        data.add("琛ユ墸閲戦锛�${String.format("%.2f", deductAmount)} 鍏�")
+                    }
+                    
+                    data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    
+                    if (!orderNumber.isNullOrEmpty()) {
+                        data.add("璁㈠崟鍙凤細$orderNumber")
+                    }
+                    
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+                
+                else -> {
+                    // 鍏朵粬鎿嶄綔鐨勯�氱敤鎵撳嵃鍐呭
+                    data.add("*****************************")
+                    data.add("        鎿嶄綔鍑瘉")
+                    data.add("*****************************")
+                    
+                    val cardAddress = cardNumber ?: cardAddr
+                    if (!cardAddress.isNullOrEmpty()) {
+                        data.add("鍗� 鍦� 鍧�锛�$cardAddress")
+                    }
+                    
+                    data.add("鎿嶄綔绫诲瀷锛�${operationType?.description ?: "鏈煡鎿嶄綔"}")
+                    data.add("鏃�   鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}")
+                    data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}")
+                    data.add("*****************************")
+                }
+            }
+            
+            // 璁剧疆鎵撳嵃瀛椾綋澶у皬
+            val size = 26f
+            // 鎵ц鎵撳嵃鎿嶄綔
+            PrintAdater.printText(data, size, true, false)
+            
+        } catch (e: Exception) {
+            // 鎵撳嵃寮傚父淇℃伅
+            e.printStackTrace()
+            // 鍙互娣诲姞Toast鎻愮ず鐢ㄦ埛鎵撳嵃澶辫触
+            runOnUiThread {
+                com.dayu.baselibrary.utils.ToastUtil.show("鎵撳嵃澶辫触锛�${e.message}")
+            }
+        }
+    }
+
 } 
\ No newline at end of file

--
Gitblit v1.8.0