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.

157 lines
4.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var config = require("config.js");
//统一的网络请求方法
function request(params, isGetTonken) {
// 全局变量
var globalData = getApp().globalData;
// 如果正在进行登陆,就将非登陆请求放在队列中等待登陆完毕后进行调用
// if (!isGetTonken && globalData.isLanding) {
// globalData.requestQueue.push(params);
// return;
// }
wx.request({
url: config.domain + params.url, //接口请求地址
data: params.data,
header: {
// 'content-type': params.method == "GET" ? 'application/x-www-form-urlencoded' : 'application/json;charset=utf-8',
'Authorization': params.login ? undefined : wx.getStorageSync('token')
},
method: params.method == undefined ? "POST" : params.method,
dataType: 'json',
responseType: params.responseType == undefined ? 'text' : params.responseType,
success: function(res) {
if (res.statusCode == 200) {
//如果有定义了params.callBack则调用 params.callBack(res.data)
if (params.callBack) {
params.callBack(res.data);
}
} else if (res.statusCode == 500) {
wx.showToast({
title: "服务器出了点小差",
icon: "none"
});
} else if (res.statusCode == 401) {
wx.navigateTo({
url: '/pages/login/login',
})
// // 添加到请求队列
// globalData.requestQueue.push(params);
// // 是否正在登陆
// if (!globalData.isLanding) {
// globalData.isLanding = true
// //重新获取token,再次请求接口
// getToken();
// }
} else if (res.statusCode == 400) {
wx.showToast({
title: res.data,
icon: "none"
})
} else {
//如果有定义了params.errCallBack则调用 params.errCallBack(res.data)
if (params.errCallBack) {
params.errCallBack(res);
}
}
if (!globalData.isLanding) {
wx.hideLoading();
}
},
fail: function(err) {
wx.hideLoading();
wx.showToast({
title: "服务器出了点小差",
icon: "none"
});
}
})
}
//通过code获取token,并保存到缓存
var getToken = function() {
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
request({
login: true,
url: '/login?grant_type=mini_app',
data: {
principal: res.code
},
callBack: result => {
// 没有获取到用户昵称,说明服务器没有保存用户的昵称,也就是用户授权的信息并没有传到服务器
if (!result.nickName) {
updateUserInfo();
}
if (result.userStutas == 0) {
wx.showModal({
showCancel: false,
title: '提示',
content: '您已被禁用,不能购买,请联系客服'
})
wx.setStorageSync('token', '');
} else {
wx.setStorageSync('token', 'bearer' + result.access_token); //把token存入缓存请求接口数据时要用
}
var globalData = getApp().globalData;
globalData.isLanding = false;
while (globalData.requestQueue.length) {
request(globalData.requestQueue.pop());
}
}
}, true)
}
})
}
// 更新用户头像昵称
function updateUserInfo() {
wx.getUserInfo({
success: (res) => {
var userInfo = JSON.parse(res.rawData)
request({
url: "/p/user/setUserInfo",
method: "PUT",
data: {
avatarUrl: userInfo.avatarUrl,
nickName: userInfo.nickName
}
});
}
})
}
//获取购物车商品数量
function getCartCount() {
var params = {
url: "/p/shopCart/prodCount",
method: "GET",
data: {},
callBack: function(res) {
if (res > 0) {
wx.setTabBarBadge({
index: 2,
text: res + "",
})
var app = getApp();
app.globalData.totalCartCount = res;
} else {
wx.removeTabBarBadge({
index: 2
})
var app = getApp();
app.globalData.totalCartCount = 0;
}
}
};
request(params);
}
exports.getToken = getToken;
exports.request = request;
exports.getCartCount = getCartCount;
exports.updateUserInfo = updateUserInfo;