支付完成后跳转群消息

This commit is contained in:
yml
2026-06-18 16:06:39 +08:00
parent 275663c4ea
commit a0b5ed2efb
5 changed files with 42 additions and 13 deletions
@@ -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
}