import { getStore, } from "./index.js" import RequestManager from "./requestManager.js" import { configObj } from "../config.js" import { repeatLogin } from "./etcReq.js" // 请求锁 const manager = new RequestManager() let failNum = 0 class RequestEtc { constructor() {} post(url, config = {}) { let requestId = manager.generateId('post', url, config.data) config.method = 'post' return this._request(url, config, requestId) } _request(url, config = {}, requestId) { return new Promise((resolve, reject) => { if (!requestId) { console.log("pss重复请求 " + params.filename) resolve({ code: -1, msg: "pss重复请求 " + params.filename }) return } const { method, header, data, } = config console.log("请求参数") console.log(data) console.log("请求地址\n" + url) wx.request({ url: url, method, header: header, data, complete(response) { manager.deleteById(requestId) console.log("接口返回response", response) if (response.statusCode === 200) { getResponse(response, resolve, url, config) } else { wx.showModal({ title: '提示', content: response.errMsg || "网络异常,请确认网络是否正常。", showCancel: false }) resolve({ code: -1, message: response.errMsg || "网络异常,请确认网络是否正常。", }) } }, }) }) } } let _request = new RequestEtc() export async function requestEtcFnc(url, config = { loading: true, isNeedAuth: true, isNeedFailPop: true, header: {}, }) { let { method, header = {}, isNeedAuth, } = config const accessToken = getStore("etc-accessToken") url = !url.includes("http") ? `${configObj.reqEtcUrl}${url}` : url; config.method = method || 'post' let auth = isNeedAuth || true console.log(auth) if (auth) { config.header = { ...header, "Access-Token": accessToken } } else { config.header = { ...header, } } console.log(config); const res = await _request.post(url, config) return res } // 处理回参 async function getResponse(response, resolve, url, config = {}) { let res = response.data const { code, message } = res if (code == 401002) { failNum++ if (failNum < 2) { // 登录过期,请重新登录 const rp = await repeatLogin() if (rp.code == 0) { resolve(requestEtcFnc(url, config)) } else { res = rp } } } else if (code == 403001 || code == 403004 || code == 403003) { if (config.isNeedFailPop) { wx.showModal({ title: '提示', content: message, showCancel: false }) } wx.hideLoading() } failNum = 0 resolve(res) }