request.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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 = 'https://food.tjyyky.com/';
  27. // const DOMAIN_KEY = 'https://5y413b7433.yicp.fun/';
  28. const DOMAIN_KEY = 'http://192.168.110.185:48080/';
  29. // const DOMAIN_KEY = 'CURRENT_DOMAIN';
  30. const DEFAULT_DOMAIN = 'http://192.168.110.185:48080/';
  31. // const DEFAULT_DOMAIN = 'https://5y413b7433.yicp.fun/';
  32. // const DEFAULT_DOMAIN = 'https://food.tjyyky.com/';
  33. // 检查缓存中是否已有域名,如果没有则设置默认域名
  34. if (!uni.getStorageSync(DOMAIN_KEY)) {
  35. uni.setStorageSync(DOMAIN_KEY, DEFAULT_DOMAIN);
  36. }
  37. // 获取缓存中的域名
  38. const getDomain = () => {
  39. return uni.getStorageSync(DOMAIN_KEY);
  40. }
  41. // 设置缓存中的域名
  42. const setDomain = (domain) => {
  43. uni.setStorageSync(DOMAIN_KEY, domain);
  44. }
  45. /**
  46. * 发送请求
  47. */
  48. function baseRequest(url, method, data, { noAuth = false, noVerify = false }, params) {
  49. let Url = HTTP_REQUEST_URL, header = HEADER;
  50. if (params != undefined) {
  51. header = HEADERPARAMS;
  52. }
  53. if (!noAuth) {
  54. //登录过期自动登录
  55. if (!store.state.app.token && !checkLogin()) {
  56. toLogin();
  57. return Promise.reject({
  58. msg: '未登录'
  59. });
  60. }
  61. }
  62. deleteUndefinedProperties(data);
  63. // TODO 补个 header 多租户
  64. if (url.indexOf('app-api') >= 0) {
  65. header = {
  66. ...header
  67. }
  68. header['tenant-id'] = 1;
  69. }
  70. // 终端
  71. header['terminal'] = getTerminal();
  72. if (store.state.app.token) {
  73. header['Authorization'] = 'Bearer ' + store.state.app.token;
  74. }
  75. const isUseSleep = uni.getStorageSync("useSleep");
  76. // : 'http://yunai.natapp1.cc/' + url, // TODO 芋艿:搞个 url 的配置
  77. // : 'http://127.0.0.1:48080/' + url, // TODO 芋艿:搞个 url 的配置
  78. // : 'http://api-dashboard.yudao.iocoder.cn/' + url, // TODO 芋艿:搞个 url 的配置
  79. const baseUrl = 'http://192.168.110.185:48060/';
  80. const sleepUrl = 'http://api.slaaplekker.cn';
  81. return new Promise((resolve, reject) => {
  82. uni.request({
  83. url: url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url,
  84. method: method || 'GET',
  85. header: header,
  86. data: data || {},
  87. success: (res) => {
  88. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '成功接口');
  89. console.log(res, '我接口请求成功了');
  90. if (noVerify)
  91. resolve(res.data, res);
  92. else if (res.data.code === 200 || res.data.code === 0)
  93. resolve(res.data, res);
  94. else if ([410000, 410001, 410002, 401].indexOf(res.data.code) !== -1) {
  95. toLogin();
  96. reject(res.data);
  97. } else
  98. reject(res.data.msg || res.data.message || '系统错误');
  99. },
  100. fail: (msg) => {
  101. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '失败接口');
  102. console.log(msg, '我是失败接口');
  103. reject('请求失败');
  104. }
  105. });
  106. });
  107. }
  108. const request = {};
  109. ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
  110. request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt || {}, params);
  111. });
  112. export {
  113. getDomain,
  114. setDomain
  115. };
  116. export default request;