增加消费码支付功能、支付逻辑优化、金额问题优化、订单绑定优化
This commit is contained in:
@@ -2,6 +2,7 @@ package com.sw.dualscreen.activity
|
||||
|
||||
import androidx.activity.viewModels
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.sw.dualscreen.GlobalKey
|
||||
import com.sw.dualscreen.R
|
||||
import com.sw.dualscreen.activity.fragment.pay.CashPayFragment
|
||||
import com.sw.dualscreen.activity.fragment.pay.FacePayFragment
|
||||
@@ -13,6 +14,7 @@ import com.sw.dualscreen.ext.gone
|
||||
import com.sw.dualscreen.model.response.FoodInfo
|
||||
import com.sw.dualscreen.model.response.MemberInfo
|
||||
import com.sw.dualscreen.presentation.pay.ScanQrCodePayPresentation
|
||||
import com.sw.dualscreen.utils.SPUtil
|
||||
import com.sw.dualscreen.viewmodel.BaseViewModel
|
||||
import com.sw.dualscreen.viewmodel.UserViewModel
|
||||
import com.sw.plate.utils.ToastUtils
|
||||
@@ -25,6 +27,7 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
const val FOOD_INFO = "foodInfo"
|
||||
const val TOTAL_AMOUNT = "totalAmount"
|
||||
const val FOOD_ORDER_ID = "foodOrderId"
|
||||
const val FOOD_EAT_NUM = "foodEatNum"
|
||||
|
||||
// const val MEMBER_INFO = "memberInfo"
|
||||
const val TAG_PAY_QR_CODE = "tagPayQrCode"
|
||||
@@ -55,13 +58,14 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
private var payResultFragment: PayResultFragment? = null
|
||||
|
||||
var foodOrderId: String = ""
|
||||
var eatNum: Int = 1
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
override fun initialize() {
|
||||
super.initialize()
|
||||
foodInfo = intent.getParcelableExtra(FOOD_INFO)
|
||||
foodOrderId = intent.getStringExtra(FOOD_ORDER_ID) ?: ""
|
||||
|
||||
eatNum = intent.getIntExtra(FOOD_EAT_NUM, 1)
|
||||
// totalAmount = intent.getDoubleExtra(TOTAL_AMOUNT,0.0)
|
||||
// memberInfo = intent.getParcelableExtra(MEMBER_INFO)
|
||||
binding.tvFoodName.text = foodInfo?.foodName
|
||||
@@ -129,34 +133,6 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
// private fun showFragment(currentFragment: Fragment, tag: String) {
|
||||
// runCatching {
|
||||
// supportFragmentManager.beginTransaction().apply {
|
||||
// val existFragment = supportFragmentManager.findFragmentByTag(tag)
|
||||
// if (existFragment == null) {
|
||||
// add(R.id.fragmentContainerView, currentFragment, tag)
|
||||
// }
|
||||
// val fragments = supportFragmentManager.fragments
|
||||
// fragments.forEach {
|
||||
// it?.let { fragment ->
|
||||
// if (fragment != currentFragment) {
|
||||
// hide(fragment)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// show(currentFragment)
|
||||
// commitAllowingStateLoss()
|
||||
// }
|
||||
// }.onFailure {
|
||||
// it.printStackTrace()
|
||||
// }
|
||||
// }
|
||||
|
||||
// fun showPayResult() {
|
||||
// payResultFragment = PayResultFragment.instance(1, memberInfo)
|
||||
// showFragment(payResultFragment!!, TAG_PAY_RESULT)
|
||||
// }
|
||||
|
||||
override fun onDestroy() {
|
||||
qrCodePayFragment?.presentation?.dismiss()
|
||||
cashPayFragment?.presentation?.dismiss()
|
||||
@@ -182,23 +158,36 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
}.also {
|
||||
it.foodName = foodInfo?.foodName
|
||||
//确认使用vipPrice 还是 specPrice
|
||||
val totalPrice = if (isVip) foodInfo?.vipPrice else foodInfo?.specPrice
|
||||
it.totalPrice = totalPrice ?: 0.0
|
||||
val onePrice = if (isVip) foodInfo?.vipPrice else foodInfo?.specPrice
|
||||
it.totalPrice = (onePrice ?: 0.0) * eatNum
|
||||
}
|
||||
scanQrCodePayPresentation?.show()
|
||||
}
|
||||
}
|
||||
|
||||
fun updateQrCodeImage(qrCodeUrl: String?) {
|
||||
scanQrCodePayPresentation?.loadQrCodeImage(qrCodeUrl)
|
||||
}
|
||||
|
||||
fun showPaySuccess(isVip: Boolean) {
|
||||
showPayInfo(type = 2, isVip = isVip, memberInfo = memberInfo)
|
||||
hidePayTab()
|
||||
}
|
||||
|
||||
fun getQrCodeImg(orderId: String, userId: String? = null, totalFee: String?=null, block: (String?) -> Unit) {
|
||||
userViewModel.getQrCodeImg(orderId = orderId, userId = userId, totalFee = totalFee) { qrCodeImg ->
|
||||
fun getQrCodeImg(
|
||||
orderId: String,
|
||||
userId: String? = null,
|
||||
totalFee: String? = null,
|
||||
block: (String?) -> Unit
|
||||
) {
|
||||
userViewModel.getQrCodeImg(
|
||||
orderId = orderId,
|
||||
userId = userId,
|
||||
totalFee = totalFee
|
||||
) { qrCodeImg ->
|
||||
runOnUiThread {
|
||||
if (qrCodeImg.isNullOrBlank()) {
|
||||
ToastUtils.showToast("获取二维码失败")
|
||||
//ToastUtils.showToast("获取二维码失败")
|
||||
return@runOnUiThread
|
||||
}
|
||||
block(qrCodeImg)
|
||||
@@ -218,7 +207,7 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
userViewModel.memberPay(param) {
|
||||
runOnUiThread {
|
||||
if (it.not()) {
|
||||
ToastUtils.showToast("支付失败,请稍后重试")
|
||||
//ToastUtils.showToast("支付失败,请稍后重试")
|
||||
return@runOnUiThread
|
||||
}
|
||||
block()
|
||||
@@ -242,14 +231,72 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
binding.llPayTab.gone()
|
||||
}
|
||||
|
||||
fun getMemberInfoByPhone(phone: String, key: String, block: (MemberInfo?) -> Unit) {
|
||||
userViewModel.getMemberInfoByPhone(phone, key) { memberInfo ->
|
||||
runOnUiThread {
|
||||
block(memberInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getMemberInfoById(userId: String, block: (MemberInfo?) -> Unit) {
|
||||
userViewModel.getMemberInfoById(memberId = userId) { memberInfo ->
|
||||
runOnUiThread {
|
||||
block(memberInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// private val intervalExecutor by lazy { IntervalExecutor() }
|
||||
// private var payTaskJob: Job? = null
|
||||
// fun paySuccessCallback() {
|
||||
// payTaskJob = intervalExecutor.startIntervalTaskWithInitialDelay(5000, 10000) {
|
||||
//
|
||||
fun bindOrder(userId: String, block: (Boolean) -> Unit) {
|
||||
val pickupMode = SPUtil.getInstance().get(GlobalKey.KEY_PICKUP_MODE, 0)
|
||||
val mode = if (pickupMode == 1) 1 else 2
|
||||
userViewModel.bindOrder(userId, foodOrderId, mode = mode) { bindResult ->
|
||||
runOnUiThread {
|
||||
block(bindResult)
|
||||
}
|
||||
}
|
||||
}
|
||||
// fun bindOrder(userId: String, block: () -> Unit) {
|
||||
// val pickupMode = SPUtil.getInstance().get(GlobalKey.KEY_PICKUP_MODE, 0)
|
||||
// val mode = if (pickupMode == 1) 1 else 2
|
||||
// userViewModel.bindOrder(userId, foodOrderId, mode = mode) { bindResult ->
|
||||
// runOnUiThread {
|
||||
// if (bindResult.not()) {
|
||||
// hideWaitingDialog()
|
||||
// //ToastUtils.showToast("订单绑定失败")
|
||||
// return@runOnUiThread
|
||||
// }
|
||||
// binding.root.postDelayed({
|
||||
// hideWaitingDialog()
|
||||
// showPayInfo(type = 1, isVip = true, memberInfo = memberInfo)
|
||||
// hidePayTab()
|
||||
// block()
|
||||
// }, 1000)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// fun getMemberInfoByPhone(phone: String, key: String, block: (MemberInfo) -> Unit) {
|
||||
// userViewModel.getMemberInfoByPhone(phone, key) { memberInfo ->
|
||||
// runOnUiThread {
|
||||
// if (memberInfo == null) {
|
||||
// hideWaitingDialog()
|
||||
// //ToastUtils.showToast("查询会员信息失败,请稍后重试")
|
||||
// return@runOnUiThread
|
||||
// }
|
||||
// block(memberInfo)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// fun getMemberInfo(userId: String, block: (MemberInfo) -> Unit) {
|
||||
// userViewModel.getMemberInfoById(memberId = userId) { memberInfo ->
|
||||
// runOnUiThread {
|
||||
// if (memberInfo == null) {
|
||||
// hideWaitingDialog()
|
||||
// //ToastUtils.showToast("查询会员信息失败,请稍后重试")
|
||||
// return@runOnUiThread
|
||||
// }
|
||||
// block(memberInfo)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user