diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index e33ce39..c985647 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -134,15 +134,12 @@ export const useUserStore = defineStore({ }, async loginByOpenId(openId: string) { try { - // // 先校验当前登录的用户的openid,如果和传入的openid匹配,直接返回true - // if ( - // this.userdata && - // this.userdata.openId && - // openId && - // this.userdata.openId === openId - // ) { - // return true; - // } + // 先校验当前登录的用户的openid,如果和传入的openid匹配,直接返回true + if (this.userdata && this.userdata.openId && this.userdata.userType === "JS" + && openId && this.userdata.openId === openId + ) { + return true; + } // 如果当前登录的用户的openid和传入的openid不匹配,则调用checkOpenId接口进行校验 const res = await checkOpenId({ openId, @@ -171,7 +168,7 @@ export const useUserStore = defineStore({ */ checkToken() { // 先校验当前登录的用户的openid - if (this.userdata && this.userdata.openId) { + if (this.userdata && this.userdata.openId && this.userdata.userType === "JS") { return true; } uni.reLaunch({ diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts index 97a1e46..7fb37f6 100644 --- a/src/utils/request/index.ts +++ b/src/utils/request/index.ts @@ -63,9 +63,30 @@ export const interceptor = { } if (response.data) { if (response.data.resultCode === -9998) { - uni.reLaunch({ - url: "/pages/system/login/login", - }); + const store = useUserStore(); + const userData = store.getUser || {}; + const openId = userData.openId || ''; + store.logout(); + if (openId && openId.length) { + // 返回一个新的Promise,用于重新登录并重新调用接口 + return new Promise((resolve, reject) => { + store.loginByOpenId(openId).then(() => { + // 重新登录成功后,重新发送原始请求 + // 使用原始请求配置,但确保包含所有必要参数 + const originalConfig = response.config; + request(Object.assign({}, originalConfig)).then((newResponse: any) => { + resolve(newResponse); + }).catch((error) => { + reject(error); + }); + }).catch((error) => { + // 重新登录失败,显示登录过期模态框 + console.error("重新登录失败:", error); + _loginExpiredModal(); + reject(error); + }); + }); + } } return response.data; } else {