import * as F from './func.js'; const Log = require('./log.js'); import C from './constant.js'; let lockToLogin = false; const login = () => { const user_id = wx.getStorageSync('user_id'); if (user_id) { return Promise.resolve(user_id); } // return Promise.resolve(); return new Promise((resolve, reject) => { wx.login({ success({ code }) { console.log('aaaa', code); // code = 'test'; // code:'test' post('/index.php/api/v1/wx_login', { code }, true).then(({ model }) => { console.log('wx_login', model); wx.setStorageSync('user_id', model.user_id); resolve(model); }).catch((e) => { reject(e) }) }, fail(e) { reject(e) } }) }); } const post = (path, params, notLogin = false) => { Log.info('post 请求:' + path + 'params:' + JSON.stringify(params)); const _ = ((resolve, reject) => { const user_id = wx.getStorageSync('user_id'); if (!user_id && !notLogin) { return reject(-1002); } wx.request({ url: F.getHost() + path, data: params, header: { Cookie: 'user_id=' + user_id, }, method: 'POST', success: (res) => { console.log('res', res); const { data, statusCode, cookies } = res; if (statusCode != 200) { wx.showToast({ icon:'none', title: 'statusCode:' + statusCode }); Log.error('post 请求失败1:' + statusCode + '|' + path + ' params:' + JSON.stringify(params)); reject(-1); } else { const message = data.errorMsg || data.message; const errorCode = data.errorCode; if (errorCode == -1000) { wx.showToast({ icon:'none', title: "登录超时,请重新登录" }); if (!lockToLogin) { lockToLogin = true; wx.navigateTo({ url: '/pages/login/index' }); setTimeout(() => { lockToLogin = false; }, 1000) } reject(-4); } else if (errorCode < 0) { wx.showToast({ icon:'none', title: message || errorCode + '请求失败' , }); Log.error('post 请求失败2:' + message + '|' + path + ' params:' + JSON.stringify(params)); reject(-3); } else { resolve(data); } } }, fail: ({ errMsg, errno }) => { wx.showToast({ icon:'none', title: '接口异常:' + errMsg }); console.error('post fail:', errMsg, errno); Log.error('post error:' + errMsg + '|errno:' + errno + '|' + path + ' params:' + JSON.stringify(params)); reject(-2); } }); }) if (notLogin) { return new Promise(_); } else { return login().then(() => new Promise(_)); } } const get = (path, params, notLogin = false) => { Log.info('get 请求:' + path + 'params:' + JSON.stringify(params)); const _ = ((resolve, reject) => { const user_id = wx.getStorageSync('user_id'); if (!user_id && !notLogin) { return reject(-1002); } wx.request({ url: F.getHost() + path, data: params, header: { Cookie: 'user_id=' + user_id, }, method: 'GET', success: ({ data, statusCode, cookies }) => { if (statusCode != 200) { wx.showToast({ icon:'none', title: 'statusCode:' + statusCode }); Log.error('get 请求失败1:' + statusCode + '|' + path + ' params:' + JSON.stringify(params)); reject(-1); } else { const message = data.errorMsg || data.message; const errorCode = data.errorCode; if (errorCode == -1000) { wx.showToast({ icon:'none', title: "登录超时,请重新登录" }); if (!lockToLogin) { lockToLogin = true; wx.navigateTo({ url: '/pages/login/index' }); setTimeout(() => { lockToLogin = false; }, 1000) } reject(-4); } else if (errorCode < 0) { wx.showToast({ icon:'none', title: message || errorCode + '请求失败' , }); Log.error('get 请求失败2:' + message + '|' + path + ' params:' + JSON.stringify(params)); reject(-3); } else { resolve(data); } } }, fail: ({ errMsg, errno }) => { wx.showToast({ icon:'none', title: '接口异常:' + errMsg }); console.error('get fail:', errMsg, errno); Log.error('get error:' + errMsg + '|errno:' + errno + '|' + path + ' params:' + JSON.stringify(params)); reject(-2); } }); }) if (notLogin) { return new Promise(_); } else { return login().then(() => new Promise(_)); } } const upload = (params, name, filePath, processCb) => { const _ = new Promise((resolve, reject) => { const user_id = wx.getStorageSync('user_id'); const task = wx.uploadFile({ url: F.getHost() + '/index.php/api/v1/wx_upload', formData: params, name, filePath, header: { Cookie: 'user_id=' + user_id, 'Content-Type': 'multipart/form-data', }, timeout: 120000, method: 'POST', success: (res) => { resolve(res); }, fail: (res) => { const { errMsg, errno } = res; console.error('post fail:', errMsg, errno); Log.error('upload post fail:' + errMsg + '|errno' + errno); reject(res); } }); if (processCb) { task.onProgressUpdate(processCb); } }) return login().then(() => _); } export default { login, post, get, upload, };