import { HTTP_REQUEST_URL, HEADER, TOKENNAME, HEADERPARAMS } from '@/config/app'; import { toLogin, checkLogin } from '../libs/login'; import store from '../store'; import { getTerminal } from "./util"; // TODO 芋艿:临时解决 uniapp 在小程序,undefined 会被 tostring 的问题 function deleteUndefinedProperties(obj) { for (let key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object' && obj[key] !== null) { deleteUndefinedProperties(obj[key]); // 递归调用,处理嵌套的对象 } else if (obj[key] === undefined) { delete obj[key]; } } } } // 定义并存储域名变量 const DOMAIN_KEY = 'CURRENT_DOMAIN'; const DEFAULT_DOMAIN = 'https://5y413b7433.yicp.fun/'; // 检查缓存中是否已有域名,如果没有则设置默认域名 if (!uni.getStorageSync(DOMAIN_KEY)) { uni.setStorageSync(DOMAIN_KEY, DEFAULT_DOMAIN); } // 获取缓存中的域名 const getDomain = () => { return uni.getStorageSync(DOMAIN_KEY); } // 设置缓存中的域名 const setDomain = (domain) => { uni.setStorageSync(DOMAIN_KEY, domain); } /** * 发送请求 */ function baseRequest(url, method, data, { noAuth = false, noVerify = false }, params) { let Url = HTTP_REQUEST_URL, header = HEADER; if (params != undefined) { header = HEADERPARAMS; } if (!noAuth) { //登录过期自动登录 if (!store.state.app.token && !checkLogin()) { toLogin(); return Promise.reject({ msg: '未登录' }); } } deleteUndefinedProperties(data); // TODO 补个 header 多租户 if (url.indexOf('app-api') >= 0) { header = { ...header } header['tenant-id'] = 1; } // 终端 header['terminal'] = getTerminal(); if (store.state.app.token) { header['Authorization'] = 'Bearer ' + store.state.app.token; } const isUseSleep = uni.getStorageSync("useSleep"); // : 'http://yunai.natapp1.cc/' + url, // TODO 芋艿:搞个 url 的配置 // : 'http://127.0.0.1:48080/' + url, // TODO 芋艿:搞个 url 的配置 // : 'http://api-dashboard.yudao.iocoder.cn/' + url, // TODO 芋艿:搞个 url 的配置 const baseUrl = 'http://192.168.110.185:48060/'; const sleepUrl = 'http://api.slaaplekker.cn'; return new Promise((resolve, reject) => { uni.request({ url: url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, method: method || 'GET', header: header, data: data || {}, success: (res) => { console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '成功接口'); console.log(res, '我接口请求成功了'); if (noVerify) resolve(res.data, res); else if (res.data.code === 200 || res.data.code === 0) resolve(res.data, res); else if ([410000, 410001, 410002, 401].indexOf(res.data.code) !== -1) { toLogin(); reject(res.data); } else reject(res.data.msg || res.data.message || '系统错误'); }, fail: (msg) => { console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '失败接口'); console.log(msg, '我是失败接口'); reject('请求失败'); } }); }); } const request = {}; ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => { request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt || {}, params); }); export { getDomain, setDomain }; export default request;