左晓为主开发手持机充值管理机
generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt
@@ -5,15 +5,21 @@
import android.os.Bundle
import android.view.Gravity
import android.view.WindowManager
import com.dayu.baselibrary.net.subscribers.SubscriberListener
import com.dayu.baselibrary.utils.ToastUtil
import com.dayu.general.BaseApplication
import com.dayu.general.R
import com.dayu.general.databinding.DialogCardRefundBinding
import com.dayu.general.net.ApiManager
import com.dayu.general.net.BaseResponse
/**
 *
 *卡片挂失对话框
 */
class CardRefundDialog(context: Context) : Dialog(context) {
    private var binding: DialogCardRefundBinding? = null
    private var onConfirmListener: (( String, String) -> Unit)? = null
    private var onConfirmListener: ((String, String) -> Unit)? = null
    private var onSuccessListener: (() -> Unit)? = null
    private var username: String? = null
    private var cardNumber: String? = null
    private var balance: String? = null
@@ -40,14 +46,9 @@
        binding?.btnConfirm?.setOnClickListener {
            val refundAmount = binding?.etRefundAmount?.text.toString()
            val remark = binding?.etRemark?.text.toString()
            if (refundAmount.isEmpty()) {
                // TODO: 显示错误提示
                return@setOnClickListener
            }
            onConfirmListener?.invoke(refundAmount, remark)
            dismiss()
            // 调用挂失接口
            callReportLossApi(refundAmount, remark)
        }
        // 如果有预设的用户信息,设置它们
@@ -71,15 +72,66 @@
        this.username = username
        this.cardNumber = cardNumber
        this.balance = balance
        binding?.apply {
            tvUsernameValue.text = username
            tvCardNumberValue.text = cardNumber
            etBalance.setText(balance+"元")
            etBalance.setText(balance + "元")
        }
    }
    fun setOnConfirmListener(listener: ( String, String) -> Unit) {
    fun setOnConfirmListener(listener: (String, String) -> Unit) {
        onConfirmListener = listener
    }
    fun setOnSuccessListener(listener: () -> Unit) {
        onSuccessListener = listener
    }
    /**
     * 调用挂失接口
     */
    private fun callReportLossApi(refundAmount: String, remark: String) {
        val params = mutableMapOf<String, Any>()
        params["cardNum"] = cardNumber ?: ""
        // 处理余额格式,去除千位分隔符逗号和"元"字符
        val balanceValue = balance?.replace("元", "")?.replace(",", "")?.toFloatOrNull() ?: 0f
        params["money"] = balanceValue
        params["refund"] = refundAmount.toFloatOrNull() ?: 0f
        params["remarks"] = remark.ifEmpty { "挂失" }
        params["operator"] = BaseApplication.userId
        ApiManager.getInstance().requestPostLoading(
            context,
            "terminal/card/termReportLoss",
            ReportLossResult::class.java,
            params,
            object : SubscriberListener<BaseResponse<ReportLossResult>>() {
                override fun onNext(response: BaseResponse<ReportLossResult>) {
                    if (response.success && response.code == "0001") {
                        ToastUtil.show("挂失成功")
                        onConfirmListener?.invoke(refundAmount, remark)
                        onSuccessListener?.invoke()
                        dismiss()
                    } else {
                        ToastUtil.show(response.msg ?: "挂失失败")
                    }
                }
                override fun onError(e: Throwable?) {
                    super.onError(e)
                    ToastUtil.show("挂失失败: ${e?.message ?: "网络错误"}")
                }
            }
        )
    }
    /**
     * 挂失接口返回结果
     */
    data class ReportLossResult(
        val content: Boolean? = null
    )