From 08bfe3072377b53c60e0952f00c26bce2e5b4bc0 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 18 六月 2025 17:05:55 +0800 Subject: [PATCH] feat(card): 添加卡片返还功能- 新增 CardReturnActivity 用于执行卡片返还操作 - 在 BSCardFragment 中添加返还按钮,跳转到 CardReturnActivity - 在 CardOperationType 中添加 ReturnCard 类型 - 修改 CardReadActivity,优化卡片信息显示逻辑 - 更新 CardWriteSuccessActivity,支持返还成功提示 - 新增 ic_morny_back 图标用于返还操作 --- generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt | 62 ++++++++++++++++++------------ 1 files changed, 37 insertions(+), 25 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt index d8d053a..f460d84 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt @@ -12,6 +12,7 @@ import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.dayu.baselibrary.net.subscribers.SubscriberListener +import com.dayu.baselibrary.utils.MornyUtil import com.dayu.baselibrary.utils.ToastUtil import com.dayu.baselibrary.view.TitleBar import com.dayu.general.BaseApplication @@ -25,6 +26,7 @@ import com.dayu.general.databinding.ActivityRechargeDetailBinding import com.dayu.general.net.ApiManager import com.dayu.general.net.BaseResponse +import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1 import com.dayu.general.tool.CardOperationType class RechargeDetailActivity : AppCompatActivity() { @@ -44,7 +46,12 @@ private const val EXTRA_CARD_ADDRESS = "extra_card_address" private const val EXTRA_USER_CARD = "extra_user_card" - fun start(context: Context, cardInfo: CardInfoResult?, cardAddress: String?, userCard: UserCard?) { + fun start( + context: Context, + cardInfo: CardInfoResult?, + cardAddress: String?, + userCard: UserCard? + ) { val intent = Intent(context, RechargeDetailActivity::class.java) intent.putExtra(EXTRA_CARD_INFO, cardInfo) intent.putExtra(EXTRA_CARD_ADDRESS, cardAddress) @@ -85,7 +92,7 @@ // 澶勭悊鍏呭�奸�昏緫 handleRecharge() } - + // 璁剧疆閲戦杈撳叆闄愬埗 setupAmountInputLimit(binding.rechargeMorny) setupAmountInputLimit(binding.rechargeWater) @@ -97,13 +104,13 @@ private fun setupAmountInputLimit(editText: EditText) { editText.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} - + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} - + override fun afterTextChanged(s: Editable?) { val text = s.toString() if (text.isEmpty()) return - + // 妫�鏌ユ槸鍚﹀寘鍚皬鏁扮偣 if (text.contains(".")) { val parts = text.split(".") @@ -119,7 +126,7 @@ } } } - + // 闃叉杈撳叆澶氫釜灏忔暟鐐� val dotCount = text.count { it == '.' } if (dotCount > 1) { @@ -129,7 +136,7 @@ editText.setSelection(newText.length) editText.addTextChangedListener(this) } - + // 闃叉浠ュ皬鏁扮偣寮�澶� if (text.startsWith(".")) { editText.removeTextChangedListener(this) @@ -248,9 +255,9 @@ binding.redInitCode.text = cardAddress ?: "" binding.userName.text = info.userName ?: "" binding.redCardNum.text = info.cardNum ?: "" - + // 浣跨敤鐢ㄦ埛鍗′腑鐨勪綑棰濇樉绀� - val balance = userCard?.let { + val balance = userCard?.let { // 灏嗗垎杞崲涓哄厓锛屼繚鐣欎袱浣嶅皬鏁� String.format("%.2f", it.balance / 100.0) } ?: run { @@ -260,7 +267,7 @@ binding.redRemainderBlance.text = "$balance 鍏�" // 璁剧疆鍗$姸鎬佸拰瀵瑰簲棰滆壊 - val cardStatus = when (info.status) { + val cardStatus = when (info.state) { 1 -> "姝e父" 2 -> "鎸傚け" 3 -> "閿佸畾" @@ -270,7 +277,7 @@ binding.redStatu.text = cardStatus // 鏍规嵁鍗$姸鎬佽缃笉鍚岄鑹� - val statusColor = when (info.status) { + val statusColor = when (info.state) { 1 -> android.graphics.Color.parseColor("#4CAF50") // 缁胯壊-姝e父 2 -> android.graphics.Color.parseColor("#FF9800") // 姗欒壊-鎸傚け 3 -> android.graphics.Color.parseColor("#F44336") // 绾㈣壊-閿佸畾 @@ -388,40 +395,45 @@ /** * 鍚姩鍐欏崱鐣岄潰 */ - private fun startWriteCardActivity(rechargeResult: RechargeResult, rechargeAmount: Double, bonusAmount: Double) { + private fun startWriteCardActivity( + rechargeResult: RechargeResult, + rechargeAmount: Double, + bonusAmount: Double + ) { try { // 鍒涘缓UserCard瀵硅薄鐢ㄤ簬鍐欏崱 val userCard = UserCard().apply { // 璁剧疆鐢ㄦ埛鍗′俊鎭� cardInfo?.let { info -> userCode = info.cardNum ?: "" - balance = ((rechargeAmount + bonusAmount) * 100).toInt() // 杞崲涓哄垎 + + // 璁$畻鏂颁綑棰濓細鍘熸湁浣欓 + 鍏呭�奸噾棰� + 璧犻�侀噾棰� + val originalBalance = + this@RechargeDetailActivity.userCard?.balance ?: 0 // 鍘熸湁浣欓锛堝垎锛� + val rechargeAmountInCents = (rechargeAmount * 100).toInt() // 鍏呭�奸噾棰濊浆鍒� + val bonusAmountInCents = (bonusAmount * 100).toInt() // 璧犻�侀噾棰濊浆鍒� + + balance = originalBalance + rechargeAmountInCents + bonusAmountInCents } - + // 璁剧疆鍏朵粬蹇呰淇℃伅 projectCode = rechargeResult.projectNo - waterPrice = rechargeResult.waterPrice.toFloat() + waterPrice = MornyUtil.changeY2F(rechargeResult.waterPrice.toString()) rechargeDate = java.util.Calendar.getInstance() } // 鍚姩鍐欏崱Activity val intent = Intent(this, NfcWreatActivity::class.java).apply { - putExtra("cardType", "USER_CARD") // 鐢ㄦ埛鍗$被鍨� + putExtra("cardType", USER_CARD_TYPE_1) // 鐢ㄦ埛鍗$被鍨� putExtra("cardAddr", cardAddress) putExtra("operationTypeCode", CardOperationType.Recharge.code) putExtra("orderNumber", rechargeResult.orderNo) putExtra("userCard", userCard) + putExtra("rechargeAmount", rechargeAmount) // 浼犻�掑厖鍊奸噾棰� + putExtra("bonusAmount", bonusAmount) // 浼犻�掕禒閫侀噾棰� } - startActivity(intent) - - // 鏄剧ず鎴愬姛淇℃伅 - val formattedRecharge = String.format("%.2f", rechargeAmount) - val formattedBonus = String.format("%.2f", bonusAmount) - val formattedTotal = String.format("%.2f", rechargeAmount + bonusAmount) - - ToastUtil.show("鍏呭�艰鍗曞垱寤烘垚鍔焅n璁㈠崟鍙�: ${rechargeResult.orderNo}\n鍏呭�奸噾棰�: ${formattedRecharge}鍏僜n璧犻�侀噾棰�: ${formattedBonus}鍏僜n鎬婚噾棰�: ${formattedTotal}鍏僜n璇疯创鍗¤繘琛屽啓鍗℃搷浣�") - + finish() } catch (e: Exception) { ToastUtil.show("鍚姩鍐欏崱鐣岄潰澶辫触: ${e.message}") } -- Gitblit v1.8.0