const { DEBUG, CODE_NOT_LOGIN } = require('./c.js'); const { api } = require(`./config.js`); const md5 = require('./md5.js'); const util = require('./util.js'); const commonParams = () => { let deviceId = 'weapp'; let systemVersion = 'weapp'; let systemInfo = util.getStorageSync('systemInfo'); if (!systemInfo) { systemInfo = wx.getSystemInfoSync(); if (systemInfo) { wx.setStorageSync('systemInfo', systemInfo); } } if (systemInfo) { let { brand, model, system } = systemInfo; if (brand || model) { deviceId = brand + model; } if (system && 'string' === typeof (system)) { systemVersion = system; } } let params = { language: 'cn', //语言参数 deviceType: 'weapp', //接口调用来源参数 deviceId: deviceId, //设备唯一标识码 apiVersion: '1.0.3', //api版本号 systemVersion: systemVersion, //操作系统及版本号 version: "2.0.0", // 线上版本号 }; let loginUserInfo = util.getStorageSync('userInfo'); if (loginUserInfo) { let token = loginUserInfo.token; if (token) { params.token = token; //用户登录凭证token } } return params; } /*参数签名*/ const paramsSign = (params, url) => { let key = 'a2e947b603f8a95ce24db5a3c86'; if ((url && url.indexOf(`${api}/common`) === 0) || url.indexOf('/common/upload/files') !== -1) { key = 'b15681f74461af9642ab5356fba7962b'; } if (url == `${api}/java/order/source-list`) { key = '93f725a07423fe1c889f448b33d21f46' } let allKeys = [], paramsLower = {}, sArr = [], res = ''; for (let k in params) { let kLower = k; allKeys.push(kLower); paramsLower[kLower] = ""; if ((params[k] && params[k] !== "undefined") || params[k] === 0) { paramsLower[kLower] = params[k]; } } allKeys.sort(); allKeys.forEach((v, i, a) => { sArr.push(`${v}=${paramsLower[v]}`); }); sArr.push(`key=${key}`); res = sArr.join('&'); res = md5(res); return res.toLowerCase(); } /** * 网络请求对象 */ const net = { //isDealFail是否手动处理异常,true or false req: function (params, isDealFail) { //get或post请求 if (!params) { wx.showToast({ title: '请设置请求参数', icon: 'none', duration: 2000 }); return new Promise((resolve, reject) => { reject(); }); } if (!params.url) { wx.showToast({ title: '请设置请求url', icon: 'none', duration: 2000 }); return new Promise((resolve, reject) => { reject(); }); } let promise = new Promise((resolve, reject) => { params.data = Object.assign({}, commonParams(), params.data); params.data.signToken = paramsSign(params.data, params.url); wx.request({ url: params.url, data: params.data || null, header: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }, method: params.method || 'POST', dataType: params.dataType || 'json', success: function (res) { res = res.data; let { code, msg } = res; if (0 === code) { //ok resolve(res); } else if (CODE_NOT_LOGIN === code) { //未登录 DEBUG && console.log(`Request for ${params.url} exception.--->${JSON.stringify(msg)}`); wx.clearStorage(); wx.showToast({ title: '您的用户信息已失效,请重新登录操作', icon: 'none', duration: 2000, success: () => { wx.reLaunch({ url: '/pages/loginways/loginways' }); }, }); } else { DEBUG && console.log(`Request for ${params.url} exception.--->${JSON.stringify(msg)}`); if (isDealFail) { reject(res); } else { wx.showToast({ title: msg || 'error', icon: 'none', duration: 2000 }); } } }, fail: function (e) { DEBUG && console.log(`Request for ${params.url} fail.--->${JSON.stringify(e)}`); if (isDealFail) { reject(e); } else { wx.showToast({ title: (e && e.errMsg) || '', icon: 'none', duration: 2000 }); } }, complete: function (res) { DEBUG && console.log(`Request for ${params.url} complete.--->${JSON.stringify(res)}`); } }); }); return promise; }, uploadFile: function (params, isDealFail) { //get或post请求 if (!params) { wx.showToast({ title: '请设置请求参数', icon: 'none', duration: 2000 }); return new Promise((resolve, reject) => { reject(); }); } if (!params.url) { wx.showToast({ title: '请设置请求url', icon: 'none', duration: 2000 }); return new Promise((resolve, reject) => { reject(); }); } if (!params.filePath || !params.filePath.length) { wx.showToast({ title: '请设置文件资源的路径', icon: 'none', duration: 2000 }); return new Promise((resolve, reject) => { reject(); }); } let promise = new Promise((resolve, reject) => { params.data = Object.assign({}, commonParams(), params.data); params.data.signToken = paramsSign(params.data, params.url); wx.uploadFile({ url: params.url, filePath: params.filePath, name: 'files[]', formData: params.data, header: { 'content-type': 'multipart/form-data' }, method: 'POST', success: function (res) { let data = res.data; if (typeof data == 'string' && data.constructor == String) { data = JSON.parse(data); } let { code, msg } = data; if (0 === parseInt(code)) { //ok resolve(data); } else if (CODE_NOT_LOGIN === code) { //未登录 DEBUG && console.log(`Request for ${params.url} exception.--->${JSON.stringify(msg)}`); wx.clearStorage(); wx.showToast({ title: '您的用户信息已失效,请重新登录操作', icon: 'none', duration: 2000, success: () => { wx.reLaunch({ url: '/pages/loginways/loginways' }); }, }); } else { DEBUG && console.log(`Request for ${params.url} exception.--->${JSON.stringify(msg)}`); if (isDealFail) { reject(data); } else { wx.showToast({ title: msg || 'error', icon: 'none', duration: 2000 }); } } }, fail: function (e) { DEBUG && console.log(`Request for ${params.url} fail.--->${JSON.stringify(e)}`); if (isDealFail) { reject(e); } else { wx.showToast({ title: (e && e.errMsg) || '', icon: 'none', duration: 2000 }); } }, complete: function (res) { DEBUG && console.log(`Request for ${params.url} complete.--->${JSON.stringify(res)}`); } }); }); return promise; }, } module.exports = { commonParams, paramsSign, net };