| | |
| | | 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 |
| | |
| | | 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() { |
| | |
| | | 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) |
| | |
| | | // 处理充值逻辑 |
| | | handleRecharge() |
| | | } |
| | | |
| | | |
| | | // 设置金额输入限制 |
| | | setupAmountInputLimit(binding.rechargeMorny) |
| | | setupAmountInputLimit(binding.rechargeWater) |
| | |
| | | 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(".") |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 防止输入多个小数点 |
| | | val dotCount = text.count { it == '.' } |
| | | if (dotCount > 1) { |
| | |
| | | editText.setSelection(newText.length) |
| | | editText.addTextChangedListener(this) |
| | | } |
| | | |
| | | |
| | | // 防止以小数点开头 |
| | | if (text.startsWith(".")) { |
| | | editText.removeTextChangedListener(this) |
| | |
| | | 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 { |
| | |
| | | binding.redRemainderBlance.text = "$balance 元" |
| | | |
| | | // 设置卡状态和对应颜色 |
| | | val cardStatus = when (info.status) { |
| | | val cardStatus = when (info.state) { |
| | | 1 -> "正常" |
| | | 2 -> "挂失" |
| | | 3 -> "锁定" |
| | |
| | | binding.redStatu.text = cardStatus |
| | | |
| | | // 根据卡状态设置不同颜色 |
| | | val statusColor = when (info.status) { |
| | | val statusColor = when (info.state) { |
| | | 1 -> android.graphics.Color.parseColor("#4CAF50") // 绿色-正常 |
| | | 2 -> android.graphics.Color.parseColor("#FF9800") // 橙色-挂失 |
| | | 3 -> android.graphics.Color.parseColor("#F44336") // 红色-锁定 |
| | |
| | | /** |
| | | * 启动写卡界面 |
| | | */ |
| | | 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}") |
| | | } |