优化
This commit is contained in:
+21
-11
@@ -17,6 +17,10 @@ function unauthorized(response) {
|
||||
return response?.statusCode === 401 || code === 'A0401'
|
||||
}
|
||||
|
||||
function successful(response, body) {
|
||||
return response?.statusCode === 200 && ['00000', '200'].includes(String(body?.code))
|
||||
}
|
||||
|
||||
async function refreshOverseasToken() {
|
||||
if (!session.refreshToken) throw new Error('登录状态已过期,请重新登录')
|
||||
if (!refreshPromise) {
|
||||
@@ -46,26 +50,32 @@ export async function overseasRequest(method, path, data, retry = true) {
|
||||
response = await rawRequest(method, path, data, session.token)
|
||||
}
|
||||
const body = response?.data || {}
|
||||
if (response.statusCode !== 200 || String(body.code) !== '200') throw errorFrom(response, '海外作业请求失败')
|
||||
if (!successful(response, body)) throw errorFrom(response, '海外作业请求失败')
|
||||
return body.data
|
||||
}
|
||||
|
||||
export function overseasUpload(path, filePath, name = 'file') {
|
||||
function rawUpload(path, filePath, name, token) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url: `${session.apiBase}${path}`,
|
||||
filePath,
|
||||
name,
|
||||
header: { Authorization: `Bearer ${session.token}` },
|
||||
success(response) {
|
||||
let body = null
|
||||
try { body = JSON.parse(response.data || '{}') } catch (_) { /* handled below */ }
|
||||
if (response.statusCode !== 200 || String(body?.code) !== '200') {
|
||||
reject(errorFrom({ ...response, data: body }, '卸柜照片上传失败')); return
|
||||
}
|
||||
resolve(body.data)
|
||||
},
|
||||
header: { Authorization: `Bearer ${token}` },
|
||||
success: resolve,
|
||||
fail: (cause) => reject(Object.assign(new Error(cause.errMsg || '卸柜照片上传失败'), { network: true }))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export async function overseasUpload(path, filePath, name = 'file', retry = true) {
|
||||
let response = await rawUpload(path, filePath, name, session.token)
|
||||
let body = null
|
||||
try { body = JSON.parse(response.data || '{}') } catch (_) { /* handled below */ }
|
||||
if (retry && unauthorized({ ...response, data: body })) {
|
||||
await refreshOverseasToken()
|
||||
response = await rawUpload(path, filePath, name, session.token)
|
||||
try { body = JSON.parse(response.data || '{}') } catch (_) { body = null }
|
||||
}
|
||||
if (!successful(response, body)) throw errorFrom({ ...response, data: body }, '卸柜照片上传失败')
|
||||
return body.data
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user