Commit 5d3d7708 authored by yinjiacheng's avatar yinjiacheng

add 订单申请退款逻辑

parent e45c60df
...@@ -5,7 +5,10 @@ import android.util.AttributeSet ...@@ -5,7 +5,10 @@ import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.LinearLayoutManager 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.R
import com.yidian.shenghuoquan.border.adapter.OrderDetailCommodityListAdapter import com.yidian.shenghuoquan.border.adapter.OrderDetailCommodityListAdapter
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderCommodityInfoBinding import com.yidian.shenghuoquan.border.databinding.BorderViewOrderCommodityInfoBinding
...@@ -29,9 +32,11 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs: ...@@ -29,9 +32,11 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
true true
) )
private val adapter by lazy { OrderDetailCommodityListAdapter(null) } private val adapter by lazy { OrderDetailCommodityListAdapter(null) }
private val vm by lazy { OrderCommodityInfoViewModel() }
init { init {
initRecycleView() initRecycleView()
registerUIEvent()
} }
private fun initRecycleView() { private fun initRecycleView() {
...@@ -40,13 +45,39 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs: ...@@ -40,13 +45,39 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
binding.rvCommodityList.addItemDecoration(OrderDetailCommodityListAdapter.OrderDetailCommodityListItemDecoration()) 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 status 订单状态 确认订单时固定传ORDER_STATUS_WAIT_PAY
* @param info 商品信息 * @param info 商品信息
*/ */
fun setCommodityInfo(status: OrderStatus, info: OrderDetailDto) { fun setCommodityInfo(status: OrderStatus, info: OrderDetailDto) {
binding.vm = OrderCommodityInfoViewModel() binding.vm = vm
binding.status = status binding.status = status
binding.data = info binding.data = info
adapter.updateData(info.orderItemList) adapter.updateData(info.orderItemList)
......
package com.yidian.shenghuoquan.border.viewmodel package com.yidian.shenghuoquan.border.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.mvvm.BaseViewModel import com.yidian.bcommon.mvvm.BaseViewModel
import com.yidian.shenghuoquan.border.http.OrderRemoteDataSource
import com.yidian.shenghuoquan.border.http.callback.IApplyRefundCallback
/** /**
* author: yinjiacheng * author: yinjiacheng
...@@ -8,4 +12,42 @@ import com.yidian.bcommon.mvvm.BaseViewModel ...@@ -8,4 +12,42 @@ import com.yidian.bcommon.mvvm.BaseViewModel
* description: 订单商品信息 * description: 订单商品信息
*/ */
class OrderCommodityInfoViewModel : BaseViewModel() { 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() { ...@@ -39,7 +39,7 @@ class OrderStatusViewModel : BaseViewModel() {
* 订单状态描述 * 订单状态描述
* @param target 目标TextView * @param target 目标TextView
* @param status 订单状态 * @param status 订单状态
* @param data 订单详情 * @param refundAmount 订单退款金额
*/ */
@BindingAdapter(value = ["orderStatusDescription", "orderRefundAmount"], requireAll = true) @BindingAdapter(value = ["orderStatusDescription", "orderRefundAmount"], requireAll = true)
@JvmStatic @JvmStatic
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp8" android:layout_marginEnd="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14" android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:onClick="@{() -> vm.applyRefund(data.orderId)}"
android:paddingStart="@dimen/dp13" android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9" android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13" android:paddingEnd="@dimen/dp13"
...@@ -83,6 +84,7 @@ ...@@ -83,6 +84,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8" android:layout_marginTop="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14" android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:onClick="@{() -> vm.contractSeller()}"
android:paddingStart="@dimen/dp13" android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9" android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13" 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