request.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. // request.js
  2. import Notify from '../miniprogram_npm/@vant/weapp/notify/notify';
  3. // 配置项
  4. const config = {
  5. // baseURL: 'http://192.168.1.18:8901', // 基础URL
  6. baseURL: 'https://www.xsip.cn', // 基础URL
  7. timeout: 300000, // 超时时间(单位ms)
  8. header: {
  9. 'content-type': 'application/json', // 默认请求头
  10. // 其他全局请求头...
  11. },
  12. // 其他全局配置...
  13. tabbar:["pages/index/index","pages/hotProduct/hotProduct","pages/mine/mine"]
  14. };
  15. const apiUrl = {
  16. develop: 'https://www.xsip.cn/test', // 开发环境地址
  17. trial: 'https://www.xsip.cn/test', // 测试环境地址
  18. release: 'https://www.xsip.cn' // 生产环境地址
  19. };
  20. const accountInfo = wx.getAccountInfoSync();
  21. const envVersion = accountInfo.miniProgram.envVersion;
  22. config.baseURL = apiUrl[envVersion];
  23. function getPages(){
  24. var obj = {
  25. type: 'danger'
  26. }
  27. // var pages = getCurrentPages()
  28. // var route = pages[pages.length - 1]?.route
  29. // console.log(wx.getStorageSync('isComponent'))
  30. // if(route && config.tabbar.indexOf(route)==-1){
  31. // obj.top = wx.getStorageSync('height')
  32. // }
  33. if(wx.getStorageSync('isComponent')){
  34. obj.top = wx.getStorageSync('height')
  35. }
  36. return obj
  37. }
  38. // 封装请求方法
  39. function request(url, method = 'GET', data = {}, header = {},isLogin=true) {
  40. return new Promise((resolve, reject) => {
  41. var str = ''
  42. if(method === 'GET'){
  43. str ='?' + Object.keys(data).map(key => `${key}=${encodeURIComponent(data[key])}`).join('&')
  44. }
  45. wx.request({
  46. url: config.baseURL + url + str,
  47. method: method.toUpperCase(),
  48. data: method === 'GET' ? {} : data, // GET请求时将data置为空对象
  49. header: {
  50. ...config.header,
  51. ...header,
  52. "Authorization": wx.getStorageSync('token')
  53. // "Cookie": wx.getStorageSync('token')
  54. },
  55. timeout: config.timeout,
  56. success: function(res){
  57. var obj = getPages()
  58. wx.hideLoading()
  59. // 根据业务逻辑处理成功响应
  60. if (res.data && res.data.code === 200) { // 假设服务器返回code为200表示成功
  61. resolve(res.data);
  62. } else if(res.data && !res.data.code){
  63. resolve(res.data);
  64. }
  65. else {
  66. switch(res.data.code){
  67. case 901:
  68. resolve(res.data);
  69. break;
  70. case 401:
  71. if(isLogin){
  72. // Notify({ type: 'danger', message: '未登录',top:'90' });
  73. obj.message = '未登录'
  74. wx.navigateTo({
  75. url: '/pages/login/login',
  76. })
  77. }
  78. wx.setStorageSync('token', '')
  79. break;
  80. case 606://未开通会员或会员过期
  81. wx.showModal({
  82. title: '',
  83. content: '前往会员中心开通会员',
  84. complete: (res) => {
  85. if (res.cancel) {}
  86. if (res.confirm) {
  87. wx.navigateTo({
  88. url: '/pages/memberCenter/menberCenter2',
  89. })
  90. }
  91. }
  92. })
  93. break;
  94. // case 607://已开通会员且超过额度
  95. // break;
  96. default:
  97. // obj.message = '请求失败'
  98. obj.message = res.data.message
  99. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  100. }
  101. // wx.showToast({
  102. // title: '请求失败',
  103. // icon: 'error',
  104. // duration: 2000
  105. // })
  106. console.log(obj)
  107. if(obj.message){
  108. Notify(obj)
  109. }
  110. reject(res.data.message || '未知错误');
  111. }
  112. // if($stopWuxRefresher()){
  113. // $stopWuxRefresher()
  114. // }
  115. },
  116. fail: function(error) {
  117. console.log(error)
  118. wx.hideLoading()
  119. var obj = getPages()
  120. // 处理请求失败
  121. // wx.showToast({
  122. // title: '请求失败',
  123. // icon: 'error',
  124. // duration: 2000
  125. // })
  126. obj.message = '请求超时'
  127. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  128. Notify(obj)
  129. reject(error);
  130. // if($stopWuxRefresher()){
  131. // $stopWuxRefresher()
  132. // }
  133. },
  134. });
  135. });
  136. }
  137. function upload(url="/fileManager/uploadNormalFile", path = '', header = {},formData={}) {
  138. return new Promise((resolve, reject) => {
  139. wx.uploadFile({
  140. url: config.baseURL + url, //仅为示例,非真实的接口地址
  141. filePath: path,
  142. name: 'multipartFile',
  143. formData: formData,
  144. header: {
  145. ...config.header,
  146. ...header,
  147. "Authorization": wx.getStorageSync('token')
  148. },
  149. timeout: config.timeout,
  150. success: function(res){
  151. wx.hideLoading()
  152. var obj = getPages()
  153. if(res.data){
  154. res.data = JSON.parse(res.data)
  155. }
  156. // 根据业务逻辑处理成功响应
  157. if (res.data && res.data.code === 200) { // 假设服务器返回code为200表示成功
  158. resolve(res.data);
  159. }else {
  160. switch(res.data.code){
  161. case 401:
  162. if(isLogin){
  163. // Notify({ type: 'danger', message: '未登录',top:'90' });
  164. obj.message = '未登录'
  165. wx.navigateTo({
  166. url: '/pages/login/login',
  167. })
  168. }
  169. wx.setStorageSync('token', '')
  170. break;
  171. default:
  172. // obj.message = '请求失败'
  173. obj.message = res.data.message
  174. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  175. }
  176. // wx.showToast({
  177. // title: '请求失败',
  178. // icon: 'error',
  179. // duration: 2000
  180. // })
  181. console.log(obj)
  182. if(obj.message){
  183. Notify(obj)
  184. }
  185. reject(res.data.message || '未知错误');
  186. }
  187. // if($stopWuxRefresher()){
  188. // $stopWuxRefresher()
  189. // }
  190. },
  191. fail: function(error) {
  192. console.log(error)
  193. wx.hideLoading()
  194. var obj = getPages()
  195. // 处理请求失败
  196. // wx.showToast({
  197. // title: '请求失败',
  198. // icon: 'error',
  199. // duration: 2000
  200. // })
  201. obj.message = '请求超时'
  202. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  203. Notify(obj)
  204. reject(error);
  205. },
  206. });
  207. });
  208. }
  209. // 导出请求方法
  210. module.exports = {
  211. get: (url, data,isLogin, header) => request(url, 'GET', data, header,isLogin),
  212. post: (url, data,isLogin, header) => request(url, 'POST', data, header,isLogin),
  213. // 可以继续添加其他方法,如put, delete等
  214. // ...
  215. upload: ( path,formData,url, header) => upload(url, path, header,formData),
  216. };