package cn.ptaxi.yuekeduocx.driver.ui.to_city
|
|
import android.annotation.SuppressLint
|
import android.app.Activity
|
import android.content.Intent
|
import android.os.Handler
|
import android.os.Message
|
import android.text.TextUtils
|
import android.view.View
|
import android.widget.FrameLayout
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.RecyclerView
|
import cn.ptaxi.yuekeduocx.driver.R
|
import cn.ptaxi.yuekeduocx.driver.base.BaseEvent
|
import cn.ptaxi.yuekeduocx.driver.base.BaseRecyclerActivity
|
import cn.ptaxi.yuekeduocx.driver.base.BaseRvAdapter
|
import cn.ptaxi.yuekeduocx.driver.base.MyApplication
|
import cn.ptaxi.yuekeduocx.driver.base.MyBaseActivity
|
import cn.ptaxi.yuekeduocx.driver.bean.AlipayBean
|
import cn.ptaxi.yuekeduocx.driver.bean.DriverInfo
|
import cn.ptaxi.yuekeduocx.driver.bean.DriverListApiResult
|
import cn.ptaxi.yuekeduocx.driver.bean.WxBean
|
import cn.ptaxi.yuekeduocx.driver.extension.extDpToPx
|
import cn.ptaxi.yuekeduocx.driver.netUtls.Api
|
import cn.ptaxi.yuekeduocx.driver.netUtls.callNet
|
import cn.ptaxi.yuekeduocx.driver.netUtls.createView
|
import cn.ptaxi.yuekeduocx.driver.netUtls.getMapByAny
|
import cn.ptaxi.yuekeduocx.driver.ui.DialogUtil
|
import cn.ptaxi.yuekeduocx.driver.ui.adapter.SelectDriverAdapter
|
import cn.ptaxi.yuekeduocx.driver.utils.clickDelay
|
import cn.ptaxi.yuekeduocx.driver.utils.payutil.PayResult
|
import cn.ptaxi.yuekeduocx.driver.wxapi.WXPayEntryActivity
|
import com.alipay.sdk.app.PayTask
|
import com.unionpay.UPPayAssistEx
|
import com.zlzf.zl_payaccount.citypicker.style.citylist.Toast.ToastUtils
|
import kotlinx.android.synthetic.main.layout_route_line_name.view.tv_destination
|
import kotlinx.android.synthetic.main.layout_route_line_name.view.tv_start_point
|
import kotlinx.android.synthetic.main.view_btn_sure.view.tv_sure_view
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.toast
|
|
//选择司机页
|
class SelectDriverActivity : BaseRecyclerActivity<DriverInfo>() {
|
|
val lineName by lazy {
|
intent.getStringExtra("lineName")
|
}
|
|
val lineShiftDriverId by lazy {
|
intent.getStringExtra("lineShiftDriverId")
|
}
|
|
val orderId by lazy {
|
intent.getStringExtra("orderId")
|
}
|
|
val orderType by lazy {
|
intent.getStringExtra("orderType")
|
}
|
|
val money by lazy {
|
intent.getStringExtra("money")
|
}
|
|
val selectAdapter by lazy {
|
SelectDriverAdapter()
|
}
|
|
override fun getDatas(t: String?): List<DriverInfo> {
|
return gson.fromJson<DriverListApiResult>(t, DriverListApiResult::class.java).data
|
?: emptyList()
|
}
|
|
override var usePost = false
|
override fun pathUrl(): String? {
|
return Api.queryOtherDriverShiftListWithShiftId
|
}
|
|
override fun mapObject(): HashMap<String?, Any?>? {
|
var map = getMapByAny()
|
map["driverShiftId"] = lineShiftDriverId
|
return map
|
}
|
|
override fun getAdapter(): BaseRvAdapter<DriverInfo>? {
|
return selectAdapter
|
}
|
|
override fun getlayoutManager(): RecyclerView.LayoutManager? {
|
return LinearLayoutManager(this)
|
}
|
|
override fun setOnItemClickListener(view: View?, position: Int) {
|
|
}
|
|
override fun initView() {
|
setTitleText("选择司机")
|
val topView = createView(R.layout.layout_route_line_name, this)
|
addMainTopViewSimple(
|
topView,
|
FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT,
|
50f.extDpToPx(this).toInt()
|
)
|
)
|
topView.tv_start_point.text = lineName?.split("-")?.firstOrNull()
|
topView.tv_destination.text = lineName?.split("-")?.lastOrNull()
|
val view = createView(R.layout.view_btn_sure, this)
|
addMainBottomViewSimple(view)
|
view.tv_sure_view.clickDelay {
|
val drive = selectAdapter.getChooseDrive()
|
if (drive == null) {
|
toast("请选择司机")
|
return@clickDelay
|
}
|
DialogUtil.getPayTypeChoiceDialog(this) { type ->
|
driverReassign(drive, type)
|
}
|
}
|
}
|
|
//司机改派
|
private fun driverReassign(driverInfo: DriverInfo, payType: String) {
|
val map = getMapByAny()
|
map["orderIds"] = orderId
|
map["reason"] = "司机改派"
|
map["nowDriverId"] = driverInfo.lineShiftDriverId
|
if (!money.isNullOrEmpty()) {
|
map["payType"] = payType
|
map["money"] = money
|
}
|
callNet(Api.reassignOrderCrossCityReassign, map) {
|
if (payType == "2") {
|
var data = gson.fromJson<AlipayBean>(it, AlipayBean::class.java)
|
payV2(data.data)
|
}
|
if (payType == "1") {
|
var data = gson.fromJson<WxBean>(it, WxBean::class.java)
|
WXPayEntryActivity.to(this, 1, data.data)
|
}
|
if (payType == "3" || payType.isEmpty()) {
|
EventBus.getDefault().post(
|
BaseEvent(
|
BaseEvent.REAGASSIGN_SUCCESS,
|
orderId!!.toString(),
|
orderId!!.toString()
|
)
|
)
|
setResult(Activity.RESULT_OK, Intent())
|
finish()
|
}
|
|
if (payType == "4") {
|
var data = gson.fromJson<WxBean>(it, WxBean::class.java)
|
MyApplication.isPlayVoice = false
|
UPPayAssistEx.startPay(this, null, null, data.data.tn, "00")
|
}
|
}
|
}
|
|
/**
|
* 支付宝支付业务示例
|
*/
|
private fun payV2(orderInfo: String?) { // if (TextUtils.isEmpty(APPID) || (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))) {
|
val payRunnable = Runnable {
|
val alipay = PayTask(mContext as MyBaseActivity)
|
val result = alipay.payV2(orderInfo, true)
|
val msg = Message()
|
msg.obj = result
|
mHandler.sendMessage(msg)
|
}
|
// 必须异步调用
|
val payThread = Thread(payRunnable)
|
payThread.start()
|
|
}
|
|
override fun setOnclick() {
|
|
}
|
|
@SuppressLint("HandlerLeak")
|
private val mHandler: Handler = object : Handler() {
|
override fun handleMessage(msg: Message) {
|
val payResult = PayResult(msg.obj as Map<String?, String?>)
|
|
/**
|
* 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
|
*/
|
val resultInfo: String = payResult.getResult() // 同步返回需要验证的信息
|
val resultStatus: String = payResult.getResultStatus()
|
// 判断resultStatus 为9000则代表支付成功 //out_trade_no 为订单编号 截取 英文编号 + 后14位数字
|
if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
|
aliPaySuccess()
|
// showAlert(AlipayActivity.this, "支付成功" + payResult);
|
} else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
|
ToastUtils.showShortToast(mContext, "支付取消")
|
}
|
}
|
}
|
|
//微信支付成功
|
private fun aliPaySuccess() {
|
setResult(Activity.RESULT_OK, Intent())
|
finish()
|
}
|
|
override fun onEventMainThread(event: BaseEvent?) {
|
super.onEventMainThread(event)
|
when (event!!.code) {
|
BaseEvent.PAY_SUCCESS -> {
|
setResult(Activity.RESULT_OK, Intent())
|
finish()
|
}
|
}
|
}
|
}
|