|
@@ -1,165 +1,160 @@
|
|
|
-import axios from "axios";
|
|
|
+import axios from 'axios';
|
|
|
+import { UniAdapter } from 'uniapp-axios-adapter';
|
|
|
+import store from '@/store';
|
|
|
import {
|
|
|
- UniAdapter
|
|
|
-} from 'uniapp-axios-adapter'
|
|
|
-import store from '@/store'
|
|
|
-import {
|
|
|
- getAccessToken,
|
|
|
- setAccessToken,
|
|
|
- setRefreshToken,
|
|
|
- refreshToken,
|
|
|
- isRefreshRequest
|
|
|
-} from "./auth"
|
|
|
+ getAccessToken,
|
|
|
+ setAccessToken,
|
|
|
+ setRefreshToken,
|
|
|
+ refreshToken,
|
|
|
+ isRefreshRequest,
|
|
|
+} from './auth';
|
|
|
|
|
|
// 每次请求都创建一个新的实例
|
|
|
const instance = axios.create({
|
|
|
- // baseURL: "https://test.api.chelvc.com",
|
|
|
- // baseURL: "http://192.168.68.77:11000",
|
|
|
- baseURL: "https://358175z5l5.yicp.fun",
|
|
|
- timeout: 10000,
|
|
|
- adapter: UniAdapter
|
|
|
+ baseURL: 'https://test.api.chelvc.com',
|
|
|
+ // baseURL: "http://192.168.68.77:11000",
|
|
|
+ // baseURL: "https://358175z5l5.yicp.fun",
|
|
|
+ timeout: 10000,
|
|
|
+ adapter: UniAdapter,
|
|
|
});
|
|
|
|
|
|
-instance.interceptors.request.use((config) => {
|
|
|
- uni.showLoading({
|
|
|
- title: '加载中'
|
|
|
- })
|
|
|
- // 带上token 和其他请求头信息
|
|
|
- if (store.getters.accessToken) {
|
|
|
- config.headers['Authorization'] = `Bearer ${getAccessToken()}`
|
|
|
- }
|
|
|
- console.log("@@@@config",config)
|
|
|
- config.headers = {
|
|
|
- ...config.headers,
|
|
|
- platform: store.getters.app.system.osName.toUpperCase(),
|
|
|
- terminal: 'APPLET', // TODO:
|
|
|
- version: store.getters.app.system.appVersion.toUpperCase(),
|
|
|
- // scope: store.getters.scope,
|
|
|
- device: store.getters.app.system.deviceId,
|
|
|
- timestamp: new Date().getTime()
|
|
|
- }
|
|
|
- return config
|
|
|
-})
|
|
|
-
|
|
|
-instance.interceptors.response.use(async (res) => {
|
|
|
- uni.hideLoading()
|
|
|
- const {
|
|
|
- code,
|
|
|
- data,
|
|
|
- message
|
|
|
- } = res.data
|
|
|
- if (data && data.accessToken) {
|
|
|
- setAccessToken(data.accessToken)
|
|
|
- }
|
|
|
- if (data && data.refreshToken) {
|
|
|
- setRefreshToken(data.refreshToken)
|
|
|
- }
|
|
|
- // 未知错误
|
|
|
- if (code === 'ERROR') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'未知错误'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 请求错误
|
|
|
- if (code === 'BAD_REQUEST') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'请求异常'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 拒绝访问
|
|
|
- if (code === 'FORBIDDEN') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'拒绝访问'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- // 请求参数异常
|
|
|
- if (code === 'PARAMETER_INVALID') {
|
|
|
- const errorTextList = Object.keys(res.data.data).map(key => {
|
|
|
- return res.data.data[key]
|
|
|
- })
|
|
|
- uni.showToast({
|
|
|
- title: errorTextList.join(','),
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 访问资源异常
|
|
|
- if (code === 'UNAVAILABLE') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'访问资源不可用'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- // 未登录
|
|
|
- if (code === 'UNAUTHORIZED') {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 身份切换
|
|
|
- if (code === 'SCOPE_CHANGED') {
|
|
|
- uni.reLaunch({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- uni.showToast({
|
|
|
- title: '您的身份信息已切换',
|
|
|
- icon: 'none',
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- if (code === 'TOKEN_CHANGED') {
|
|
|
- uni.showModal({
|
|
|
- title: '提示',
|
|
|
- content: res.data.messsage,
|
|
|
- showCancel: false,
|
|
|
- success: (res) => {
|
|
|
- if (res.confirm) {
|
|
|
- // 小程序用户跳转到我的页面 , 登录状态为未登录
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // token过期处理
|
|
|
- if (code === 'TOKEN_EXPIRED' && !isRefreshRequest(res.config)) {
|
|
|
- // 刷新token
|
|
|
- const isSuccess = await refreshToken()
|
|
|
- if (isSuccess) {
|
|
|
- // 重新请求
|
|
|
- instance.config.headers.authorization = `Bearer ${getAccessToken()}`
|
|
|
- const resp = await instance.request(res.config)
|
|
|
- return resp
|
|
|
- } else {
|
|
|
- // 无权限
|
|
|
- store.commit('SET_ACCESS_TOKEN', '')
|
|
|
- store.commit('SET_REFRESH_TOKEN', '')
|
|
|
- uni.showModal({
|
|
|
- title: '提示',
|
|
|
- content: "您的登录信息已过期,请重新登录",
|
|
|
- showCancel: false,
|
|
|
- success: (res) => {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- return res.data
|
|
|
-}, (err) => {
|
|
|
- console.log("->", err)
|
|
|
- uni.hideLoading()
|
|
|
+instance.interceptors.request.use(config => {
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中',
|
|
|
+ });
|
|
|
+ // 带上token 和其他请求头信息
|
|
|
+ if (store.getters.accessToken) {
|
|
|
+ config.headers['Authorization'] = `Bearer ${getAccessToken()}`;
|
|
|
+ }
|
|
|
+ console.log('@@@@config', config);
|
|
|
+ config.headers = {
|
|
|
+ ...config.headers,
|
|
|
+ platform: store.getters.app.system.osName.toUpperCase(),
|
|
|
+ terminal: 'APPLET', // TODO:
|
|
|
+ version: store.getters.app.system.appVersion.toUpperCase(),
|
|
|
+ // scope: store.getters.scope,
|
|
|
+ device: store.getters.app.system.deviceId,
|
|
|
+ timestamp: new Date().getTime(),
|
|
|
+ };
|
|
|
+ return config;
|
|
|
});
|
|
|
|
|
|
+instance.interceptors.response.use(
|
|
|
+ async res => {
|
|
|
+ uni.hideLoading();
|
|
|
+ const { code, data, message } = res.data;
|
|
|
+ if (data && data.accessToken) {
|
|
|
+ setAccessToken(data.accessToken);
|
|
|
+ }
|
|
|
+ if (data && data.refreshToken) {
|
|
|
+ setRefreshToken(data.refreshToken);
|
|
|
+ }
|
|
|
+ // 未知错误
|
|
|
+ if (code === 'ERROR') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message : '未知错误'}`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ // 请求错误
|
|
|
+ if (code === 'BAD_REQUEST') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message : '请求异常'}`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ // 拒绝访问
|
|
|
+ if (code === 'FORBIDDEN') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message : '拒绝访问'}`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 请求参数异常
|
|
|
+ if (code === 'PARAMETER_INVALID') {
|
|
|
+ const errorTextList = Object.keys(res.data.data).map(key => {
|
|
|
+ return res.data.data[key];
|
|
|
+ });
|
|
|
+ uni.showToast({
|
|
|
+ title: errorTextList.join(','),
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ // 访问资源异常
|
|
|
+ if (code === 'UNAVAILABLE') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message : '访问资源不可用'}`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 未登录
|
|
|
+ if (code === 'UNAUTHORIZED') {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/login/index',
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ // 身份切换
|
|
|
+ if (code === 'SCOPE_CHANGED') {
|
|
|
+ uni.reLaunch({
|
|
|
+ url: '/pages/login/index',
|
|
|
+ });
|
|
|
+ uni.showToast({
|
|
|
+ title: '您的身份信息已切换',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ if (code === 'TOKEN_CHANGED') {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: res.data.messsage,
|
|
|
+ showCancel: false,
|
|
|
+ success: res => {
|
|
|
+ if (res.confirm) {
|
|
|
+ // 小程序用户跳转到我的页面 , 登录状态为未登录
|
|
|
+ }
|
|
|
+ },
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ // token过期处理
|
|
|
+ if (code === 'TOKEN_EXPIRED' && !isRefreshRequest(res.config)) {
|
|
|
+ // 刷新token
|
|
|
+ const isSuccess = await refreshToken();
|
|
|
+ if (isSuccess) {
|
|
|
+ // 重新请求
|
|
|
+ instance.config.headers.authorization = `Bearer ${getAccessToken()}`;
|
|
|
+ const resp = await instance.request(res.config);
|
|
|
+ return resp;
|
|
|
+ } else {
|
|
|
+ // 无权限
|
|
|
+ store.commit('SET_ACCESS_TOKEN', '');
|
|
|
+ store.commit('SET_REFRESH_TOKEN', '');
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '您的登录信息已过期,请重新登录',
|
|
|
+ showCancel: false,
|
|
|
+ success: res => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/login/index',
|
|
|
+ });
|
|
|
+ },
|
|
|
+ });
|
|
|
+ return res.data;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res.data;
|
|
|
+ },
|
|
|
+ err => {
|
|
|
+ console.log('->', err);
|
|
|
+ uni.hideLoading();
|
|
|
+ },
|
|
|
+);
|
|
|
+
|
|
|
export default instance;
|