package com.kuanzhai.user.ui.mine
|
|
import android.app.Activity
|
import android.content.Intent
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.optDouble
|
import cn.sinata.xldutils.utils.optInt
|
import cn.sinata.xldutils.utils.optString
|
import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.dialog.PayDialog
|
import com.kuanzhai.user.dialog.PayThankDialog
|
import com.kuanzhai.user.dialog.TipDialog
|
import com.kuanzhai.user.interfaces.OrderCallback
|
import com.kuanzhai.user.interfaces.StringCallback
|
import com.kuanzhai.user.network.HttpManager
|
import com.kuanzhai.user.network.entity.Order
|
import com.kuanzhai.user.network.requestByF
|
import com.kuanzhai.user.ui.crosscity.PayCrossActivity
|
import com.kuanzhai.user.ui.mine.adapter.CharterOrderAdapter
|
import com.kuanzhai.user.ui.mine.adapter.LogisticsAdapter
|
import com.kuanzhai.user.ui.mine.adapter.OfficialOrderAdapter
|
import com.kuanzhai.user.ui.mine.adapter.TripOrderAdapter
|
import com.kuanzhai.user.ui.trip.OrderCancelDetailActivity
|
import com.kuanzhai.user.ui.trip.OrderDetailActivity
|
import com.kuanzhai.user.ui.trip.OrderDetailWithMapActivity
|
import com.kuanzhai.user.ui.trip.TripActivity
|
import com.kuanzhai.user.utils.Const
|
import com.kuanzhai.user.utils.pay.PayListener
|
import com.kuanzhai.user.utils.pay.PayUtil
|
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram
|
import com.tencent.mm.opensdk.openapi.WXAPIFactory
|
import org.jetbrains.anko.support.v4.find
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
|
class TripOrderFragment : BaseFragment() {
|
override fun contentViewId() = R.layout.base_recyclerview_layout
|
private val type by lazy {
|
arguments?.getInt("type", TYPE_TAXI) ?: TYPE_TAXI
|
}
|
private val lvList by lazy {
|
find(R.id.swipeRefreshLayout) as SwipeRefreshRecyclerLayout
|
}
|
private var isGotoWx = false //是否跳转到微信小程序支付 true:回来时需要查询是否支付成功
|
private val datas = arrayListOf<Order>()
|
private val adapter by lazy {
|
when (type) {
|
TYPE_CHARTER -> CharterOrderAdapter(datas, object : OrderCallback {
|
override fun onDel(position: Int) {
|
cancelCharterOrder(position)
|
}
|
|
override fun onThank(position: Int) {
|
val payThankDialog = PayThankDialog()
|
payThankDialog.setCallback(object : PayThankDialog.Callback {
|
override fun onOk(way: Int,money:Double) {
|
pay(way, position,money = money)
|
}
|
})
|
payThankDialog.show(childFragmentManager, "thank")
|
}
|
})
|
TYPE_OFFICIAL -> OfficialOrderAdapter(datas)
|
|
TYPE_LOGISTICS_SAME, TYPE_LOGISTICS_CROSS -> LogisticsAdapter(datas,
|
object : LogisticsAdapter.ClickCallback {
|
override fun onPay(index: Int) {
|
showDialog()
|
val order = datas[index]
|
HttpManager.queryBalance(order.orderId,type).requestByF(this@TripOrderFragment) { _, data ->
|
data?.let {
|
val payDialog = PayDialog()
|
payDialog.arguments = bundleOf(
|
"money" to if (order.state == 8) order.differenceMoney else order.orderMoney,
|
"isLogistics" to (order.state == 8),"balance" to it.optDouble("balance"),"discount" to it.optDouble("discountAmount"), "coupon" to it.optString("objectId"),
|
"discountType" to it.optInt("type"),"id" to order.orderId,"type" to type
|
)
|
payDialog.setCallback(object : PayDialog.Callback {
|
override fun onOk(way: Int, couponId: Int, couponType: Int) {
|
pay(way, index,couponId, couponType)
|
payDialog.dismiss()
|
}
|
|
override fun onClose() {
|
}
|
})
|
payDialog.show(fragmentManager!!, "pay")
|
}
|
}
|
}
|
|
override fun onThank(index: Int) {
|
val payThankDialog = PayThankDialog()
|
payThankDialog.setCallback(object : PayThankDialog.Callback {
|
override fun onOk(way: Int,money:Double) {
|
pay(way, index,money = money)
|
}
|
})
|
payThankDialog.show(childFragmentManager, "thank")
|
}
|
|
override fun onCancel(index: Int) {
|
cancelCharterOrder(index)
|
}
|
})
|
else -> TripOrderAdapter(datas,object :StringCallback{
|
override fun onRlt(rlt: String) {
|
val payThankDialog = PayThankDialog()
|
payThankDialog.setCallback(object : PayThankDialog.Callback {
|
override fun onOk(way: Int,money:Double) {
|
pay(way, rlt.toInt(),money = money)
|
}
|
})
|
payThankDialog.show(childFragmentManager, "thank")
|
}
|
})
|
}
|
}
|
private var page = 1
|
override fun onFirstVisibleToUser() {
|
lvList.setLayoutManager(LinearLayoutManager(activity))
|
lvList.setAdapter(adapter)
|
lvList.setOnRefreshListener(object : SwipeRefreshRecyclerLayout.OnRefreshListener {
|
override fun onRefresh() {
|
page = 1
|
getData()
|
}
|
|
override fun onLoadMore() {
|
page++
|
getData()
|
}
|
})
|
lvList.isRefreshing = true
|
getData()
|
adapter.setOnItemClickListener { _, position ->
|
val order = datas[position]
|
when (type) {
|
TYPE_SPECIAL, TYPE_TAXI -> {
|
when (order.state) {
|
in (1..6) -> startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
10 -> {
|
// if (order.driverId == 0) //刘矩:现在我的订单页面进入已取消的页面不论有无司机都跳取消详情
|
startActivityForResult<OrderCancelDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
// else
|
// startActivityForResult<OrderDetailActivity>(1,"id" to order.orderId,"type" to order.orderType)
|
}
|
11 -> {
|
startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
7, 12 ->
|
startActivityForResult<OrderDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
else ->
|
startActivityForResult<OrderDetailWithMapActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
}
|
Const.OrderType.TYPE_CROSS_CITY,Const.OrderType.TYPE_THROUGH_BUS,Const.OrderType.TYPE_AIRBUS -> {
|
when (order.state) {
|
in (1..6) -> startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
7 -> startActivityForResult<PayCrossActivity>(1, "id" to order.orderId,"type" to order.orderType)
|
10 -> {
|
startActivityForResult<OrderCancelDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
11 -> {
|
startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
12 ->
|
startActivityForResult<OrderDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
else -> {
|
startActivityForResult<OrderDetailWithMapActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
}
|
}
|
Const.OrderType.TYPE_OFFICIAL->{
|
if (order.auditStatus == 2){
|
startActivityForResult<OrderCancelDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
} else if (order.auditStatus == 0){
|
startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}else{
|
when (order.state) {
|
in (1..6) -> startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
10 -> {
|
startActivityForResult<OrderCancelDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
11 -> {
|
startActivityForResult<TripActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
7, 12 ->
|
startActivityForResult<OrderDetailActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
else ->
|
startActivityForResult<OrderDetailWithMapActivity>(
|
1,
|
"id" to order.orderId,
|
"type" to order.orderType
|
)
|
}
|
}
|
}
|
}
|
}
|
}
|
|
private fun getData() {
|
HttpManager.myOrderList(page, type).requestByF(this, success = { _, data ->
|
lvList.isRefreshing = false
|
if (page == 1)
|
datas.clear()
|
data?.let {
|
datas.addAll(it)
|
if (datas.isEmpty())
|
lvList.setLoadMoreText("暂无数据")
|
else if (it.isEmpty())
|
lvList.setLoadMoreText("没有更多")
|
}
|
adapter.notifyDataSetChanged()
|
}, error = { _, _ ->
|
lvList.isRefreshing = false
|
})
|
}
|
|
/**
|
* @param way 1=微信,2=支付宝,3=余额
|
*/
|
private fun pay(way: Int, position: Int,couponId:Int = 0,couponType:Int = 0,money:Double = 0.0) {
|
val order = datas[position]
|
// if (way == 1){//微信支付,跳转微信小程序
|
// val api = WXAPIFactory.createWXAPI(activity, Const.WX_APP_ID)
|
// val req = WXLaunchMiniProgram.Req()
|
// req.userName = "gh_a6c22560b6be" // 填小程序原始id
|
// req.path = "/pages/appPay/appPay?orderId=${order.orderId}&orderType=${order.orderType}&type=${if (order.state == 8) 5 else 1}" +
|
// "&userType=1&uid=${SPUtils.instance().getInt(Const.User.USER_ID)}&content="
|
// req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE// 可选打开 开发版,体验版和正式版
|
// isGotoWx = true
|
// api.sendReq(req)
|
// }else{
|
if (money!=0.0){ //感谢费
|
HttpManager.payThankYouFee(money,order.orderId,way,type).requestByF(this){_,data->
|
if (way == 3)
|
onPaySuccess()
|
else if (way == 2)
|
PayUtil.aliPay(activity!!, data!!.orderInfo)
|
else
|
PayUtil.weChatPay(data!!)
|
}
|
} else if (order.state == 8) {
|
HttpManager.payOrderLogisticsSpread(order.orderId, way).requestByF(this) { _, data ->
|
if (way == 3)
|
onPaySuccess()
|
else if (way == 2)
|
PayUtil.aliPay(activity!!, data!!.orderInfo)
|
else
|
PayUtil.weChatPay(data!!)
|
}
|
} else {
|
HttpManager.payTaxiOrder(order.orderId, way, 4,if(couponId == 0) null else couponId,
|
if(couponType == 0) null else couponType).requestByF(this) { _, data ->
|
if (way == 3)
|
onPaySuccess()
|
else if (way == 2)
|
PayUtil.aliPay(activity!!, data!!.orderInfo)
|
else
|
PayUtil.weChatPay(data!!)
|
}
|
}
|
// }
|
}
|
|
/**
|
* 取消包车,物流订单
|
*/
|
private fun cancelCharterOrder(position: Int) {
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "是否确认取消订单?")
|
tipDialog.setCallback(object : TipDialog.OnClickCallback {
|
override fun onOk() {
|
showDialog()
|
HttpManager.cancelOrder(datas[position].orderId, datas[position].orderType)
|
.requestByF(this@TripOrderFragment) { _, _ ->
|
datas[position].state = if (datas[position].orderType == 6) 3 else 10
|
adapter.notifyItemChanged(position)
|
}
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.show(fragmentManager!!, "cancel")
|
}
|
|
fun onPaySuccess() {
|
lvList.isRefreshing = true
|
page = 1
|
getData()
|
}
|
|
fun onPayCancel() {
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK) {
|
lvList.isRefreshing = true
|
page = 1
|
getData()
|
}
|
}
|
|
override fun onResume() {
|
super.onResume()
|
if (isGotoWx) {
|
lvList.isRefreshing = true
|
page = 1
|
getData()
|
}
|
}
|
|
|
companion object {
|
const val TYPE_SPECIAL = 1
|
const val TYPE_TAXI = 2
|
const val TYPE_CROSS = 3
|
const val TYPE_LOGISTICS_SAME = 4
|
const val TYPE_LOGISTICS_CROSS = 5
|
const val TYPE_CHARTER = 6
|
const val TYPE_THROUGH_BUS = 8
|
const val TYPE_AIR = 9
|
const val TYPE_OFFICIAL = 10
|
fun newInstance(type: Int): TripOrderFragment {
|
val tripOrderFragment = TripOrderFragment()
|
tripOrderFragment.arguments = bundleOf("type" to type)
|
return tripOrderFragment
|
}
|
}
|
}
|