dingdong-mall/common/js/request.js

230 lines
5.3 KiB
JavaScript
Raw Normal View History

import globalData from '@/common/js/globalData.js';
export default {
// 异步接口拦截
addInterceptor() {
uni.addInterceptor('request', {
invoke(args) {
// request 触发前拼接 url
// args.url = 'https://www.opsoul.com' + args.url;
// args.url = 'http://192.168.2.3:80' + args.url;
args.url = 'http://127.0.0.1:80' + args.url;
// console.log("停止触发");
// return false;
},
success(res) {
if (res.data.code !== 0) {
uni.showToast({
title: '系统开小差啦T_T请稍后重试',
icon: 'error'
})
}
},
fail(err) {
uni.showToast({
title: '系统开小差啦T_T请稍后重试',
icon: 'error'
})
},
complete(res) {
console.log('interceptor-complete', res)
}
})
},
checkAndAuth() {
let _this = this;
// 通过 wx.getSetting 先查询一下用户是否授权了 "scope.userInfo" 这个 scope
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userInfo']) {
// 用户授权
wx.authorize({
scope: 'scope.userInfo',
success() {
// 用户已经同意, 后续调用此接口不会弹窗询问
_this.login();
},
fail() {
// 用户已经拒绝过授权
wx.openSetting({
success(res) {
if (res['scope.userInfo']) {
_this.checkAndAuth();
}
}
})
}
})
} else {
_this.login();
}
}
})
},
async login() {
// 从缓存中获取登录信息
let userInfo = uni.getStorageSync('userProfile');
if (userInfo) {
return true;
}
userInfo = await wx.getUserProfile({
desc: '用于小程序登录'
});
console.log("从微信获取基本用户信息:" + userInfo);
// 获取微信登录凭证
const wxLoginRes = await wx.login();
console.log(wxLoginRes)
// 获取openid
const wxAuthRes = await uni.request({
url: '/wx/auth',
header: {
code: wxLoginRes.code
}
})
console.log(wxAuthRes)
const openId = wxAuthRes[1].data.data.openid;
// 第一次从服务端获取用户信息
let wxGetUserRes = await this.qryUserInfo(openId);
// 获取失败则获取微信信息再调用注册接口
if (!wxGetUserRes.data) {
// 注册完成后再次从服务端获取用户信息
let registerRes = await this.registerUser({
openId: openId,
name: userInfo.userInfo.nickName,
customerLogoUrl: userInfo.userInfo.avatarUrl,
status: 0
});
if (registerRes.code === 0) {
wxGetUserRes = await this.qryUserInfo(openId);
}
}
if (!wxGetUserRes.data) {
userInfo = null;
} else {
userInfo = {
...wxGetUserRes.data,
wxLoginCode: wxLoginRes.code
}
}
console.log("通过后台服务获取用户信息:" + userInfo);
if (!userInfo || userInfo.customerId == null || userInfo.customerId == undefined) {
uni.showToast({
icon: 'error',
title: '微信用户信息获取失败,请退出小程序重试'
})
return false;
}
// 页面存储用户登录有效信息,以便其他页面调用
uni.setStorageSync('userProfile', userInfo);
return true;
},
async registerUser(params = {}) {
let res = await uni.request({
url: '/wx/addUser',
method: 'POST',
data: params
})
return res[1].data;
},
async qryUserInfo(openId) {
let res = await uni.request({
url: '/wx/getUserInfo',
method: 'POST',
data: {
openId: openId
}
})
return res[1].data;
},
wxLogin() {
return wx.login();
},
getCurUserInfo() {
let userProfile = uni.getStorageSync('userProfile');
return userProfile;
},
getProductCategories(params = {}) {
return uni.request({
url: '/goods/deptcategory/app/list',
method: 'POST',
data: params
})
},
qryProductPage(params = {}) {
return uni.request({
url: '/goods/goods/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
},
async placeOrder(params = {}) {
let res = await uni.request({
url: '/order/server/app',
method: 'POST',
data: params
})
return res[1].data;
},
async getWxPayParams(params = {}) {
let res = await uni.request({
url: '/pay/wx/lite',
method: 'POST',
header: {
code: params.code,
orderMasterCode: params.orderMasterCode
}
})
return res[1].data;
},
async getAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/list',
method: 'POST',
data: params
})
return res[1].data;
},
async addAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/insert',
method: 'POST',
data: params
})
return res[1].data;
},
async editAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/update',
method: 'POST',
data: params
})
return res[1].data;
},
async delAddressList(customerAddressId) {
let res = await uni.request({
url: '/customer/address/delete',
method: 'POST',
data: {
customerAddressId: customerAddressId
},
header: {
'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
async areaListByStep(params = { parentCode: null }) {
let res = await uni.request({
url: '/system/area/list',
method: 'POST',
data: params
})
return res[1].data;
}
}