From 32d1501e6fe6338eb6dc51c26df7fe0808caac0d Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期四, 26 六月 2025 15:05:28 +0800 Subject: [PATCH] feat(general): 优化写卡成功界面并添加开卡功能- 重新设计写卡成功界面布局,增加滚动视图以支持长文本显示 - 添加开卡功能相关的UI和逻辑,包括工本费和充值金额的展示- 增加用户姓名和卡片信息的显示 - 优化打印凭证的内容和格式 -调整NFC连接逻辑,提高连接成功率 --- generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt | 162 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 109 insertions(+), 53 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt index 8539f83..fbe415c 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt @@ -13,6 +13,7 @@ import com.dayu.general.bean.card.ClearCard import com.dayu.general.bean.card.DebugCard import com.dayu.general.bean.card.UserCard +import com.dayu.general.bean.net.CardInfoResult import com.dayu.general.dao.BaseDaoSingleton import com.dayu.general.databinding.ActivityNfcWriteGeBinding import com.dayu.general.net.ApiManager @@ -98,6 +99,8 @@ /** 椤圭洰鍙凤紙1-255锛� */ private var projectNumber: String = "" + private var cardInfo: CardInfoResult? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityNfcWriteGeBinding.inflate(layoutInflater) @@ -116,6 +119,7 @@ operationTypeCode = intent?.getIntExtra("operationTypeCode", -1) ?: -1 orderNumber = intent?.getStringExtra("orderNumber") ?: "" operationType = CardOperationType.fromCode(operationTypeCode) + cardInfo = intent?.getSerializableExtra("cardInfo") as? CardInfoResult // 鑾峰彇鍏呭�肩浉鍏抽噾棰� rechargeAmount = intent?.getDoubleExtra("rechargeAmount", 0.0) ?: 0.0 @@ -254,8 +258,9 @@ // 杩旇繕鎿嶄綔鏄剧ず淇℃伅 var textData = StringBuilder() textData.append("杩旇繕\n") - textData.append("鍗″唴浣欓锛�" + MornyUtil.changeF2Y(userCard.balance) + "鍏僜n") - textData.append("杩旇繕閲戦锛�" + returnAmount + "鍏�") + textData.append("杩旇繕閲戦锛�" + returnAmount + "鍏僜n") + textData.append("杩旇繕鍚庡崱鍐呬綑棰濓細" + MornyUtil.changeF2Y(userCard.balance) + "鍏僜n") + binding?.cardData?.text = textData.toString() } @@ -263,8 +268,9 @@ // 琛ユ墸鎿嶄綔鏄剧ず淇℃伅 var textData = StringBuilder() textData.append("琛ユ墸\n") - textData.append("鍗″唴浣欓锛�" + MornyUtil.changeF2Y(userCard.balance) + "鍏僜n") - textData.append("琛ユ墸閲戦锛�" + deductAmount + "鍏�") + textData.append("琛ユ墸閲戦锛�" + deductAmount + "鍏僜n") + textData.append("琛ユ墸鍚庡崱鍐呬綑棰濓細" + MornyUtil.changeF2Y(userCard.balance) + "鍏僜n") + binding?.cardData?.text = textData.toString() } @@ -499,14 +505,14 @@ object : NFCCallBack { override fun isSusses(flag: Boolean, msg: String?) { // 纭繚Toast鍦ㄤ富绾跨▼涓皟鐢� - runOnUiThread { - if (flag) { - // 妫�鏌ュ崱鍐欏崱鎴愬姛锛屾洿鏂板啓鍗$姸鎬� - updateCardWrittenStatus(cardAddr) - } else { - ToastUtil.show("妫�鏌ュ崱鍐欏崱澶辫触: ${msg ?: "鏈煡閿欒"}") + runOnUiThread { + if (flag) { + // 妫�鏌ュ崱鍐欏崱鎴愬姛锛屾洿鏂板啓鍗$姸鎬� + updateCardWrittenStatus(cardAddr) + } else { + ToastUtil.show("妫�鏌ュ崱鍐欏崱澶辫触: ${msg ?: "鏈煡閿欒"}") + } } - } } }) } @@ -514,7 +520,7 @@ CardOperationType.RegionCardMake -> { // 鍖哄煙琛ㄥ彿鍗″啓鍗¢�昏緫锛堝姛鑳藉崱锛屾棤闇�鍐欏叆鐢ㄦ埛鏁版嵁锛� var areaCard = AreaCard() - areaCard.areaNumber = regionNumber.toInt() + areaCard.areaNumber = regionNumber areaCard.projectCode = projectNumber.toInt() nfcWreatHelper.writeDataAsync( areaCard.getZeroBytes(), @@ -523,14 +529,14 @@ object : NFCCallBack { override fun isSusses(flag: Boolean, msg: String?) { // 纭繚Toast鍦ㄤ富绾跨▼涓皟鐢� - runOnUiThread { - if (flag) { - // 鍖哄煙琛ㄥ彿鍗″啓鍗℃垚鍔燂紝鏇存柊鍐欏崱鐘舵�� - updateCardWrittenStatus(cardAddr) - } else { - ToastUtil.show("鍖哄煙琛ㄥ彿鍗″啓鍗″け璐�: ${msg ?: "鏈煡閿欒"}") + runOnUiThread { + if (flag) { + // 鍖哄煙琛ㄥ彿鍗″啓鍗℃垚鍔燂紝鏇存柊鍐欏崱鐘舵�� + updateCardWrittenStatus(cardAddr) + } else { + ToastUtil.show("鍖哄煙琛ㄥ彿鍗″啓鍗″け璐�: ${msg ?: "鏈煡閿欒"}") + } } - } } }) } @@ -546,14 +552,14 @@ object : NFCCallBack { override fun isSusses(flag: Boolean, msg: String?) { // 纭繚Toast鍦ㄤ富绾跨▼涓皟鐢� - runOnUiThread { - if (flag) { - // 璋冭瘯鍗″啓鍗℃垚鍔燂紝鏇存柊鍐欏崱鐘舵�� - updateCardWrittenStatus(cardAddr) - } else { - ToastUtil.show("璋冭瘯鍗″啓鍗″け璐�: ${msg ?: "鏈煡閿欒"}") + runOnUiThread { + if (flag) { + // 璋冭瘯鍗″啓鍗℃垚鍔燂紝鏇存柊鍐欏崱鐘舵�� + updateCardWrittenStatus(cardAddr) + } else { + ToastUtil.show("璋冭瘯鍗″啓鍗″け璐�: ${msg ?: "鏈煡閿欒"}") + } } - } } }) } @@ -594,7 +600,7 @@ /** * 鏇存柊鏈湴鏁版嵁搴撲腑鐨勫啓鍗$姸鎬� - * 灏咰ardRegistrationBean涓殑isCardWritten鐘舵�佽缃负true + * 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄洿鏂癕anagerCardBean杩樻槸CardRegistrationBean鐨刬sCardWritten鐘舵�佷负true * 鐒跺悗璺宠浆鍒板啓鍗℃垚鍔熺晫闈紝骞堕�氱煡MainActivity璋冪敤postCardData * * @param cardNumber 鍗″彿 @@ -602,37 +608,87 @@ private fun updateCardWrittenStatus(cardNumber: String) { lifecycleScope.launch { try { - val cardRegistrationDao = BaseDaoSingleton.getInstance(this@NfcWreatActivity) - .cardRegistrationDao() + val baseDaoSingleton = BaseDaoSingleton.getInstance(this@NfcWreatActivity) - // 鏍规嵁璁㈠崟鍙锋煡鎵綜ardRegistrationBean璁板綍 - val cardRegistration = cardRegistrationDao.getByOrderId(orderNumber) + // 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄鐞嗗崱杩樻槸鐢ㄦ埛鍗℃搷浣� + val isManagerCardOperation = operationTypeCode in 100..108 - if (cardRegistration != null) { - // 鍒涘缓鏇存柊鍚庣殑CardRegistrationBean瀵硅薄锛屽皢isCardWritten璁剧疆涓簍rue - val updatedCardRegistration = cardRegistration.copy(isCardWritten = true) - // 鏇存柊鏁版嵁搴撹褰� - cardRegistrationDao.update(updatedCardRegistration) + var updateSuccess = false - // 鍦ㄤ富绾跨▼涓叧闂瑼ctivity骞惰烦杞埌鎴愬姛椤甸潰 - runOnUiThread { - setResult(RESULT_OK) - finish() - - // 璺宠浆鍒板啓鍗℃垚鍔熺晫闈� - Intent(this@NfcWreatActivity, CardWriteSuccessActivity::class.java).apply { - putExtra("cardNumber", cardNumber) - if (::userCard.isInitialized) { - putExtra("userCard", userCard) - } - putExtra("operationTypeCode", operationTypeCode) - startActivity(this) - } - - // 閫氱煡MainActivity璋冪敤postCardData - notifyMainActivityToPostCardData(cardNumber) + if (isManagerCardOperation) { + // 绠$悊鍗″埗浣滄搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癕anagerCardBean + val managerCardDao = baseDaoSingleton.managerCardDao() + val managerCard = managerCardDao.getByOrderId(orderNumber) + + if (managerCard != null) { + val updatedManagerCard = managerCard.copy(isCardWritten = true) + managerCardDao.update(updatedManagerCard) + updateSuccess = true + } + } else { + // 鐢ㄦ埛鍗℃搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癈ardRegistrationBean + val cardRegistrationDao = baseDaoSingleton.cardRegistrationDao() + val cardRegistration = cardRegistrationDao.getByOrderId(orderNumber) + + if (cardRegistration != null) { + val updatedCardRegistration = cardRegistration.copy(isCardWritten = true) + cardRegistrationDao.update(updatedCardRegistration) + updateSuccess = true } } + + // 鏃犺鏄惁鎵惧埌璁板綍锛岄兘璺宠浆鍒版垚鍔熺晫闈� + runOnUiThread { + setResult(RESULT_OK) + finish() + + // 璺宠浆鍒板啓鍗℃垚鍔熺晫闈� + Intent(this@NfcWreatActivity, CardWriteSuccessActivity::class.java).apply { + + + putExtra("cardNumber", cardNumber) + putExtra("cardAddr", cardAddr) + putExtra("operationTypeCode", operationTypeCode) + putExtra("orderNumber", orderNumber) + //寮�鍗$浉鍏冲弬鏁� + putExtra("cardFee", cardFee) + + // 浼犻�掑厖鍊肩浉鍏冲弬鏁� + putExtra("rechargeAmount", rechargeAmount) + putExtra("bonusAmount", bonusAmount) + + // 浼犻�掗攢鍗$浉鍏冲弬鏁� + putExtra("refundAmount", refundAmount) + putExtra("cardBalance", cardBalance) + + // 浼犻�掕繑杩樼浉鍏冲弬鏁� + putExtra("returnAmount", returnAmount) + + // 浼犻�掕ˉ鎵g浉鍏冲弬鏁� + putExtra("deductAmount", deductAmount) + + // 浼犻�掕ˉ鍗$浉鍏冲弬鏁� + putExtra("cardCost", cardCost) + putExtra("reissueAmount", reissueAmount) + + // 浼犻�掔敤鎴峰崱瀵硅薄 + if (::userCard.isInitialized) { + putExtra("userCard", userCard) + } + + // 浼犻�掑崱鐗囦俊鎭璞� + cardInfo?.let { + putExtra("cardInfo", it) + } + + + startActivity(this) + } + + // 閫氱煡MainActivity璋冪敤postCardData + notifyMainActivityToPostCardData(cardNumber) + } + } catch (e: Exception) { // 璁板綍寮傚父淇℃伅 CrashReport.postCatchedException(e) -- Gitblit v1.8.0