增加消费码支付功能、支付逻辑优化、金额问题优化、订单绑定优化

This commit is contained in:
2025-12-12 17:50:51 +08:00
parent a0847d21b7
commit 1d0e1a62e2
24 changed files with 507 additions and 247 deletions
@@ -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)
// }
// }
// }
}