左晓为主开发手持机充值管理机
zuoxiao
23 小时以前 20952db304d0f71e1ce25f3b82114bbadff1ad4a
generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt
@@ -5,21 +5,15 @@
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 onSuccessListener: (() -> Unit)? = null
    private var onConfirmListener: ((String, String, String, String, String) -> Unit)? = null
    private var username: String? = null
    private var cardNumber: String? = null
    private var balance: String? = null
@@ -47,8 +41,15 @@
            val refundAmount = binding?.etRefundAmount?.text.toString()
            val remark = binding?.etRemark?.text.toString()
            // 调用挂失接口
            callReportLossApi(refundAmount, remark)
            // 通过回调将数据传递给Activity处理
            username?.let { username ->
                cardNumber?.let { cardNumber ->
                    balance?.let { balance ->
                        onConfirmListener?.invoke(username, cardNumber, balance, refundAmount, remark)
                        dismiss()
                    }
                }
            }
        }
        // 如果有预设的用户信息,设置它们
@@ -80,58 +81,11 @@
        }
    }
    fun setOnConfirmListener(listener: (String, String) -> Unit) {
    /**
     * 设置确认监听器
     * @param listener 回调函数,参数为:用户名、卡号、余额、退款金额、备注
     */
    fun setOnConfirmListener(listener: (String, String, String, 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
    )