You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import {
  2. getStore,
  3. } from "./index.js"
  4. import RequestManager from "./requestManager.js"
  5. import {
  6. configObj
  7. } from "../config.js"
  8. import {
  9. repeatLogin
  10. } from "./etcReq.js"
  11. // 请求锁
  12. const manager = new RequestManager()
  13. let failNum = 0
  14. class RequestEtc {
  15. constructor() {}
  16. post(url, config = {}) {
  17. let requestId = manager.generateId('post', url, config.data)
  18. config.method = 'post'
  19. return this._request(url, config, requestId)
  20. }
  21. _request(url, config = {}, requestId) {
  22. return new Promise((resolve, reject) => {
  23. if (!requestId) {
  24. console.log("pss重复请求 " + params.filename)
  25. resolve({
  26. code: -1,
  27. msg: "pss重复请求 " + params.filename
  28. })
  29. return
  30. }
  31. const {
  32. method,
  33. header,
  34. data,
  35. } = config
  36. console.log("请求参数")
  37. console.log(data)
  38. console.log("请求地址\n" + url)
  39. wx.request({
  40. url: url,
  41. method,
  42. header: header,
  43. data,
  44. complete(response) {
  45. manager.deleteById(requestId)
  46. console.log("接口返回response", response)
  47. if (response.statusCode === 200) {
  48. getResponse(response, resolve, url, config)
  49. } else {
  50. wx.showModal({
  51. title: '提示',
  52. content: response.errMsg || "网络异常,请确认网络是否正常。",
  53. showCancel: false
  54. })
  55. resolve({
  56. code: -1,
  57. message: response.errMsg || "网络异常,请确认网络是否正常。",
  58. })
  59. }
  60. },
  61. })
  62. })
  63. }
  64. }
  65. let _request = new RequestEtc()
  66. export async function requestEtcFnc(url, config = {
  67. loading: true,
  68. isNeedAuth: true,
  69. isNeedFailPop: true,
  70. header: {},
  71. }) {
  72. let {
  73. method,
  74. header = {},
  75. isNeedAuth,
  76. } = config
  77. const accessToken = getStore("etc-accessToken")
  78. url = !url.includes("http") ? `${configObj.reqEtcUrl}${url}` : url;
  79. config.method = method || 'post'
  80. let auth = isNeedAuth || true
  81. console.log(auth)
  82. if (auth) {
  83. config.header = {
  84. ...header,
  85. "Access-Token": accessToken
  86. }
  87. } else {
  88. config.header = {
  89. ...header,
  90. }
  91. }
  92. console.log(config);
  93. const res = await _request.post(url, config)
  94. return res
  95. }
  96. // 处理回参
  97. async function getResponse(response, resolve, url, config = {}) {
  98. let res = response.data
  99. const {
  100. code,
  101. message
  102. } = res
  103. if (code == 401002) {
  104. failNum++
  105. if (failNum < 2) {
  106. // 登录过期,请重新登录
  107. const rp = await repeatLogin()
  108. if (rp.code == 0) {
  109. resolve(requestEtcFnc(url, config))
  110. } else {
  111. res = rp
  112. }
  113. }
  114. } else if (code == 403001 || code == 403004 || code == 403003) {
  115. if (config.isNeedFailPop) {
  116. wx.showModal({
  117. title: '提示',
  118. content: message,
  119. showCancel: false
  120. })
  121. }
  122. wx.hideLoading()
  123. }
  124. failNum = 0
  125. resolve(res)
  126. }