import CryptoJS from './node_modules/crypto-js/crypto-js.js' const baseUrl = 'https://lp1994.lpyx.top/api/' const cryptKey = '2025Shop2025Shop' const cryptIv = '2025Shop2025Shop' // 加密 const encryptDes = (data) => { // 将key解析为字节 let aes_key = CryptoJS.enc.Utf8.parse(cryptKey); // 将iv解析为字节 let new_iv = CryptoJS.enc.Utf8.parse(cryptIv); // AES加密 CBC模式 ZeroPadding let encrypted = CryptoJS.AES.encrypt(data, aes_key, { iv: new_iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); // 返回字符串 return encrypted.toString(); } //解密 const decryptDes = (data) => { let aes_key = CryptoJS.enc.Utf8.parse(cryptKey); let aes_iv = CryptoJS.enc.Utf8.parse(cryptIv); // 将数据编码成Base64格式 let baseResult = CryptoJS.enc.Base64.parse(data); let ciphertext = CryptoJS.enc.Base64.stringify(baseResult); // AES解密 CBC模式 ZeroPadding let decryptResult = CryptoJS.AES.decrypt(ciphertext, aes_key, { iv: aes_iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); // 返回字符串 let resData = decryptResult.toString(CryptoJS.enc.Utf8).toString(); return resData; } const getHeader = () => { let token = uni.getStorageSync('pig-token') let header = { 'Accept': 'application/json', 'Content-type': 'application/json', 'authorization': token, } let platform = null // #ifdef H5 platform = 'h5' // #endif // #ifdef APP-PLUS platform = uni.getSystemInfoSync().platform // #endif header.platform = platform return header } const post = (url = '', params = null) => { let header = getHeader() let data = encryptDes(JSON.stringify(params)) //console.log('postUrl', baseUrl + url) return new Promise((resolve, reject) => { uni.showLoading({ title: '加载中' }) uni.request({ method: 'POST', url: baseUrl + url, data: {data: data}, header: header, dataType: 'json', }).then((response) => { //console.log('response', response) uni.hideLoading() let respon = { code: response.data.code, data: response.data.data.length > 0 ? JSON.parse(decryptDes(response.data.data)) : [], msg: response.data.msg } resolve(respon) }).catch(error => { uni.hideLoading() //let [err, res] = error //console.log('error', error) }) }) } const sendMsg = (url = '', params = null) => { let header = getHeader() let data = encryptDes(JSON.stringify(params)) return new Promise((resolve, reject) => { uni.request({ method: 'POST', url: baseUrl + url, data: {data: data}, header: header, dataType: 'json', }).then((response) => { let respon = { code: response.data.code, data: response.data.data.length > 0 ? JSON.parse(decryptDes(response.data.data)) : [], msg: response.data.msg } resolve(respon) }).catch(error => { uni.hideLoading() //let [err, res] = error //console.log('error', error) }) }) } const goPages = (url) => { uni.navigateTo({ url: url }) } const goBack = () => { uni.navigateBack() } //身份证号严格校验 const identityIDCard = (code) => { //身份证号前两位代表区域 var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " }; //身份证格式正则表达式 var idCardReg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; var errorMsg = ""; //错误提示信息 var isPass = true; //身份证验证是否通过(true通过、false未通过) //如果身份证不满足格式正则表达式 if (!idCardReg.test(code)) { errorMsg = "身份证格式有误!"; isPass = false; } //区域数组中不包含需验证的身份证前两位 else if (!city[code.substr(0, 2)]) { errorMsg = "身份证地址编码有误!"; isPass = false; } else { //18位身份证需要验证最后一位校验位 if (code.length == 18) { code = code.split(''); //∑(ai×Wi)(mod 11) //加权因子 var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //校验位 var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; var sum = 0; var ai = 0; var wi = 0; for (var i = 0; i < 17; i++) { ai = code[i]; wi = factor[i]; sum += ai * wi; } var last = parity[sum % 11]; if (parity[sum % 11] != code[17]) { errorMsg = "身份证号不存在!"; isPass = false; } } } var returnParam = { 'errorMsg': errorMsg, 'isPass': isPass } return returnParam; } const checkLogin = (url = '', burl = '') => { console.log('url', url) let token = uni.getStorageSync('pig-token') ? uni.getStorageSync('pig-token') : null if(token == null){ uni.showModal({ title: '温馨提示', content: '请您先登录账号!', success: function (res) { if (res.confirm) { let goUrl = '' if(burl != ''){ goUrl = '/pages/login/login?backUrl=' + burl } else{ goUrl = '/pages/login/login' } uni.navigateTo({ url: goUrl }) } } }) return false }else if(url != ''){ uni.navigateTo({ url: url }) } return true } const checkGoPages = (url = '', burl = '', isgo = 1) => { let token = uni.getStorageSync('pig-token') ? uni.getStorageSync('pig-token') : null console.log('token', token) if(token == null){ uni.showModal({ title: '温馨提示', content: '请您先登录账号!', success: function (res) { if (res.confirm) { let goUrl = '' if(burl != ''){ goUrl = '/pages/login/login?backUrl=' + burl } else{ goUrl = '/pages/login/login' } uni.navigateTo({ url: goUrl }) } } }) return false } else { let userInfo = getUserInfo() let goUrl = '' if(userInfo.idcard_auth == 0){ goUrl = '/pages/idcard/idcard' } else if(userInfo.face_auth == 0){ goUrl = '/pages/face/face' } else if(userInfo.job_auth == 0){ goUrl = '/pages/job/job' } else if(userInfo.bank_auth == 0){ goUrl = '/pages/addBank/addBank?backUrl=/pages/face/face' } console.log('goUrl', goUrl) if(goUrl != ''){ uni.showModal({ title: '温馨提示', content: '根据国家法律法规规定,使用本服务需要完成实名认证,是否前往认证?', success: function (res) { if (res.confirm) { uni.navigateTo({ url: goUrl }) } } }) return false } if(url != '' && isgo == 1){ uni.navigateTo({ url: url }) } else { return true } } } const goSwitch = (url) => { uni.switchTab({ url: url }) } const getUserInfo = () => { let userStr = uni.getStorageSync('user-info') ? uni.getStorageSync('user-info') : null if(userStr != null) { userStr = JSON.parse(userStr) } return userStr } const goSetting = () => { var Intent = plus.android.importClass("android.content.Intent") var Uri = plus.android.importClass("android.net.Uri") var Settings = plus.android.importClass("android.provider.Settings") var activity = plus.android.runtimeMainActivity() var intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) var uri = Uri.fromParts("package", activity.getPackageName(), null) intent.setData(uri) activity.startActivity(intent) } const goAgree = (t) => { let userInfo = null let userStr = uni.getStorageSync('user-info') ? uni.getStorageSync('user-info') : null if(userStr != null) { userInfo = JSON.parse(userStr) } console.log(userInfo) // #ifdef APP-PLUS let url = '' if(userInfo != null && userInfo.realname != null && userInfo.idcard != null && userInfo.phone != null){ let url = this.$baseUrl + '/?gp=' + t + '&name=' + userInfo.realname + '&idcard=' + userInfo.idcard + '&phone=' + userInfo.phone } else { let url = this.$baseUrl + '/?gp=' + t } console.log(url) plus.runtime.openURL(url) // #endif } export default { goBack: goBack, post: post, goPages: goPages, decryptDes: decryptDes, identityIDCard: identityIDCard, checkGoPages: checkGoPages, goSwitch: goSwitch, getUserInfo: getUserInfo, goSetting: goSetting, goAgree: goAgree, checkLogin: checkLogin, sendMsg: sendMsg, }