202 lines
5.6 KiB
JavaScript
202 lines
5.6 KiB
JavaScript
const openData = {
|
|
url: 'https://mp.wuhanud.com/wx/',
|
|
appid: wx.getAccountInfoSync().miniProgram.appId,
|
|
retryCount: 1
|
|
}
|
|
const fetchRequest = (path, method, jsonData) => {
|
|
const url = openData.url;
|
|
const token = wx.getStorageSync('ud_token')
|
|
return new Promise((resolve, reject) => {
|
|
wx.request({
|
|
url: `${url}${path}`,
|
|
method: method,
|
|
header: { 'Token': token },
|
|
data: jsonData,
|
|
success: (res) => {
|
|
if (res.statusCode === 200) {
|
|
resolve(res.data);
|
|
} else if(res.statusCode===401) {
|
|
resolve(res.data);
|
|
} else {
|
|
console.error('请求失败:', res);
|
|
reject(new Error('请求失败'));
|
|
// wx.showToast({
|
|
// title: res.data.msg || '请求失败',
|
|
// icon: 'none',
|
|
// duration: 2000,
|
|
// });
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
console.error('网络错误:', err);
|
|
reject(new Error('网络错误'));
|
|
// wx.showToast({
|
|
// title: '网络错误',
|
|
// icon: 'none',
|
|
// duration: 2000,
|
|
// });
|
|
},
|
|
});
|
|
});
|
|
};
|
|
const wxUpfile = (file,data,type) => {
|
|
var url = openData.url;
|
|
if(type =='avatar')
|
|
url = url+'user/avatar'
|
|
else
|
|
url = url + 'parrot/upload'
|
|
console.log('wxupfile',data)
|
|
const token = wx.getStorageSync('ud_token')
|
|
return new Promise((resolve, reject) => {
|
|
const uploadTask = wx.uploadFile({
|
|
url: url, //接口地址
|
|
name: 'file', //上传文件名
|
|
filePath: file,
|
|
formData: data,
|
|
header: {
|
|
'content-type': 'application/x-www-form-urlencoded',
|
|
'Token': token
|
|
},
|
|
success(res) { //后台返回给前端识别后的文字
|
|
if (res.statusCode === 200) {
|
|
resolve(JSON.parse(res.data));
|
|
} else if(res.statusCode===401) {
|
|
resolve(JSON.parse(res.data));
|
|
} else {
|
|
reject(new Error('请求失败'));
|
|
wx.showToast({
|
|
title: res.data.msg || '请求失败',
|
|
icon: 'none',
|
|
duration: 2000,
|
|
});
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
reject(new Error('网络错误'));
|
|
wx.showToast({
|
|
title: '网络错误',
|
|
icon: 'none',
|
|
duration: 2000,
|
|
});
|
|
},
|
|
})
|
|
uploadTask.onProgressUpdate((res) => {
|
|
console.log('上传进度', res.progress)
|
|
console.log('已经上传的数据长度', res.totalBytesSent)
|
|
console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
|
|
})
|
|
})
|
|
}
|
|
|
|
const noneToken = (callback) => {
|
|
const token = wx.getStorageSync('ud_token');
|
|
if (!token || token.length < 32) {
|
|
setTimeout(() => {
|
|
callback();
|
|
}, 2000);
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
const expireDo = (callback) => {
|
|
getOpenid(callback)
|
|
}
|
|
|
|
const getEcho = () => {
|
|
const echodata = wx.getStorageSync("ud_echodata")
|
|
var version = 0
|
|
if(noneToken(getEcho))return
|
|
if(echodata) {
|
|
version = echodata.version
|
|
}
|
|
fetchRequest('echo','GET',{ version:version })
|
|
.then(data => {
|
|
if(data.code==401)expireDo(getEcho)
|
|
if(data.code==200) {
|
|
// if(data.data.version != version){
|
|
wx.setStorageSync('ud_echodata', data.data)
|
|
// }
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('请求出错:', error);
|
|
});
|
|
}
|
|
const getOpenid = (callback=false) => {
|
|
if (openData.retryCount > 3) { // 最多重试3次
|
|
// wx.showToast({
|
|
// title: '网络异常,无法登录',
|
|
// icon: 'none',
|
|
// duration: 2000
|
|
// });
|
|
return;
|
|
}
|
|
openData.retryCount += 1
|
|
const deviceinfo = wx.getDeviceInfo()
|
|
//console.log('deviceinfo',deviceinfo)
|
|
wx.login({
|
|
success: res => {
|
|
if (res.code) {
|
|
//这里要改成POST
|
|
fetchRequest('login', 'POST', { appId: openData.appid, code: res.code,platform:deviceinfo.platform,model:deviceinfo.model,brand: deviceinfo.brand})
|
|
.then(data => {
|
|
wx.setStorageSync('ud_token', data.data.token);
|
|
wx.setStorageSync('ud_userinfo',data.data.user);
|
|
openData.retryCount = 1
|
|
if(callback) {
|
|
callback()
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('请求出错:', error);
|
|
//openData.retryCount += 1
|
|
getOpenid(); // 重试
|
|
});
|
|
}
|
|
},
|
|
fail: () => {
|
|
getOpenid(); // 登录失败,重试
|
|
},
|
|
});
|
|
}
|
|
|
|
const getTotal = () =>{
|
|
if(noneToken(getTotal))return
|
|
fetchRequest('total', 'GET')
|
|
.then(data => {
|
|
if(data.code==401){
|
|
expireDo(getTotal)
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.log('error',error)
|
|
});
|
|
}
|
|
const carryPage = () => {
|
|
const token = wx.getStorageSync('ud_token');
|
|
|
|
if (!token || token.length < 32) {
|
|
getOpenid();
|
|
}
|
|
getEcho();
|
|
getTotal()
|
|
const originalPage = Page;
|
|
Page = (pageConfig) => {
|
|
const originalOnShow = pageConfig.onShow;
|
|
pageConfig.onShow = function () {
|
|
if (originalOnShow) {
|
|
originalOnShow.apply(this, arguments);
|
|
}
|
|
getTotal();
|
|
};
|
|
return originalPage(pageConfig);
|
|
};
|
|
}
|
|
module.exports = {
|
|
fetchRequest: fetchRequest,
|
|
carryPage:carryPage,
|
|
expireDo:expireDo,
|
|
wxUpfile:wxUpfile,
|
|
noneToken:noneToken
|
|
}
|