// const socketHttp = "wss://*****.com/wss" const event = require('./event.js') const util = require('./util.js') const storage = require('./storage.js') const app = getApp() const urlList = ['/recycle-service', '/payment-settlement-center', '/message-center', '/information-center'] var modal = false function fun(url, method, data, header) { data = data || {} var flag = false for (let index = 0; index < urlList.length; index++) { if(url.indexOf(urlList[index]) != -1){ flag = true break } } if(util.isEmpty(app.globalData.token)){ var authorization = wx.getStorageSync('Authorization') if (authorization) { app.globalData.token = authorization } } if(util.isEmpty(app.globalData.userToken)){ var userToken = wx.getStorageSync('userToken') if (userToken) { app.globalData.userToken = userToken } } if(flag){ header = { 'X-APP-ID': app.xAppId, 'Authorization': 'QNT ' + app.globalData.token, appversion: app.version } } else { header = { 'X-APP-ID': app.xAppId, 'user-token': '' + app.globalData.userToken, appversion: app.version } } let promise = new Promise(function (resolve, reject) { wx.request({ url: app.httpUrl + url, header: header, data: data, method: method, success: function (result) { if (typeof result.data === "object") { if (result.data.code === 0) { resolve(result.data) } else if (result.data.code === 401) { app.globalData.token = null app.globalData.userToken = null wx.removeStorageSync('accessToken') wx.removeStorageSync('Authorization') event.emit('EventMessage', { what: 888, desc: 'Logout' }) let pages = getCurrentPages(); //当前页面栈 let prevPage = pages[pages.length - 1]; //当前页面 if (prevPage.route != 'pages/login/index' && !modal) { wx.showModal({ title: '温馨提示', content: '登录信息已经过期,请重新登录', showCancel: false, success: function (res) { if (res.confirm) { wx.navigateTo({ url: '/pages/login/index' }) } }, complete: function(){ modal = false } }) modal = true } var message = '网络错误' if (result.data.message) { message = result.data.message } reject(message) } else { var message = '数据错误' if (result.data.message) { message = result.data.message } reject(message) } } else { reject('网络异常') } }, fail: function (err) { // util.showToast(JSON.stringify(err)) reject('网络异常') } }) }) return promise } function upload(url, name, filePath) { let header = { 'token': app.globalData.userToken } let promise = new Promise(function (resolve, reject) { wx.uploadFile({ url: app.httpUrl + url, filePath: filePath, name: name, header: header, success: function (res) { resolve(res) }, fail: reject }) }) return promise } // **************************************************************************************************************************************** // /authorize/by-wechat-applet小程序登录 function loginWechat(form) { let promise = new Promise(function (resolve, reject) { if (!form.encryptedData) { wx.showToast({ title: '授权被拒绝,获取微信用户失败', icon: "none" }) reject return } wx.showLoading({ title: '登录中', mask: true }) var tempToken = storage.get('tempToken') if(!util.isEmpty(tempToken)){ form.tmpAuthToken = tempToken unionWechat(form, resolve, reject) } else { wx.login({ success: res => { // 获取openId wx.request({ header: { 'X-APP-ID': app.xAppId }, url: app.httpUrl + '/recycle-service/authorize/wechat-applet/user', data: { authCode: res.code }, method: 'POST', success: function (result) { if (result.data.code == 0) { form.tmpAuthToken = result.data.data.tmpAuthToken storage.put('tempToken', form.tmpAuthToken, 98) // 微信登录,获取unionId unionWechat(form, resolve, reject) } else { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }, fail: function (sessionResp) { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }) }, fail: function (loginResp) { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }) } }) return promise } function unionWechat(form, resolve, reject) { wx.request({ header: { 'X-APP-ID': app.xAppId }, url: app.httpUrl + '/recycle-service/authorize/by-wechat-applet', data: form, method: 'POST', success: function (result) { wx.hideLoading() if (result.data.code == 0) { storage.remove('tempToken') resolve(result.data) } else { reject(result.data) } }, fail: function () { wx.hideLoading() wx.showToast({ title: '获取用户信息,请稍后再试', icon: "none" }) reject }, }) } // **************************************************************************************************************************************** // 通过微信的方式登录,onGotPhoneNumber中统一处理 function gotPhoneNumber(form, resolve, reject) { // 获取手机号码 /authorize/encrypt/mobile wx.request({ header: { 'X-APP-ID': app.xAppId }, url: app.httpUrl + '/recycle-service/authorize/encrypt/mobile', data: form, method: 'POST', success: function (result) { // 绑定手机号码,进行登录 wx.hideLoading() if (result.data.code != 0) { wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject return } result.data.tmpAuthToken = form.tmpAuthToken resolve(result.data) }, fail: function (phoneResp) { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }) } function phoneWechat(form) { let promise = new Promise(function (resolve, reject) { if (!form.encryptedData) { wx.showToast({ title: '授权被拒绝,登录失败', icon: "none" }) reject return } wx.showLoading({ title: '登录中', mask: true }) // 没有获取到openId,获取之后进行登录 wx.login({ success: res => { // 获取openId wx.request({ header: { 'X-APP-ID': app.xAppId }, url: app.httpUrl + '/recycle-service/authorize/wechat-applet/user', data: { authCode: res.code }, method: 'POST', success: function (result) { if (result.data.code == 0) { form.tmpAuthToken = result.data.data.tmpAuthToken // 获取手机号码 gotPhoneNumber(form, resolve, reject) } else { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }, fail: function (sessionResp) { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }) }, fail: function (loginResp) { wx.hideLoading() wx.showToast({ title: '登录失败,请稍后再试', icon: "none" }) reject } }) }) return promise } module.exports = { "get": function (url, data, header) { return fun(url, "GET", data, header) }, "post": function (url, data, header) { return fun(url, "POST", data, header) }, "put": function (url, data, header) { return fun(url, "PUT", data, header) }, "delete": function (url, data, header) { return fun(url, "DELETE", data, header) }, upload: function (url, name, filePath) { return upload(url, name, filePath) }, phoneWechat: phoneWechat, loginWechat: loginWechat }