dingdong-mall/common/js/request.js

424 lines
9.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import globalData from '@/common/js/globalData.js';
export default {
// 异步接口拦截
addInterceptor() {
uni.addInterceptor('request', {
invoke(args) {
uni.showLoading({
mask: true,
title: '加载中'
})
// request 触发前拼接 url
// args.url = 'https://www.opsoul.com' + args.url;
// args.url = 'http://192.168.2.42:80' + args.url;
args.url = 'http://127.0.0.1:80' + args.url;
if (args.data) {
args.data.deptId = globalData.deptId;
args.data.from = globalData.from;
}
if (args.header) {
args.header.deptId = globalData.deptId;
args.header.from = globalData.from;
}
// 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) {
uni.hideLoading();
}
})
},
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 = 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: 'none',
title: '微信用户信息获取失败,请退出小程序重试'
})
return false;
}
// 页面存储用户登录有效信息,以便其他页面调用
uni.setStorageSync('userProfile', userInfo);
return true;
},
async storageExistUser() {
uni.clearStorageSync('userProfile');
// 获取微信登录凭证
const wxLoginRes = await wx.login();
// 获取openid
const wxAuthRes = await uni.request({
url: '/wx/auth',
header: {
code: wxLoginRes.code
}
})
const openId = wxAuthRes[1].data.data.openid;
// 从服务端获取用户信息
let wxGetUserRes = await this.qryUserInfo(openId);
let userInfo = null;
if (wxGetUserRes.data) {
userInfo = {
...wxGetUserRes.data,
wxLoginCode: wxLoginRes.code
}
}
uni.setStorageSync('userProfile', userInfo);
},
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;
},
async qryUserPhone(code) {
let res = await uni.request({
url: '/wx/auth/phone',
method: 'GET',
header: {
code: code
}
})
return res[1].data;
},
async updateUserPhone(params = {}) {
let res = await uni.request({
url: '/customer/update',
method: 'POST',
data: params
})
// 更新用户信息的方法顺便更新本地缓存
if (res[1].data.code === 0) {
let userInfo = this.getCurUserInfo();
userInfo.phone = params.phone;
userInfo.account = params.account;
uni.setStorageSync('userProfile', userInfo);
}
return res[1].data;
},
async storagePhoneIntoUserInfo(code) {
let phoneRes = await this.qryUserPhone(code);
if (phoneRes && phoneRes.msg === '获取手机号码异常') {
uni.showToast({
icon: 'none',
title: '请先确认登录微信号是否已绑定手机号'
})
return false;
}
if (phoneRes && phoneRes.data) {
let userInfo = this.getCurUserInfo();
this.updateUserPhone({
customerId: userInfo.customerId,
account: phoneRes.data,
phone: phoneRes.data
})
return true;
}
},
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;
},
async listByStep(params = {goodsCategoryId : null}) {
let res = await uni.request({
url: '/goods/deptcategory/listByStep',
method: 'POST',
data: params
})
return res[1].data;
},
async uploadFile(filePath) {
let res = await uni.uploadFile({
url: this.address + '/tool/qiniu/upload',
filePath: filePath,
name: 'uploadFile'
})
let resStr = res[1].data;
let resObj = {};
if (resStr != null && resStr.length > 0) {
resObj = JSON.parse(resStr);
}
return resObj;
},
// async qryOrderGoodsPage(params = {}) {
// let res = await uni.request({
// url: '/order/goods/list',
// method: 'POST',
// data: params,
// header: {
// pageNum: params.pageNum,
// pageSize: params.pageSize
// }
// })
// return res[1].data;
// },
async bindBankCard(params) {
let res = await uni.request({
url: '/customer/bankcard/bind',
method: 'POST',
data: params
})
return res[1].data;
},
async getBindBankCardByCustomerId(params) {
let res = await uni.request({
url: '/customer/bankcard/getByCustomerId',
method: 'POST',
data: params
})
return res[1].data;
},
async getGoodsDetail(params) {
let res = await uni.request({
url: '/goods/goods/getDetail',
method: 'POST',
data: params
})
return res[1].data.data;
},
async qryFinancialCount(params = {}) {
let res = await uni.request({
url: '/financial/detail/count',
method: 'POST',
data: params
})
return res[1].data;
},
async qryFinancialDetail(params = {}) {
let res = await uni.request({
url: '/financial/detail/list',
method: 'POST',
data: params
})
return res[1].data;
},
async qryOrderPage(params = {}) {
let res = await uni.request({
url: '/order/master/app/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async updateOrder(params = {}) {
let res = await uni.request({
url: '/order/master/editOrderMaster',
method: 'POST',
data: params
})
return res[1].data;
},
async getHotGoods(params = {}) {
let res = await uni.request({
url: '/goods/goods/hot/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async getOrderMasterDetail(params = {}) {
let res = await uni.request({
url: '/order/master/app/detail',
method: 'POST',
data: params
})
return res[1].data;
},
async getWorkerList(params = {}) {
let res = await uni.request({
url: '/worker/list',
method: 'POST',
data: params
})
return res[1].data;
},
}