Commit 9362cf04 authored by tyyin lan's avatar tyyin lan

chore: 礼包充值支付状态查询优化

parent 68478fe2
...@@ -4,12 +4,12 @@ export function fetchUserEquityInfo<T>() { ...@@ -4,12 +4,12 @@ export function fetchUserEquityInfo<T>() {
return request.post<T>('/equityRest/getCurrentEquity.json') return request.post<T>('/equityRest/getCurrentEquity.json')
} }
export function fetchCreateEquityOrder<T>(payload: object) { export function fetchCreateEquityOrder<T>(payload: object, controller: AbortController) {
return request.post<T>('/equityOrderRest/createOrder.json', payload) return request.post<T>('/equityOrderRest/createOrder.json', payload, { signal: controller.signal })
} }
export function fetchGetEquityPayQrCode<T>(payload: object) { export function fetchGetEquityPayQrCode<T>(payload: object, controller: AbortController) {
return request.post<T>('/payRest/pay.json', null, { params: payload }) return request.post<T>('/payRest/pay.json', null, { params: payload, signal: controller.signal })
} }
export function fetchGetPayStatus<T>(payOrderSn: string) { export function fetchGetPayStatus<T>(payOrderSn: string) {
......
...@@ -38,6 +38,7 @@ const payInfo = ref({ ...@@ -38,6 +38,7 @@ const payInfo = ref({
}) })
const isPayQrcodeInvalid = ref(false) const isPayQrcodeInvalid = ref(false)
let payStatusTimer: NodeJS.Timeout | null = null let payStatusTimer: NodeJS.Timeout | null = null
let controller: AbortController | null = null
const isShowPayQrCode = computed(() => { const isShowPayQrCode = computed(() => {
return !!( return !!(
...@@ -97,9 +98,13 @@ function clearPayInfo() { ...@@ -97,9 +98,13 @@ function clearPayInfo() {
} }
function getEquityPayQrCode() { function getEquityPayQrCode() {
controller && controller.abort()
clearPayStatusTimer() clearPayStatusTimer()
clearPayInfo() clearPayInfo()
controller = new AbortController()
const payload = { const payload = {
type: '', type: '',
domain: 'equity', domain: 'equity',
...@@ -124,7 +129,7 @@ function getEquityPayQrCode() { ...@@ -124,7 +129,7 @@ function getEquityPayQrCode() {
break break
} }
fetchCreateEquityOrder<string>(payload).then((orderRes) => { fetchCreateEquityOrder<string>(payload, controller).then((orderRes) => {
if (orderRes.code !== 0) return '' if (orderRes.code !== 0) return ''
const payQrCodePayload = { const payQrCodePayload = {
...@@ -141,26 +146,28 @@ function getEquityPayQrCode() { ...@@ -141,26 +146,28 @@ function getEquityPayQrCode() {
break break
} }
fetchGetEquityPayQrCode<{ packageExtra: string; payOrderSn: string }>(payQrCodePayload).then((qrcodeRes) => { fetchGetEquityPayQrCode<{ packageExtra: string; payOrderSn: string }>(payQrCodePayload, controller!).then(
if (orderRes.code !== 0) return '' (qrcodeRes) => {
if (orderRes.code !== 0) return ''
isPayQrcodeInvalid.value = false isPayQrcodeInvalid.value = false
payInfo.value = { payInfo.value = {
url: qrcodeRes.data.packageExtra.replace('code_url=', ''), url: qrcodeRes.data.packageExtra.replace('code_url=', ''),
payOrderSn: qrcodeRes.data.payOrderSn, payOrderSn: qrcodeRes.data.payOrderSn,
} }
/* 延迟自动取消支付查询 */ /* 延迟自动取消支付查询 */
setTimeout( setTimeout(
() => { () => {
isPayQrcodeInvalid.value = true isPayQrcodeInvalid.value = true
}, },
10 * 60 * 1000, 10 * 60 * 1000,
) )
getPayStatus() getPayStatus()
}) },
)
}) })
} }
...@@ -183,6 +190,8 @@ function getPayStatus() { ...@@ -183,6 +190,8 @@ function getPayStatus() {
}) })
} }
clearPayStatusTimer()
payStatusTimer = setInterval(() => { payStatusTimer = setInterval(() => {
request() request()
}, 1000) }, 1000)
......
...@@ -41,8 +41,9 @@ const payInfo = ref({ ...@@ -41,8 +41,9 @@ const payInfo = ref({
payOrderSn: '', payOrderSn: '',
}) })
const isPayQrcodeInvalid = ref(false) const isPayQrcodeInvalid = ref(false)
let payStatusTimer: NodeJS.Timeout | null = null
const currentPayPrice = ref(0) const currentPayPrice = ref(0)
let payStatusTimer: NodeJS.Timeout | null = null
let controller: AbortController | null = null
watch(isShowPointRechargeModal, (newVal) => { watch(isShowPointRechargeModal, (newVal) => {
if (newVal) { if (newVal) {
...@@ -82,9 +83,13 @@ function getPointsGiftPackageList() { ...@@ -82,9 +83,13 @@ function getPointsGiftPackageList() {
} }
function getEquityPayQrCode() { function getEquityPayQrCode() {
controller && controller.abort()
clearPayStatusTimer() clearPayStatusTimer()
clearPayInfo() clearPayInfo()
controller = new AbortController()
const payload = { const payload = {
type: '', type: '',
domain: 'point', domain: 'point',
...@@ -106,7 +111,7 @@ function getEquityPayQrCode() { ...@@ -106,7 +111,7 @@ function getEquityPayQrCode() {
break break
} }
fetchCreateEquityOrder<string>(payload).then((orderRes) => { fetchCreateEquityOrder<string>(payload, controller).then((orderRes) => {
if (orderRes.code !== 0) return '' if (orderRes.code !== 0) return ''
const payQrCodePayload = { const payQrCodePayload = {
...@@ -123,26 +128,28 @@ function getEquityPayQrCode() { ...@@ -123,26 +128,28 @@ function getEquityPayQrCode() {
break break
} }
fetchGetEquityPayQrCode<{ packageExtra: string; payOrderSn: string }>(payQrCodePayload).then((qrcodeRes) => { fetchGetEquityPayQrCode<{ packageExtra: string; payOrderSn: string }>(payQrCodePayload, controller!).then(
if (orderRes.code !== 0) return '' (qrcodeRes) => {
if (orderRes.code !== 0) return ''
isPayQrcodeInvalid.value = false isPayQrcodeInvalid.value = false
payInfo.value = { payInfo.value = {
url: qrcodeRes.data.packageExtra.replace('code_url=', ''), url: qrcodeRes.data.packageExtra.replace('code_url=', ''),
payOrderSn: qrcodeRes.data.payOrderSn, payOrderSn: qrcodeRes.data.payOrderSn,
} }
/* 延迟自动取消支付查询 */ /* 延迟自动取消支付查询 */
setTimeout( setTimeout(
() => { () => {
isPayQrcodeInvalid.value = true isPayQrcodeInvalid.value = true
}, },
10 * 60 * 1000, 10 * 60 * 1000,
) )
getPayStatus() getPayStatus()
}) },
)
}) })
} }
...@@ -165,16 +172,10 @@ function getPayStatus() { ...@@ -165,16 +172,10 @@ function getPayStatus() {
}) })
} }
const timerId = setInterval(() => { clearPayStatusTimer()
if (!payInfo.value.payOrderSn) { payStatusTimer = setInterval(() => {
clearInterval(timerId)
payStatusTimer = null
return
}
request() request()
}, 1000) }, 1000)
payStatusTimer = timerId
} }
function handlePaymentMethodSwitch(method: 'alipay' | 'wechatpay') { function handlePaymentMethodSwitch(method: 'alipay' | 'wechatpay') {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment