| | |
| | | import com.dayu.baselibrary.utils.ToastUtil |
| | | import com.dayu.baselibrary.view.TipDialog |
| | | import com.dayu.baselibrary.view.TitleBar |
| | | import com.dayu.general.BaseApplication |
| | | import com.dayu.general.bean.net.CardInfoResult |
| | | import com.dayu.general.bean.net.CardCancelResult |
| | | import com.dayu.general.databinding.ActivityCardCancelBinding |
| | | import com.dayu.general.net.ApiManager |
| | | import com.dayu.general.net.BaseResponse |
| | | import com.dayu.general.tool.NfcReadHelper |
| | | import com.dayu.general.bean.card.UserCard |
| | | import com.dayu.general.tool.CardCommon |
| | | import com.dayu.general.bean.card.ClearCard |
| | | import com.dayu.general.tool.NfcWreatHelper |
| | | import com.dayu.baselibrary.tools.nfc.NFCCallBack |
| | | import com.dayu.general.tool.CardOperationType |
| | | |
| | | /** |
| | | * @author: zuo |
| | |
| | | private lateinit var binding: ActivityCardCancelBinding |
| | | private var cardNumber: String? = null |
| | | private var cardInfo: CardInfoResult? = null |
| | | private var userCard: UserCard? = null |
| | | |
| | | companion object { |
| | | /** |
| | |
| | | * 重置到读卡状态 |
| | | */ |
| | | private fun resetToReadingState() { |
| | | binding.cardReadLL.visibility = android.view.View.VISIBLE |
| | | binding.scrollReadCard.visibility = android.view.View.VISIBLE |
| | | binding.cardInfoContainer.visibility = android.view.View.GONE |
| | | binding.bottomButtonContainer.visibility = android.view.View.GONE |
| | | cardNumber = null |
| | | cardInfo = null |
| | | binding.etRefundAmount.setText("") |
| | |
| | | |
| | | override fun onNfcBack(intent: Intent?) { |
| | | intent?.let { |
| | | // 处理正常的读卡操作 |
| | | handleNfcIntent(it) |
| | | } ?: run { |
| | | showConfirmDialog("NFC数据异常,请重新刷卡") { |
| | |
| | | android.util.Log.d("CardCancelActivity", "卡片类型: $cardType") |
| | | android.util.Log.d("CardCancelActivity", "卡内余额: ${userCard.balance}") |
| | | android.util.Log.d("CardCancelActivity", "==================") |
| | | |
| | | this.userCard = userCard |
| | | // 根据卡号获取卡片详细信息 |
| | | getCardInfo(cardNumber, cardType, userCard) |
| | | } |
| | |
| | | cardType: String, |
| | | userCard: UserCard |
| | | ) { |
| | | // 隐藏读卡提示,显示信息区域 |
| | | binding.cardReadLL.visibility = android.view.View.GONE |
| | | // 隐藏读卡提示,显示信息区域和底部按钮 |
| | | binding.scrollReadCard.visibility = android.view.View.GONE |
| | | binding.cardInfoContainer.visibility = android.view.View.VISIBLE |
| | | binding.bottomButtonContainer.visibility = android.view.View.VISIBLE |
| | | |
| | | this.cardInfo = cardInfo |
| | | binding.tvCardNumber.text = cardNumber |
| | |
| | | } |
| | | binding.tvCardBalance.text = "${balanceInYuan}元" |
| | | |
| | | // 默认退款金额设置为卡内余额 |
| | | binding.etRefundAmount.setText(balanceInYuan) |
| | | |
| | | // 卡片状态 |
| | | binding.tvCardStatus.text = "正常" |
| | |
| | | val refundAmountStr = binding.etRefundAmount.text.toString().trim() |
| | | val remarks = binding.etRemarks.text.toString().trim() |
| | | |
| | | if (TextUtils.isEmpty(refundAmountStr)) { |
| | | ToastUtil.showToast("请输入退款金额") |
| | | // 退款金额处理(非必填) |
| | | val refundAmount = if (refundAmountStr.isEmpty()) { |
| | | 0.0 // 如果未输入退款金额,默认为0 |
| | | } else { |
| | | try { |
| | | val amount = refundAmountStr.toDouble() |
| | | if (amount < 0) { |
| | | ToastUtil.show("退款金额不能为负数") |
| | | return |
| | | } |
| | | |
| | | val refundAmount = try { |
| | | refundAmountStr.toDouble() |
| | | amount |
| | | } catch (e: NumberFormatException) { |
| | | ToastUtil.showToast("请输入有效的退款金额") |
| | | ToastUtil.show("请输入有效的退款金额") |
| | | return |
| | | } |
| | | |
| | | if (refundAmount < 0) { |
| | | ToastUtil.showToast("退款金额不能为负数") |
| | | return |
| | | } |
| | | |
| | | if (TextUtils.isEmpty(remarks)) { |
| | | ToastUtil.showToast("请输入备注信息") |
| | | return |
| | | // 备注处理(非必填) |
| | | val finalRemarks = if (remarks.isEmpty()) { |
| | | "无备注" // 如果未输入备注,使用默认值 |
| | | } else { |
| | | remarks |
| | | } |
| | | |
| | | // 确认销卡 |
| | | showConfirmDialog( |
| | | "确认要销卡吗?\n\n卡号:${cardNumber}\n退款金额:${refundAmount}元\n备注:${remarks}\n\n销卡后此卡将无法再次使用!" |
| | | ) { |
| | | callCancelCardApi(refundAmount, remarks) |
| | | val confirmMessage = if (refundAmount > 0) { |
| | | "确认要销卡吗?\n\n卡号:${cardNumber}\n退款金额:${refundAmount}元\n备注:${finalRemarks}\n\n销卡后此卡将无法再次使用!" |
| | | } else { |
| | | "确认要销卡吗?\n\n卡号:${cardNumber}\n无退款金额\n备注:${finalRemarks}\n\n销卡后此卡将无法再次使用!" |
| | | } |
| | | |
| | | showConfirmDialog(confirmMessage) { |
| | | callCancelCardApi(refundAmount, finalRemarks) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 调用销卡API接口 |
| | | */ |
| | | private fun callCancelCardApi(refundAmount: Double, remarks: String) { |
| | | private fun callCancelCardApi(refundAmount: Double, finalRemarks: String) { |
| | | if (cardNumber.isNullOrBlank()) { |
| | | ToastUtil.showToast("卡号信息异常,请重新刷卡") |
| | | ToastUtil.show("卡号信息异常,请重新刷卡") |
| | | return |
| | | } |
| | | |
| | | val map = mutableMapOf<String, Any>() |
| | | map["cardNum"] = cardNumber!! |
| | | map["refund"] = (refundAmount * 100).toInt() // 转换为分 |
| | | map["cardNum"] = cardInfo?.cardNum.toString() |
| | | map["refund"] = refundAmount.toString() // 改为String类型,单位为元 |
| | | map["refundType"] = 1838466162264350700L |
| | | map["remarks"] = remarks |
| | | map["operator"] = 2024090516595200300L |
| | | map["remarks"] = finalRemarks |
| | | map["operator"] = BaseApplication.userId |
| | | |
| | | ApiManager.getInstance().requestPostLoading( |
| | | this, |
| | | "terminal/card/termCancel", |
| | | Boolean::class.java, |
| | | CardCancelResult::class.java, |
| | | map, |
| | | object : SubscriberListener<BaseResponse<Boolean>>() { |
| | | override fun onNext(t: BaseResponse<Boolean>) { |
| | | if (t.success && t.content == true) { |
| | | // 销卡成功 |
| | | showConfirmDialog("销卡成功!\n\n退款金额:${refundAmount}元已退还") { |
| | | finish() |
| | | } |
| | | object : SubscriberListener<BaseResponse<CardCancelResult>>() { |
| | | override fun onNext(t: BaseResponse<CardCancelResult>) { |
| | | if (t.success && t.content != null) { |
| | | // 销卡成功,跳转到写卡界面 |
| | | startWriteCardActivity(t.content!!, refundAmount, userCard!!) |
| | | } else { |
| | | // 销卡失败 |
| | | val errorMsg = if (t.msg.isNullOrBlank()) "销卡失败,请重试" else t.msg |
| | |
| | | } |
| | | ) |
| | | } |
| | | |
| | | /** |
| | | * 跳转到写卡界面进行卡内容清除 |
| | | */ |
| | | private fun startWriteCardActivity( |
| | | cancelResult: CardCancelResult, |
| | | refundAmount: Double, |
| | | userCard: UserCard |
| | | ) { |
| | | val intent = Intent(this, NfcWreatActivity::class.java).apply { |
| | | putExtra("cardAddr", cardNumber) |
| | | putExtra("operationTypeCode", CardOperationType.CancelCard.code) |
| | | putExtra("orderNumber", cancelResult.orderNo) |
| | | putExtra("refundAmount", refundAmount) |
| | | putExtra("userCard", userCard) |
| | | // 传递当前卡内余额信息 |
| | | cardInfo?.let { info -> |
| | | putExtra("cardBalance", info.balance ?: 0.0) |
| | | } |
| | | } |
| | | startActivity(intent) |
| | | finish() |
| | | } |
| | | } |