支付完成后跳转群消息
This commit is contained in:
@@ -61,7 +61,7 @@ export interface UseOrderActionsOptions {
|
||||
/**
|
||||
* 打开收银台 UI(二维码弹窗 / App 浏览器跳转)。由调用方注入。
|
||||
* 仅在 payment 未支付时被调用;payment 已支付的情况由 composable 自行提示并 loadOrder。
|
||||
* onPaid:支付完成(轮询发现 paid)时的回调,通常传入 loadOrder。
|
||||
* onPaid:支付完成(轮询发现 paid)时的回调,通常跳转到群消息。
|
||||
*/
|
||||
startCashier: (payment: PaymentOrder, onPaid: () => Promise<void>) => void | Promise<void>
|
||||
/** 修改结账提交成功后触发(如关闭弹窗)。可选。 */
|
||||
@@ -270,11 +270,11 @@ export function useOrderActions(options: UseOrderActionsOptions) {
|
||||
try {
|
||||
const payment = await startOrderPayment(order.value.id, { pay_way: payWay })
|
||||
if (payment.paid) {
|
||||
options.notifySuccess('支付成功,等待号主交接')
|
||||
await loadOrder()
|
||||
options.notifySuccess('支付成功,正在进入群消息')
|
||||
await openOrderChatAfterPayment()
|
||||
return
|
||||
}
|
||||
await options.startCashier(payment, loadOrder)
|
||||
await options.startCashier(payment, openOrderChatAfterPayment)
|
||||
} catch (error) {
|
||||
options.notifyError(readError(error, '支付失败'))
|
||||
} finally {
|
||||
@@ -520,12 +520,30 @@ export function useOrderActions(options: UseOrderActionsOptions) {
|
||||
|
||||
async function openOrderChat() {
|
||||
if (!order.value || openingChat.value) return
|
||||
await navigateToOrderChat(order.value.id, '订单群聊暂不可用')
|
||||
}
|
||||
|
||||
async function openOrderChatAfterPayment() {
|
||||
if (!order.value) return
|
||||
const opened = await navigateToOrderChat(
|
||||
order.value.id,
|
||||
'支付成功,但群消息暂不可用,请稍后从消息进入'
|
||||
)
|
||||
if (!opened) {
|
||||
await loadOrder()
|
||||
}
|
||||
}
|
||||
|
||||
async function navigateToOrderChat(orderID: number, errorMessage: string) {
|
||||
if (openingChat.value) return false
|
||||
openingChat.value = true
|
||||
try {
|
||||
const chat = await fetchOrderChat(order.value.id)
|
||||
const chat = await fetchOrderChat(orderID)
|
||||
await router.push(`${options.chatPathPrefix}${chat.id}`)
|
||||
return true
|
||||
} catch {
|
||||
options.notifyError('订单群聊暂不可用')
|
||||
options.notifyError(errorMessage)
|
||||
return false
|
||||
} finally {
|
||||
openingChat.value = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user