package com.fuban.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.view.SwipeRefreshRecyclerLayout
|
import com.fuban.user.R
|
import com.fuban.user.dialog.PayDialog
|
import com.fuban.user.dialog.TipDialog
|
import com.fuban.user.interfaces.StringCallback
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.Order
|
import com.fuban.user.network.requestByF
|
import com.fuban.user.ui.crosscity.PayCrossActivity
|
import com.fuban.user.ui.mine.adapter.CharterOrderAdapter
|
import com.fuban.user.ui.mine.adapter.LogisticsAdapter
|
import com.fuban.user.ui.mine.adapter.TripOrderAdapter
|
import com.fuban.user.ui.trip.OrderCancelDetailActivity
|
import com.fuban.user.ui.trip.OrderDetailActivity
|
import com.fuban.user.ui.trip.OrderDetailWithMapActivity
|
import com.fuban.user.ui.trip.TripActivity
|
import com.fuban.user.utils.Const
|
import com.fuban.user.utils.pay.PayListener
|
import com.fuban.user.utils.pay.PayUtil
|
import com.fuban.user.wxapi.WXPayEntryActivity
|
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.startActivity
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
|
class TripOrderFragment :BaseFragment(), PayListener {
|
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) {
|
in (1..3) -> TripOrderAdapter(datas)
|
TYPE_CHARTER -> CharterOrderAdapter(datas,object :StringCallback{
|
override fun onRlt(rlt: String) {
|
cancelCharterOrder(rlt.toInt())
|
}
|
})
|
TYPE_LOGISTICS -> LogisticsAdapter(datas,object :LogisticsAdapter.ClickCallback{
|
override fun onPay(index: Int) {
|
showDialog()
|
HttpManager.queryUserInfo().requestByF(this@TripOrderFragment){_,data->
|
data?.let {
|
val order = datas[index]
|
val payDialog = PayDialog()
|
payDialog.arguments = bundleOf("money" to if (order.state == 8) order.differenceMoney else order.orderMoney,"isLogistics" to true,
|
"balance" to it.balance)
|
payDialog.setCallback(object :PayDialog.Callback{
|
override fun onOk(way: Int, couponId: Int) {
|
pay(way,index)
|
payDialog.dismiss()
|
}
|
|
override fun onClose() {
|
}
|
})
|
payDialog.show(fragmentManager!!,"pay")
|
}
|
}
|
}
|
|
override fun onCancel(index: Int) {
|
cancelCharterOrder(index)
|
}
|
})
|
else -> TripOrderAdapter(datas)
|
}
|
}
|
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->{
|
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)
|
10 ->{
|
startActivityForResult<OrderCancelDetailActivity>(1,"id" to order.orderId,"type" to order.orderType)
|
}
|
11->{
|
startActivityForResult<TripActivity>(1,"id" to order.orderId,"type" to order.orderType)
|
}else->{
|
startActivityForResult<OrderDetailWithMapActivity>(1,"id" to order.orderId, "type" to order.orderType)
|
}
|
}
|
}
|
}
|
}
|
if (type == TYPE_LOGISTICS)
|
PayUtil.addPayListener(this)
|
}
|
|
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){
|
val order = datas[position]
|
// if (way == 1){//微信支付,跳转微信小程序
|
// val api = WXAPIFactory.createWXAPI(activity, Const.WX_APP_ID)
|
// val req = WXLaunchMiniProgram.Req()
|
// req.userName = "gh_bc8f199f11ae" // 填小程序原始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 (order.state == 8){
|
HttpManager.payOrderLogisticsSpread(order.orderId,way).requestByF(this){_,data->
|
if (way == 3)
|
onPaySuccess()
|
else if (way == 2)
|
PayUtil.aliPay(activity!!,data!!.orderString)
|
else if (way == 1){
|
startActivity<WXPayEntryActivity>("type" to 1,"data" to data)
|
}
|
}
|
}else{
|
HttpManager.payTaxiOrder(order.orderId,way,4).requestByF(this){_,data->
|
if (way == 3)
|
onPaySuccess()
|
else if (way == 2)
|
PayUtil.aliPay(activity!!,data!!.orderString)
|
else if (way == 1){
|
startActivity<WXPayEntryActivity>("type" to 1,"data" to 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")
|
}
|
|
override fun onPaySuccess() {
|
lvList.isRefreshing = true
|
page = 1
|
getData()
|
}
|
|
override 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()
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
PayUtil.removePayListener(this)
|
}
|
|
companion object{
|
const val TYPE_TAXI = 2
|
const val TYPE_SPECIAL = 1
|
const val TYPE_CROSS = 3
|
const val TYPE_CHARTER = 5
|
const val TYPE_LOGISTICS = 4
|
fun newInstance(type:Int):TripOrderFragment{
|
val tripOrderFragment = TripOrderFragment()
|
tripOrderFragment.arguments = bundleOf("type" to type)
|
return tripOrderFragment
|
}
|
}
|
}
|