| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package com.yingyang.healthconsultation.payment
- import android.annotation.SuppressLint
- import android.os.Bundle
- import android.view.MotionEvent
- import android.view.View
- import com.alibaba.android.arouter.facade.annotation.Route
- import com.yingyang.healthconsultation.R
- import com.yingyang.healthconsultation.databinding.ActivityPaymentBinding
- import com.yingyang.healthconsultation.dialog.PaymentQrCodeDialog
- import com.yingyang.healthconsultation.entity.PurchaseConsultationBean
- import com.yingyang.healthconsultation.utils.CommonUtils
- import com.yingyangfly.baselib.db.DoctorBean
- import com.yingyangfly.baselib.ext.getEndAnimation
- import com.yingyangfly.baselib.ext.getScaleAnimation
- import com.yingyangfly.baselib.ext.show
- import com.yingyangfly.baselib.ext.toast
- import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
- import com.yingyangfly.baselib.router.RouterUrlCommon
- import com.yingyangfly.baselib.utils.RxBusCodes
- import com.yingyangfly.baselib.utils.RxTimer
- import gorden.rxbus2.RxBus
- /**
- * 订单支付
- */
- @Route(path = RouterUrlCommon.payment)
- class PaymentActivity : BaseMVVMActivity<ActivityPaymentBinding, PaymentViewModel>(),
- View.OnTouchListener {
- private lateinit var rxTimer: RxTimer
- var time: Long = 0
- private var id: String = ""
- private var doctorBean: DoctorBean? = null
- private var orderNo = ""
- private var method = ""
- private var paymentQrCodeDialog: PaymentQrCodeDialog? = null
- private var purchaseConsultationBean: PurchaseConsultationBean? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- id = intent.getStringExtra("id") ?: ""
- purchaseConsultationBean =
- intent.getSerializableExtra("purchaseConsultationBean") as PurchaseConsultationBean
- super.onCreate(savedInstanceState)
- }
- override fun initViews() {
- rxTimer = RxTimer()
- if (doctorDao != null) {
- doctorBean = doctorDao?.getDoctor(id)
- if (doctorBean != null) {
- binding.data = doctorBean
- }
- }
- }
- @SuppressLint("ClickableViewAccessibility")
- override fun initListener() {
- binding {
- backLayout.setOnTouchListener(this@PaymentActivity)
- wechatLayout.setOnTouchListener(this@PaymentActivity)
- alipayLayout.setOnTouchListener(this@PaymentActivity)
- btnSubmit.setOnTouchListener(this@PaymentActivity)
- }
- }
- override fun initData() {
- }
- @SuppressLint("ClickableViewAccessibility")
- override fun onTouch(v: View, event: MotionEvent): Boolean {
- when (event.action) {
- MotionEvent.ACTION_DOWN -> {
- if (v.id == R.id.backLayout || v.id == R.id.wechatLayout || v.id == R.id.alipayLayout || v.id == R.id.btnSubmit) {
- v.startAnimation(getScaleAnimation())
- }
- }
- MotionEvent.ACTION_UP -> {
- v.startAnimation(getEndAnimation())
- when (v.id) {
- R.id.backLayout -> {
- finish()
- }
- R.id.wechatLayout -> {
- if (purchaseConsultationBean != null) {
- purchaseConsultationBean?.payMethod = "1"
- }
- method = "1"
- binding {
- wechatLayout.setBackgroundResource(R.drawable.bg_payment_selected)
- alipayLayout.setBackgroundResource(R.drawable.bg_payment_unselected)
- imageWechatSelected.show(true)
- imageAlipaySelected.show(false)
- }
- }
- R.id.alipayLayout -> {
- if (purchaseConsultationBean != null) {
- purchaseConsultationBean?.payMethod = "2"
- }
- method = "2"
- binding {
- wechatLayout.setBackgroundResource(R.drawable.bg_payment_unselected)
- alipayLayout.setBackgroundResource(R.drawable.bg_payment_selected)
- imageWechatSelected.show(false)
- imageAlipaySelected.show(true)
- }
- }
- R.id.btnSubmit -> {
- if (CommonUtils.isFastClick) {
- submit()
- }
- }
- }
- }
- MotionEvent.ACTION_CANCEL -> {
- if (v.id == R.id.backLayout || v.id == R.id.wechatLayout || v.id == R.id.alipayLayout || v.id == R.id.btnSubmit) {
- v.startAnimation(getEndAnimation())
- }
- }
- }
- return true
- }
- /**
- * 购买问诊服务
- */
- private fun submit() {
- if (purchaseConsultationBean != null) {
- if (purchaseConsultationBean?.payMethod.isNullOrEmpty()) {
- "请选择支付方式".toast()
- } else {
- viewModel.saveConsultation(purchaseConsultationBean!!, fail = {
- it.toast()
- }, success = {
- startTimer()
- if (it != null) {
- orderNo = it.orderNo
- paymentQrCodeDialog = PaymentQrCodeDialog()
- paymentQrCodeDialog?.onQueryPaymentStatusListener = {
- RxBus.get().send(RxBusCodes.SuccessfulPurchase)
- finish()
- }
- paymentQrCodeDialog?.setPaymentQrCodeBean(it.orderNo, it.qrCode, method)
- paymentQrCodeDialog?.show(supportFragmentManager, "paymentQrCodeDialog")
- }
- })
- }
- }
- }
- /**
- * 取消支付
- */
- private fun delPayOrder() {
- viewModel.delPayOrder(orderNo, fail = {
- it.toast()
- }, success = {
- if (paymentQrCodeDialog != null && paymentQrCodeDialog?.dialog?.isShowing == true) {
- paymentQrCodeDialog?.dismiss()
- }
- })
- }
- /**
- * 开始计时
- */
- private fun startTimer() {
- val m: Long = 1000
- rxTimer.interval(m) {
- time = 60 * 15 * 1 - it - 1
- // val minutes = time / 60
- // val seconds = time % 60
- // binding.tvTime.text = if (minutes > 0) {
- // if (seconds > 0) {
- // "请在 $minutes 分钟 $seconds 秒内完成支付,超时将取消"
- // } else {
- // "请在 $minutes 分钟 内完成支付,超时将取消"
- // }
- // } else {
- // "请在 $seconds 秒内完成支付,超时将取消"
- // }
- if (it == time - 1) {
- delPayOrder()
- rxTimer.cancel()
- }
- }
- }
- }
|