| | |
| | | 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 |
| | |
| | | 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) |
| | | } |
| | | |
| | | // 如果有预设的用户信息,设置它们 |
| | |
| | | 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 |
| | | ) |
| | | } |