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; } }