235 lines
5.6 KiB
JavaScript
235 lines
5.6 KiB
JavaScript
import CryptoJS from "crypto-js";
|
|
import * as uuid from "uuid";
|
|
import {
|
|
postJson
|
|
} from "@/utils/requests.js"
|
|
import pageData from "@/static/json/page.json"
|
|
export default {
|
|
install(app, options) {
|
|
|
|
|
|
|
|
// 水印
|
|
app.config.globalProperties.$watermark = () => {
|
|
// if(app.config.globalProperties.$isChristmasPeriod()){
|
|
// return "/static/lottie/christmas.json"
|
|
// }else{
|
|
return "/static/lottie/watermark.json"
|
|
// }
|
|
}
|
|
|
|
app.config.globalProperties.$apiUserEvent = async (type, adminData, uniData) => {
|
|
if (type != 'uni') {
|
|
if (!adminData.prefix) {
|
|
adminData.prefix = ".uni.alipay."
|
|
}
|
|
await postJson('a', 'api/user/event', {
|
|
type: adminData.type,
|
|
key: adminData.type + adminData.prefix + adminData.key,
|
|
|
|
value: adminData.value,
|
|
extra: JSON.stringify({
|
|
uni_version: app.config.globalProperties.$version,
|
|
...adminData.extra
|
|
}),
|
|
})
|
|
}
|
|
}
|
|
|
|
app.config.globalProperties.$toFiexd = (num, index = 2) => { //保留小数
|
|
return Number(num).toFixed(index)
|
|
}
|
|
|
|
// 跳转页面方法
|
|
app.config.globalProperties.$goRechargePage = (type) => { //保留小数
|
|
let pages = getCurrentPages();
|
|
let currentPage = pages[pages.length - 1];
|
|
let currentUrl = currentPage.route;
|
|
currentUrl = pageData[currentUrl]
|
|
if (type) {
|
|
// 点击水印
|
|
app.config.globalProperties.$apiUserEvent('all', {
|
|
type: "click",
|
|
key: type,
|
|
value: type != "watermark" ? "关闭水印" : "点击右下角水印图标",
|
|
extra: {
|
|
page: currentUrl
|
|
}
|
|
}, {
|
|
type: 'click_' + type,
|
|
data: {
|
|
page: currentUrl
|
|
}
|
|
})
|
|
}
|
|
// 进入页面
|
|
app.config.globalProperties.$apiUserEvent('all', {
|
|
type: "event",
|
|
key: "payment_onload",
|
|
value: "进入充值页面",
|
|
extra: {
|
|
from: currentUrl
|
|
}
|
|
}, {
|
|
type: 'payment_onload',
|
|
data: {
|
|
from: currentUrl
|
|
}
|
|
})
|
|
uni.navigateTo({
|
|
url: '/pages/common/recharge/index'
|
|
});
|
|
}
|
|
|
|
|
|
app.config.globalProperties.$isVip = () => {
|
|
let user = uni.getStorageSync('userInfo')
|
|
if (user.vip >= 2) {
|
|
return false
|
|
} else {
|
|
return true
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//解密
|
|
const deCode = (str) => {
|
|
const key = CryptoJS.enc.Utf8.parse(uni.getStorageSync('decrypt'));
|
|
const iv = key.clone();
|
|
iv.sigBytes = 16;
|
|
iv.clamp();
|
|
let res = CryptoJS.AES.decrypt(str, key, {
|
|
iv,
|
|
mode: CryptoJS.mode.CBC,
|
|
padding: CryptoJS.pad.Pkcs7,
|
|
}).toString(CryptoJS.enc.Utf8);
|
|
res = JSON.parse(res);
|
|
return res;
|
|
};
|
|
// 加密签名
|
|
const sign = (config) => {
|
|
let key = uni.getStorageSync('encrypt')
|
|
const method = config.method;
|
|
if (!config.data) {
|
|
config.data = {};
|
|
}
|
|
config.data.timestamp = Math.floor(new Date().getTime() / 1000);
|
|
config.data.nonce = uuid.v4();
|
|
if (
|
|
method === "GET" ||
|
|
method === "DELETE" ||
|
|
method === "get" ||
|
|
method === "delete"
|
|
) {
|
|
const keys = Object.keys(config.data);
|
|
keys.sort();
|
|
for (const i in keys) {
|
|
keys[i] = keys[i] + "=" + encodeURIComponent(config.data[keys[i]]);
|
|
}
|
|
const temp = keys.join("&") + "&" + CryptoJS.MD5(key).toString();
|
|
config.data.signature = CryptoJS.MD5(temp).toString();
|
|
} else if (
|
|
method === "POST" ||
|
|
method === "PUT" ||
|
|
method === "post" ||
|
|
method === "put"
|
|
) {
|
|
if (!config.data) {
|
|
config.data = {};
|
|
}
|
|
const keys = Object.keys(config.data);
|
|
keys.sort();
|
|
for (const i in keys) {
|
|
keys[i] = keys[i] + "=" + encodeURIComponent(config.data[keys[i]]);
|
|
}
|
|
let temp = keys.join("&");
|
|
temp += "&" + JSON.stringify(config.data);
|
|
temp += "&" + CryptoJS.MD5(key).toString();
|
|
config.data.signature = CryptoJS.MD5(temp).toString();
|
|
}
|
|
// console.log("config:", config)
|
|
return config
|
|
};
|
|
|
|
// 请求
|
|
app.config.globalProperties.$requestPromise = async (data, isCode = true) => {
|
|
//头部header
|
|
let header = uni.getStorageSync('header')
|
|
//请求地址
|
|
let host = uni.getStorageSync('host') + data.url
|
|
// 签名
|
|
if (isCode) {
|
|
data = sign(data)
|
|
} else {
|
|
host = "http://10.3.0.24:9209/" + data.url
|
|
header['x-token'] = "bdf87a98-eef0-47df-9faf-41d547b0457e"
|
|
}
|
|
// 排序
|
|
const sortedKeys = Object.keys(data.data).sort();
|
|
let str = ''
|
|
for (const key of sortedKeys) {
|
|
str += '&' + key + '=' + encodeURIComponent(data.data[key]);
|
|
}
|
|
str = str.replace('&', '?')
|
|
// 拼接URL
|
|
host = host + str
|
|
const response = await new Promise((resolve, reject) => {
|
|
uni.request({
|
|
url: host,
|
|
method: data.method,
|
|
data: data.data,
|
|
header,
|
|
success: res => {
|
|
try {
|
|
if (isCode) {
|
|
res.data = deCode(res.data.data)
|
|
} else {
|
|
res.data = res.data.data
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
}
|
|
resolve(res.data);
|
|
},
|
|
fail: e => {
|
|
reject(e);
|
|
}
|
|
});
|
|
});
|
|
return response;
|
|
};
|
|
|
|
|
|
|
|
app.config.globalProperties.$getUserInfo = async () => {
|
|
try {
|
|
let user = await app.config.globalProperties.$requestPromise({
|
|
url: 'api/user',
|
|
method: "GET",
|
|
data: {}
|
|
})
|
|
console.log("模拟请求:", JSON.stringify(user))
|
|
if (user.code == 0) {
|
|
uni.setStorageSync('AppUser', user.data)
|
|
uni.setStorageSync('userInfo', user.data)
|
|
// uni.showModal({
|
|
// title: '提示',
|
|
// content: JSON.stringify(user.data),
|
|
// success: function (res) {
|
|
// if (res.confirm) {
|
|
// console.log('用户点击确定');
|
|
// } else if (res.cancel) {
|
|
// console.log('用户点击取消');
|
|
// }
|
|
// }
|
|
// });
|
|
}
|
|
} catch (error) {
|
|
//TODO handle the exception
|
|
}
|
|
}
|
|
|
|
}
|
|
}; |