Commit 5d3d7708 authored by yinjiacheng's avatar yinjiacheng

add 订单申请退款逻辑

parent e45c60df
......@@ -5,7 +5,10 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.bcommon.utils.ToastUtils
import com.yidian.bcommon.widget.CommonHintDialog
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.adapter.OrderDetailCommodityListAdapter
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderCommodityInfoBinding
......@@ -29,9 +32,11 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
true
)
private val adapter by lazy { OrderDetailCommodityListAdapter(null) }
private val vm by lazy { OrderCommodityInfoViewModel() }
init {
initRecycleView()
registerUIEvent()
}
private fun initRecycleView() {
......@@ -40,13 +45,39 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
binding.rvCommodityList.addItemDecoration(OrderDetailCommodityListAdapter.OrderDetailCommodityListItemDecoration())
}
/**
* 注册UI事件监听
*/
private fun registerUIEvent() {
// 监听点击申请退款 弹窗二次确认
vm.applyRefund.observe(context as LifecycleOwner, {
CommonHintDialog(context, "您是要申请退款吗?", arrayListOf("取消", "确定"), object : CommonHintDialog.OnHintOptionCallback {
override fun onLeftOption() {
}
override fun onRightOption() {
// 确认申请退款
vm.requestApplyRefund(it)
}
}, null, R.color.color_5A968F)
})
// 监听申请退款接口请求结果
vm.applyRefundResult.observe(context as LifecycleOwner, {
if (it) {
ToastUtils.showShortSafe("已申请退款")
}
})
}
/**
* 设置商品信息
* @param status 订单状态 确认订单时固定传ORDER_STATUS_WAIT_PAY
* @param info 商品信息
*/
fun setCommodityInfo(status: OrderStatus, info: OrderDetailDto) {
binding.vm = OrderCommodityInfoViewModel()
binding.vm = vm
binding.status = status
binding.data = info
adapter.updateData(info.orderItemList)
......
package com.yidian.shenghuoquan.border.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.mvvm.BaseViewModel
import com.yidian.shenghuoquan.border.http.OrderRemoteDataSource
import com.yidian.shenghuoquan.border.http.callback.IApplyRefundCallback
/**
* author: yinjiacheng
......@@ -8,4 +12,42 @@ import com.yidian.bcommon.mvvm.BaseViewModel
* description: 订单商品信息
*/
class OrderCommodityInfoViewModel : BaseViewModel() {
private val _applyRefundResult = MutableLiveData<Boolean>()
val applyRefundResult: LiveData<Boolean> = _applyRefundResult
private val _applyRefund = MutableLiveData<String>()
val applyRefund: LiveData<String> = _applyRefund
/**
* 申请退款
* @param orderId 订单id
*/
fun applyRefund(orderId: String) {
_applyRefund.value = orderId
}
/**
* 联系卖家
*/
fun contractSeller() {
}
/**
* 请求申请退款接口
* @param orderId 订单id
*/
fun requestApplyRefund(orderId: String) {
OrderRemoteDataSource.applyRefund(object : IApplyRefundCallback {
override fun applyRefundSuccess() {
_applyRefundResult.value = true
}
override fun applyRefundFailure(message: String?) {
_applyRefundResult.value = false
}
}, hashMapOf("order_id" to orderId, "business_from" to "2"))
}
}
......@@ -39,7 +39,7 @@ class OrderStatusViewModel : BaseViewModel() {
* 订单状态描述
* @param target 目标TextView
* @param status 订单状态
* @param data 订单详情
* @param refundAmount 订单退款金额
*/
@BindingAdapter(value = ["orderStatusDescription", "orderRefundAmount"], requireAll = true)
@JvmStatic
......
......@@ -66,6 +66,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:onClick="@{() -> vm.applyRefund(data.orderId)}"
android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13"
......@@ -83,6 +84,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:onClick="@{() -> vm.contractSeller()}"
android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment