营养接口调试、支付接口联调
This commit is contained in:
@@ -87,6 +87,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
checkedItem = item
|
||||
notifyDataSetChanged()
|
||||
updateCurrentFood(item)
|
||||
|
||||
val mode = SPUtil.getInstance().get(GlobalKey.KEY_CHARGE_MODE, 0)
|
||||
//不计费模式切换菜品,重新加载数据
|
||||
if(mode == 1) {
|
||||
presentation?.loadUnbilledMode()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,8 +228,19 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
val realWeight = (lastWeight * 1000).roundToInt()
|
||||
createOrder(foodInfo = checkedItem!!, foodWeight = realWeight, eatWeight = realWeight) {
|
||||
//val realWeight = (lastWeight * 1000).roundToInt()
|
||||
val mealPickupMode = SPUtil.getInstance().get(GlobalKey.KEY_PICKUP_MODE, 0) ?: 0
|
||||
val eatWeight = if (mealPickupMode == 0) {
|
||||
//即放即取
|
||||
presentation?.recognitionWeight?:0.0
|
||||
} else {
|
||||
presentation?.recognitionWeight?.minus(lastWeight)?:0.0
|
||||
}
|
||||
createOrder(
|
||||
foodInfo = checkedItem!!,
|
||||
foodWeight = presentation?.lastWeight?.roundToInt()?:0,
|
||||
eatWeight = eatWeight.roundToInt()
|
||||
) {
|
||||
presentation?.dismiss()
|
||||
startActivity(Intent(this, PayActivity::class.java).apply {
|
||||
putExtra(PayActivity.FOOD_INFO, checkedItem!!)
|
||||
@@ -684,7 +701,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
viewModel.createOrder(order) { orderId ->
|
||||
runOnUiThread {
|
||||
if (orderId.isBlank()) {
|
||||
ToastUtils.showToast("订单id为空")
|
||||
//ToastUtils.showToast("订单id为空")
|
||||
return@runOnUiThread
|
||||
}
|
||||
foodOrderId = orderId
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.sw.dualscreen.activity.fragment.pay.NumberPayFragment
|
||||
import com.sw.dualscreen.activity.fragment.pay.PayResultFragment
|
||||
import com.sw.dualscreen.activity.fragment.pay.ScanQrCodePayFragment
|
||||
import com.sw.dualscreen.databinding.ActivityPayBinding
|
||||
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
|
||||
@@ -60,6 +61,7 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
super.initialize()
|
||||
foodInfo = intent.getParcelableExtra(FOOD_INFO)
|
||||
foodOrderId = intent.getStringExtra(FOOD_ORDER_ID) ?: ""
|
||||
|
||||
// totalAmount = intent.getDoubleExtra(TOTAL_AMOUNT,0.0)
|
||||
// memberInfo = intent.getParcelableExtra(MEMBER_INFO)
|
||||
binding.tvFoodName.text = foodInfo?.foodName
|
||||
@@ -160,6 +162,7 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
cashPayFragment?.presentation?.dismiss()
|
||||
numberPayFragment?.presentation?.dismiss()
|
||||
facePayFragment?.presentation?.dismiss()
|
||||
scanQrCodePayPresentation?.dismiss()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
@@ -188,6 +191,7 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
|
||||
fun showPaySuccess(isVip: Boolean) {
|
||||
showPayInfo(type = 2, isVip = isVip, memberInfo = memberInfo)
|
||||
hidePayTab()
|
||||
}
|
||||
|
||||
fun getQrCodeImg(orderId: String, userId: String? = null, block: (String?) -> Unit) {
|
||||
@@ -218,11 +222,31 @@ class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
fun paySuccessCallback(isVip: Boolean, block: () -> Unit = {}) {
|
||||
userViewModel.paySuccessCallback(queryType = 1, orderId = foodOrderId) {
|
||||
showPaySuccess(isVip)
|
||||
block()
|
||||
suspend fun queryOrderState(isVip: Boolean, block: (Boolean) -> Unit) {
|
||||
userViewModel.queryOrderState(orderId = foodOrderId) { payResult ->
|
||||
runOnUiThread {
|
||||
if (payResult) {
|
||||
showPaySuccess(isVip)
|
||||
block(true)
|
||||
} else {
|
||||
block(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun hidePayTab() {
|
||||
binding.llPayTab.gone()
|
||||
}
|
||||
|
||||
|
||||
|
||||
// private val intervalExecutor by lazy { IntervalExecutor() }
|
||||
// private var payTaskJob: Job? = null
|
||||
// fun paySuccessCallback() {
|
||||
// payTaskJob = intervalExecutor.startIntervalTaskWithInitialDelay(5000, 10000) {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -12,7 +12,9 @@ import com.sw.dualscreen.ext.load
|
||||
import com.sw.dualscreen.ext.visible
|
||||
import com.sw.dualscreen.model.response.MemberInfo
|
||||
import com.sw.dualscreen.model.response.TextBean
|
||||
import com.sw.dualscreen.utils.IntervalExecutor
|
||||
import com.sw.dualscreen.utils.SpannedUtils
|
||||
import kotlinx.coroutines.Job
|
||||
|
||||
class PayResultFragment : BaseFragment<FragmentPayResultBinding>() {
|
||||
|
||||
@@ -44,13 +46,7 @@ class PayResultFragment : BaseFragment<FragmentPayResultBinding>() {
|
||||
override fun initialize() {
|
||||
payActivity = activity as PayActivity
|
||||
binding.btnBack.setOnClickListener {
|
||||
//payActivity?.showFacePay()
|
||||
}
|
||||
if (memberInfo != null) {
|
||||
binding.layoutMemberInfo.visible()
|
||||
} else {
|
||||
binding.layoutMemberInfo.gone()
|
||||
|
||||
activity?.finish()
|
||||
}
|
||||
arguments?.let {
|
||||
pageType = it.getInt(PAGE_TYPE, 0)
|
||||
@@ -58,11 +54,14 @@ class PayResultFragment : BaseFragment<FragmentPayResultBinding>() {
|
||||
}
|
||||
|
||||
totalPrice = payActivity?.foodInfo?.vipPrice ?: 0.0
|
||||
memberInfo?.let {
|
||||
balance = (memberInfo?.topUpBalance ?: 0.0) + (memberInfo?.rewardBalance ?: 0.0)
|
||||
if (memberInfo != null) {
|
||||
binding.layoutMemberInfo.visible()
|
||||
balance = (memberInfo!!.topUpBalance ?: 0.0) + (memberInfo!!.rewardBalance ?: 0.0)
|
||||
realPayPrice = if (balance >= totalPrice) 0.0 else totalPrice - balance
|
||||
expensesBalance = if (balance >= totalPrice) totalPrice else balance
|
||||
loadUserInfo(it)
|
||||
loadUserInfo(memberInfo!!)
|
||||
} else {
|
||||
binding.layoutMemberInfo.gone()
|
||||
}
|
||||
|
||||
when (pageType) {
|
||||
@@ -112,7 +111,7 @@ class PayResultFragment : BaseFragment<FragmentPayResultBinding>() {
|
||||
) { qrCodeImg ->
|
||||
binding.ivPayQrCode.load(qrCodeImg)
|
||||
//扫码成功回调打开成功页面
|
||||
payActivity?.paySuccessCallback(true)
|
||||
paySuccessCallback(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -208,4 +207,21 @@ class PayResultFragment : BaseFragment<FragmentPayResultBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
payTaskJob?.cancel()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
private val intervalExecutor by lazy { IntervalExecutor() }
|
||||
private var payTaskJob: Job? = null
|
||||
fun paySuccessCallback(isVip: Boolean) {
|
||||
payTaskJob = intervalExecutor.startIntervalTaskWithInitialDelay(5000, 10000) {
|
||||
payActivity?.queryOrderState(isVip) { paySuccess ->
|
||||
if (paySuccess) {
|
||||
payTaskJob?.cancel()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import com.sw.dualscreen.utils.countDownByFlow
|
||||
import kotlinx.coroutines.Job
|
||||
import com.sw.dualscreen.databinding.FragmentScanQrcodePayBinding
|
||||
import com.sw.dualscreen.ext.format2String
|
||||
import com.sw.dualscreen.utils.IntervalExecutor
|
||||
|
||||
class ScanQrCodePayFragment: BaseFragment<FragmentScanQrcodePayBinding>() {
|
||||
|
||||
@@ -44,7 +45,7 @@ class ScanQrCodePayFragment: BaseFragment<FragmentScanQrcodePayBinding>() {
|
||||
binding.ivPayQrCode.load(payQrCodePic)
|
||||
binding.tvPayResult.text = "待支付(60s)..."
|
||||
|
||||
payActivity.paySuccessCallback(false)
|
||||
paySuccessCallback(false)
|
||||
|
||||
showSubScreen()
|
||||
|
||||
@@ -64,6 +65,7 @@ class ScanQrCodePayFragment: BaseFragment<FragmentScanQrcodePayBinding>() {
|
||||
override fun onDestroy() {
|
||||
delayDismiss()
|
||||
countDownJob?.cancel() // 自动取消订阅,防止内存泄漏
|
||||
payTaskJob?.cancel()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
@@ -110,4 +112,16 @@ class ScanQrCodePayFragment: BaseFragment<FragmentScanQrcodePayBinding>() {
|
||||
)
|
||||
}
|
||||
|
||||
private val intervalExecutor by lazy { IntervalExecutor() }
|
||||
private var payTaskJob: Job? = null
|
||||
fun paySuccessCallback(isVip: Boolean) {
|
||||
payTaskJob = intervalExecutor.startIntervalTaskWithInitialDelay(5000, 10000) {
|
||||
payActivity.queryOrderState(isVip) { paySuccess ->
|
||||
if (paySuccess) {
|
||||
payTaskJob?.cancel()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user