import axios from '@/common/services/axios-instance' // eslint-disable-next-line no-restricted-imports import orginAxios from 'axios' import { sdLocalStorage } from '@/common/services/storage-service' class CubeServices { // 检查token是否过期 checkCubeToken(scope) { // 检查是否存在sd-cube const cubeJson = sdLocalStorage.getItem('cube') // 没有获取过token if (cubeJson === null) { // 没有获取过token,直接获取 return this.getCubeDict().then((res) => { const jsonObj = {} if (res.data.length === 0) { // 没有配置参数,直接返回 return new Promise((resolve) => { resolve(false) }) } else { // 配置了参数,写入 jsonObj.is_open = res.data[0].param0 jsonObj.api_url = res.data[0].param1 sdLocalStorage.setItem('cube', JSON.stringify(jsonObj)) if (jsonObj.is_open === 'YES') { // 后面要改成调用系统接口获取,因为后台还没开发,先写入固定值 return this.setCubeToken(scope, jsonObj) } } }) } else { // 不等于null,说明之前获取过,则先判断是否过期,如果过期,则刷新之后记录新的token,并返回,否则直接返回未过期token const cubeJsonObj = JSON.parse(cubeJson) const isOpen = cubeJsonObj.is_open // 未开启,则直接返回 if (isOpen !== 'YES') { // 如果是NO,则删除,方便下次重新获取 sdLocalStorage.removeItem('cube') return new Promise((resolve) => { resolve(false) }) } const jsonObj = { ...cubeJsonObj, } // 开启了cube,先获取token以及刷新时间 const cubeToken = cubeJsonObj[scope + '_token'] // 没有获取到token,则直接获取 if (!cubeToken) { return this.setCubeToken(scope, jsonObj) } else { // 获取到了token,则判断是否过期 const cubeTokenRefresh = cubeJsonObj[scope + '_token_refresh'] const nowTime = new Date().getTime() // 获取重新获取 if (nowTime > parseFloat(cubeTokenRefresh)) { return this.setCubeToken(scope, jsonObj) } else { // 否则直接返回 return new Promise((resolve) => { resolve(true) }) } } } } // 获取cube字典 getCubeDict(scope) { // 如果开启了参数 return axios({ url: `api/xcoa-mobile/v1/iam-common/common/dict-key-value?keyId=IS_OPEN_CUBE&dictType=value&valueId=IS_OPEN`, }) } // 获取cubetoken getCubeToken(scope) { return axios({ url: 'api/xcoa-mobile/v1/iamcubecontract/fineIntelAuditUrl?scope=' + scope, }) } // 设置cubetoken setCubeToken(scope, jsonObj) { return this.getCubeToken(scope).then((res) => { // token获取失败,则认为未开启cube if (res.data === '') { jsonObj.is_open = 'NO' jsonObj.api_url = '' sdLocalStorage.setItem('cube', JSON.stringify(jsonObj)) return new Promise((resolve) => { resolve(false) }) } // token获取成功,记录token,并返回true jsonObj[scope + '_token'] = res.data.access_token jsonObj[scope + '_token_refresh'] = new Date().getTime() + res.data.expires_in // 写入 sdLocalStorage.setItem('cube', JSON.stringify(jsonObj)) return new Promise((resolve) => { resolve(true) }) }) } } export default new CubeServices()