request.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import {
  2. HTTP_REQUEST_URL,
  3. HEADER,
  4. TOKENNAME,
  5. HEADERPARAMS
  6. } from '@/config/app';
  7. import {
  8. toLogin,
  9. checkLogin
  10. } from '../libs/login';
  11. import store from '../store';
  12. import { getTerminal } from "./util";
  13. // TODO 芋艿:临时解决 uniapp 在小程序,undefined 会被 tostring 的问题
  14. function deleteUndefinedProperties(obj) {
  15. for (let key in obj) {
  16. if (obj.hasOwnProperty(key)) {
  17. if (typeof obj[key] === 'object' && obj[key] !== null) {
  18. deleteUndefinedProperties(obj[key]); // 递归调用,处理嵌套的对象
  19. } else if (obj[key] === undefined) {
  20. delete obj[key];
  21. }
  22. }
  23. }
  24. }
  25. // 定义并存储域名变量
  26. const DOMAIN_KEY = 'CURRENT_DOMAIN';
  27. const DEFAULT_DOMAIN = 'https://5y413b7433.yicp.fun/';
  28. // 检查缓存中是否已有域名,如果没有则设置默认域名
  29. if (!uni.getStorageSync(DOMAIN_KEY)) {
  30. uni.setStorageSync(DOMAIN_KEY, DEFAULT_DOMAIN);
  31. }
  32. // 获取缓存中的域名
  33. const getDomain = () => {
  34. return uni.getStorageSync(DOMAIN_KEY);
  35. }
  36. // 设置缓存中的域名
  37. const setDomain = (domain) => {
  38. uni.setStorageSync(DOMAIN_KEY, domain);
  39. }
  40. /**
  41. * 发送请求
  42. */
  43. function baseRequest(url, method, data, { noAuth = false, noVerify = false }, params) {
  44. let Url = HTTP_REQUEST_URL, header = HEADER;
  45. if (params != undefined) {
  46. header = HEADERPARAMS;
  47. }
  48. if (!noAuth) {
  49. //登录过期自动登录
  50. if (!store.state.app.token && !checkLogin()) {
  51. toLogin();
  52. return Promise.reject({
  53. msg: '未登录'
  54. });
  55. }
  56. }
  57. deleteUndefinedProperties(data);
  58. // TODO 补个 header 多租户
  59. if (url.indexOf('app-api') >= 0) {
  60. header = {
  61. ...header
  62. }
  63. header['tenant-id'] = 1;
  64. }
  65. // 终端
  66. header['terminal'] = getTerminal();
  67. if (store.state.app.token) {
  68. header['Authorization'] = 'Bearer ' + store.state.app.token;
  69. }
  70. const isUseSleep = uni.getStorageSync("useSleep");
  71. console.log(uni.getStorageSync("useSleep"), '判断从哪来的,true代表从首页来');
  72. // : 'http://yunai.natapp1.cc/' + url, // TODO 芋艿:搞个 url 的配置
  73. // : 'http://127.0.0.1:48080/' + url, // TODO 芋艿:搞个 url 的配置
  74. // : 'http://api-dashboard.yudao.iocoder.cn/' + url, // TODO 芋艿:搞个 url 的配置
  75. const baseUrl = 'http://192.168.110.185:48060/';
  76. const sleepUrl = 'http://api.slaaplekker.cn';
  77. return new Promise((resolve, reject) => {
  78. uni.request({
  79. url: url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url,
  80. method: method || 'GET',
  81. header: header,
  82. data: data || {},
  83. success: (res) => {
  84. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '成功接口');
  85. console.log(res, '我接口请求成功了');
  86. if (noVerify)
  87. resolve(res.data, res);
  88. else if (res.data.code === 200 || res.data.code === 0)
  89. resolve(res.data, res);
  90. else if ([410000, 410001, 410002, 401].indexOf(res.data.code) !== -1) {
  91. toLogin();
  92. reject(res.data);
  93. } else
  94. reject(res.data.msg || res.data.message || '系统错误');
  95. },
  96. fail: (msg) => {
  97. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '失败接口');
  98. console.log(msg, '我是失败接口');
  99. reject('请求失败');
  100. }
  101. });
  102. });
  103. }
  104. const request = {};
  105. ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
  106. request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt || {}, params);
  107. });
  108. export {
  109. getDomain,
  110. setDomain
  111. };
  112. export default request;