shop_app/api/request.js

178 lines
4.6 KiB
JavaScript
Raw Normal View History

2025-05-08 09:16:37 +08:00
import api from "./index.js"
import { showToast } from '../components/common.js'
let authToken = ''
export function toLogin(url) {
return new Promise((resolve, reject) => {
let saveTime = uni.getStorageSync('saveTime')
let expires_in = uni.getStorageSync('expires_in')
let token = uni.getStorageSync('token')
if(url.indexOf('api/v1') !== -1 && ((saveTime && expires_in && Date.now() > saveTime + expires_in) || !expires_in || !saveTime || !token)) {
uni.redirectTo({
url: '/pages/user/login'
})
} else {
resolve()
}
// if((saveTime && expires_in && Date.now() > saveTime + expires_in) || !expires_in || !saveTime) {
// uni.navigateTo({
// url: '/pages/user/login'
// })
// resolve()
// } else {
// resolve()
// }
})
}
export function get (url = '', data = {}, flag = true) {
return new Promise(async (resolve, reject) => {
if(!url.includes('/pay/')) {
await toLogin(url)
}
uni.request({
url: api.url + url,
data: data,
method: 'GET',
header: {
Authorization: uni.getStorageSync('token') || authToken,
accept: "application/json",
appid: api.appId
},
success: res => {
if (res.statusCode === 200 || res.statusCode === 201) {
resolve(res.data)
} else if (res.statusCode === 404){
showToast(res.data.message || res.data.error)
reject(res.data.message || res.data.error)
setTimeout(function() {
uni.navigateBack({delta: 1})
}, 1000)
} else if(res.statusCode === 401 && flag) {
get(url, data, false)
} else if(res.statusCode === 429) {
resolve(res.data)
showToast('系统繁忙,请稍后重试')
} else {
let msg = res.data.message || res.data.error
if(msg) {
if(msg == 'Unauthenticated') {
uni.removeStorageSync('token')
uni.removeStorageSync('saveTime')
uni.removeStorageSync('expires_in')
uni.redirectTo({
url: '/pages/user/login'
})
}
}
reject(msg)
}
},
fail:(err)=>{
console.log('fail', err)
},
complete: async(complete) => {
}
})
})
}
export function getReq (url = '', data = {}, flag = true) {
return new Promise((resolve, reject) => {
uni.request({
url: api.url + url,
data: data,
method: 'GET',
header: {
Authorization: uni.getStorageSync('token') || authToken,
accept: "application/json",
appid: api.appId
},
success: res => {
if (res.statusCode === 200 || res.statusCode === 201) {
resolve(res.data)
} else if(res.statusCode === 401 && flag) {
reject(res.data)
getReq(url, data, false)
} else if (res.statusCode === 401 && !flag){
showToast(res.data.message || res.data.error)
resolve(res.data)
} else if (res.statusCode === 404){
reject(res.data.message)
} else if(res.statusCode === 429) {
showToast('系统繁忙,请稍后重试')
resolve(res.data)
} else {
let msg = res.data.message || res.data.error
if(msg) {
if(msg == 'Unauthenticated') {
uni.removeStorageSync('token')
uni.removeStorageSync('saveTime')
uni.removeStorageSync('expires_in')
uni.redirectTo({
url: '/pages/user/login'
})
}
}
reject(msg)
reject(res.data.message || res.data.error)
}
},
fail:(err)=>{
},
complete: async(complete) => {
}
})
})
}
export function post (url = '', data = {}, requestType = 'POST', flag = true) {
return new Promise(async(resolve, reject) => {
if(!url.includes('order/create') && !url.includes('user/vip')) {
await toLogin(url)
}
uni.request({
method: requestType,
url: api.url + url,
data,
header: {
Authorization: uni.getStorageSync('token') || authToken,
accept: "application/json",
appid: api.appId
},
success: res => {
if (res.statusCode === 200 || res.statusCode === 201) {
resolve(res.data)
} else if (res.statusCode === 404){
showToast(res.data.message || res.data.error)
reject(res.data.message)
} else if(res.statusCode === 401 && flag) {
post(url, data, requestType, false)
} else if(res.statusCode === 429) {
showToast('系统繁忙,请稍后重试')
resolve(res.data)
} else {
let msg = res.data.message || res.data.error
if(url.indexOf('decrypt/data') === -1 && msg == 'Unauthenticated') {
uni.removeStorageSync('token')
uni.removeStorageSync('saveTime')
uni.removeStorageSync('expires_in')
uni.redirectTo({
url: '/pages/user/login'
})
}
reject(msg)
}
},
fail:(err)=>{
},
complete: async (complete) => {
}
})
})
}