smart-app alpha 版本

This commit is contained in:
zhuoda
2024-03-10 22:26:32 +08:00
parent d64b769d40
commit 728ddb9a7e
295 changed files with 20261 additions and 1 deletions

View File

@@ -0,0 +1,87 @@
import CryptoJS from 'crypto-js';
import CryptoSM from 'sm-crypto';
function object2string(data) {
if (typeof data === 'Object') {
return JSON.stringify(data);
}
let str = JSON.stringify(data);
if (str.startsWith("'") || str.startsWith('"')) {
str = str.substring(1);
}
if (str.endsWith("'") || str.endsWith('"')) {
str = str.substring(0, str.length - 1);
}
return str;
}
// ----------------------- AES 加密、解密 -----------------------
const AES_KEY = '1024abcd1024abcd1024abcd1024abcd';
const AES = {
encryptData: function (data) {
// AES 加密 并转为 base64
let utf8Data = CryptoJS.enc.Utf8.parse(object2string(data));
const key = CryptoJS.enc.Utf8.parse(AES_KEY);
const encrypted = CryptoJS.AES.encrypt(utf8Data, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.toString();
},
decryptData: function (data) {
// 第一步Base64 解码
let words = CryptoJS.enc.Base64.parse(data);
// 第二步AES 解密
const key = CryptoJS.enc.Utf8.parse(AES_KEY);
return CryptoJS.AES.decrypt({ ciphertext: words }, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}).toString(CryptoJS.enc.Utf8);
},
};
// ----------------------- 国密SM4算法 加密、解密 -----------------------
const SM4_KEY = '1024abcd1024abcd1024abcd1024abcd';
const SM4 = {
encryptData: function (data) {
// 第一步SM4 加密
let encryptData = CryptoSM.sm4.encrypt(object2string(data), SM4_KEY);
// 第二步: Base64 编码
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(encryptData));
},
decryptData: function (data) {
// 第一步Base64 解码
let words = CryptoJS.enc.Base64.parse(data);
let decode64Str = CryptoJS.enc.Utf8.stringify(words);
// 第二步SM4 解密
return CryptoSM.sm4.decrypt(decode64Str, SM4_KEY);
},
};
// ----------------------- 对外暴露: 加密、解密 -----------------------
// 默认使用SM4算法
const EncryptObject = SM4;
// const EncryptObject = AES;
/**
* 加密
*/
export const encryptData = function (data) {
return !data ? null : EncryptObject.encryptData(data);
};
/**
* 解密
*/
export const decryptData = function (data) {
return !data ? null : EncryptObject.decryptData(data);
};

View File

@@ -0,0 +1,96 @@
/*
* ajax请求
*
* @Author: 1024创新实验室-主任:卓大
* @Date: 2022-09-06 20:46:03
* @Wechat: zhuda1024
* @Email: lab1024@163.com
* @Copyright 1024创新实验室 https://1024lab.net Since 2012
*/
import { USER_TOKEN } from '/@/constants/local-storage-key-const';
import { DATA_TYPE_ENUM } from '/@/constants/common-const';
import { decryptData, encryptData } from './encrypt';
import { useUserStore } from '/@/store/modules/system/user';
const baseUrl = import.meta.env.VITE_APP_API_URL;
function getUserToken() {
let token = uni.getStorageSync(USER_TOKEN);
if (token) {
return token;
}
return '';
}
/**
* 通用请求封装
*/
export const request = function (url, method, data) {
return new Promise((resolve, reject) => {
uni.request({
url: baseUrl + url, //拼接请求路径
data: data,
method: method,
header: {
'x-access-token': getUserToken(),
},
success: (response) => {
// 如果是加密数据
if (response.data.dataType === DATA_TYPE_ENUM.ENCRYPT.value) {
response.data.encryptData = response.data.data;
let decryptStr = decryptData(response.data.data);
if (decryptStr) {
response.data.data = JSON.parse(decryptStr);
}
}
const res = response.data;
if (res.code && res.code !== 1) {
// `token` 过期或者账号已在别处登录
if (res.code === 30007 || res.code === 30008 || res.code === 30012) {
uni.showToast({
title: res.msg,
icon: 'none',
});
useUserStore().clearUserLoginInfo();
uni.navigateTo({ url: '/pages/login/login' });
}
uni.showToast({
title: res.msg,
icon: 'none',
});
reject(response);
} else {
resolve(res);
}
},
fail: (error) => {
reject(error);
},
});
});
};
/**
* get请求
*/
export const getRequest = (url) => {
return request(url, 'GET');
};
/**
* post请求
*/
export const postRequest = (url, data) => {
return request(url, 'POST', data);
};
// ================================= 加密 =================================
/**
* 加密请求参数的post请求
*/
export const postEncryptRequest = (url, data) => {
return request(url, 'POST', { encryptData: encryptData(data) });
};

View File

@@ -0,0 +1,22 @@
/*
* 错误上报sentry
*
* @Author: 1024创新实验室-主任:卓大
* @Date: 2024-01-02 20:49:28
* @Wechat: zhuda1024
* @Email: lab1024@163.com
* @Copyright 1024创新实验室 https://1024lab.net Since 2012
*/
export const smartSentry = {
/**
* sentry 主动上报
*/
captureError: (error) => {
if (error.config && error.data && error && error.headers && error.request && error.status) {
return;
}
// Sentry.captureException(error);
console.error(error);
},
};

View File

@@ -0,0 +1,30 @@
export const SmartLoading = {
show: function (msg) {
uni.showLoading({ title: msg ? msg : '加载中' });
},
hide: function () {
uni.hideLoading();
},
};
export const SmartToast = {
success: (message) => {
uni.showToast({
title: message,
icon: 'success',
});
},
error: (message) => {
uni.showToast({
title: message,
icon: 'error',
});
},
toast: (message) => {
uni.showToast({
title: message,
icon: 'none',
});
},
};