|
@@ -31,6 +31,26 @@ function buildJkesHeaders(token) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function isJkesLoginExpiredPayload(payload) {
|
|
|
|
|
+ if (!payload || typeof payload !== 'object') return false
|
|
|
|
|
+ const code = Number(payload.code)
|
|
|
|
|
+ const msg = String(payload.message ?? payload.msg ?? '').trim()
|
|
|
|
|
+ return (
|
|
|
|
|
+ (code === 500 && msg.includes('无效用户')) ||
|
|
|
|
|
+ (code === 401 && msg.includes('您的认证已经失效'))
|
|
|
|
|
+ )
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function makeJkesLoginExpiredError(payload) {
|
|
|
|
|
+ const msg = '乐跑账号登录失效,请重新使用乐跑登录器进行登录'
|
|
|
|
|
+ const err = new Error(msg)
|
|
|
|
|
+ err.code = 'JKES_AUTH_EXPIRED'
|
|
|
|
|
+ err.loginExpired = true
|
|
|
|
|
+ err.retryable = false
|
|
|
|
|
+ err.payload = payload
|
|
|
|
|
+ return err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @param {string} url 如 /sys/user/getMyInfo
|
|
* @param {string} url 如 /sys/user/getMyInfo
|
|
|
* @param {object} [data] POST body
|
|
* @param {object} [data] POST body
|
|
@@ -86,6 +106,10 @@ async function jkesRequest(url, data, token) {
|
|
|
? JSON.stringify(payload)
|
|
? JSON.stringify(payload)
|
|
|
: String(payload ?? '')
|
|
: String(payload ?? '')
|
|
|
|
|
|
|
|
|
|
+ if (isJkesLoginExpiredPayload(payload)) {
|
|
|
|
|
+ throw makeJkesLoginExpiredError(payload)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (res.status !== 200) {
|
|
if (res.status !== 200) {
|
|
|
logger.error(
|
|
logger.error(
|
|
|
`[JKES] HTTP ${res.status} ${pathPart} 响应: ${payloadPreview.slice(0, 1000)}`
|
|
`[JKES] HTTP ${res.status} ${pathPart} 响应: ${payloadPreview.slice(0, 1000)}`
|
|
@@ -98,6 +122,7 @@ async function jkesRequest(url, data, token) {
|
|
|
|
|
|
|
|
return payload
|
|
return payload
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
|
|
+ if (error?.loginExpired) throw error
|
|
|
const st = error.response?.status
|
|
const st = error.response?.status
|
|
|
const dataErr = error.response?.data
|
|
const dataErr = error.response?.data
|
|
|
const errStr =
|
|
const errStr =
|
|
@@ -113,6 +138,8 @@ async function jkesRequest(url, data, token) {
|
|
|
|
|
|
|
|
module.exports = {
|
|
module.exports = {
|
|
|
jkesRequest,
|
|
jkesRequest,
|
|
|
|
|
+ isJkesLoginExpiredPayload,
|
|
|
|
|
+ makeJkesLoginExpiredError,
|
|
|
get BASE_URL() {
|
|
get BASE_URL() {
|
|
|
return normalizeApiBase(getJkesSettings().apiBase)
|
|
return normalizeApiBase(getJkesSettings().apiBase)
|
|
|
}
|
|
}
|