初始化

This commit is contained in:
魏啾
2024-03-21 15:33:26 +08:00
parent 179418e65f
commit 53afc38e76
3486 changed files with 792466 additions and 1 deletions

48
common/css/flex.css Normal file
View File

@@ -0,0 +1,48 @@
.flex-center{
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.flex-start{
display: flex;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
}
.flex-end{
display: flex;
justify-content: flex-end;
align-items: center;
flex-wrap: wrap;
}
.flex-colum{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.flex-colum-start{
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
}
.flex-colum-end{
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-end;
}
.flex-between{
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
}
.flex-around{
display: flex;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
}

1533
common/css/uni.scss Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
var crypto = require('crypto')
function WXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
// base64 decode
var sessionKey = new Buffer(this.sessionKey, 'base64')
encryptedData = new Buffer(encryptedData, 'base64')
iv = new Buffer(iv, 'base64')
try {
// 解密
var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
// 设置自动 padding 为 true删除填充补位
decipher.setAutoPadding(true)
var decoded = decipher.update(encryptedData, 'binary', 'utf8')
decoded += decipher.final('utf8')
decoded = JSON.parse(decoded)
} catch (err) {
throw new Error('Illegal Buffer')
}
if (decoded.watermark.appid !== this.appId) {
throw new Error('Illegal Buffer')
}
return decoded
}
module.exports = WXBizDataCrypt

50
common/js/api.js Normal file
View File

@@ -0,0 +1,50 @@
export default {
userwxlogin(data) { //登录
return uni.api.post("/login/wx/custom/login", data);
},
productqueryProduct(data) { //获取商品信息
return uni.api.post("/product/queryProduct", data);
},
cartadd(data) { //添加到购物车
return uni.api.post("/cart/add", data);
},
cartcartList(data) { //购物车
return uni.api.get("/cart/cartList", data);
},
logincreateCardNo(data) { //获取会员码
return uni.api.get("/login/createCardNo", data);
},
cartupdateNumber(data) { //购物车更改数量
return uni.api.get("/cart/updateNumber", data);
},
ordercreatOrder(data) { //下单
return uni.api.post("/order/creatOrder", data);
},
cartclear(data) { //清空购物车
return uni.api.get("/cart/clear", data);
},
payorderPay(data) { //订单支付
return uni.api.post("/pay/orderPay", data);
},
orderorderList(data) { //订单列表
return uni.api.get("/order/orderList", data);
},
orderorderInfo(data) { //订单回显
return uni.api.get("/order/orderInfo", data);
},
loginwxuserInfo(data) { //微信用户详情
return uni.api.get("/login/wx/userInfo", data);
},
paymemeberIn(data) { //充值
return uni.api.post("/pay/memeberIn", data);
},
paymodfiyOrderInfo(data) { //查询订单支付状态
return uni.api.post("/pay/modfiyOrderInfo", data);
},
productqueryProductSku(data) { //通过选中的商品规格查询价格
return uni.api.get("/product/queryProductSku", data);
},
logingetPhoneNumber(data) { //小程序获取手机号
return uni.api.post("/login/getPhoneNumber", data);
},
}

74
common/js/lange.js Normal file
View File

@@ -0,0 +1,74 @@
const env = {
aliyunServerURL: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com',
accessid: 'LTAI5tMLHwnM1zYYAFuRa1fK',
AccessKeySecret: 'jS1h2STq1vcODczDNFQkjcU6ODyYAj',
timeout: 100000
}
const Base64 = require('./Base64.js');
require('./hmac.js');
require('./sha1.js');
const Crypto = require('./crypto.js');
const uploadFile = function(filePath, key = new Date().getTime()) {
return new Promise((resolve, reject) => {
// const aliyunFileKey = `${new Date().getTime()}_${userId}`;
const aliyunServerURL = env.aliyunServerURL;
const accessid = env.accessid;
const policyBase64 = getPolicyBase64();
const signature = getSignature(policyBase64);
wx.uploadFile({
url: aliyunServerURL, //仅为示例,非真实的接口地址
filePath: filePath,
name: 'file',
formData: {
'key': 'headportrait/' + key,
'OSSAccessKeyId': accessid,
'policy': policyBase64,
'Signature': signature,
'success_action_status': '200',
},
success: function(res) {
if (res.statusCode != 200) {
reject('上传错误:' + JSON.stringify(res))
return;
}
resolve(`https://czh5.sxczgkj.cn/headportrait/${key}`)
},
fail: function(err) {
reject('上传错误:' + JSON.stringify(err))
}
})
})
}
const getPolicyBase64 = function() {
let date = new Date();
date.setHours(date.getHours() + env.timeout);
let srcT = date.toISOString();
const policyText = {
"expiration": srcT, //设置该Policy的失效时间超过这个失效时间之后就没有办法通过这个policy上传文件了 指定了Post请求必须发生在2020年01月01日12点之前("2020-01-01T12:00:00.000Z")。
"conditions": [
["content-length-range", 0, 20 * 1024 * 1024] // 设置上传文件的大小限制,1048576000=1000mb
]
};
const policyBase64 = Base64.encode(JSON.stringify(policyText));
return policyBase64;
}
const getSignature = function(policyBase64) {
const accesskey = env.AccessKeySecret;
const bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, accesskey, {
asBytes: true
});
const signature = Crypto.util.bytesToBase64(bytes);
return signature;
}
module.exports = uploadFile;

5
common/js/shop.js Normal file
View File

@@ -0,0 +1,5 @@
export default {
userwxlogin(data) { //登录
return uni.api.post("/login/wx/custom/login", data, type = 2);
},
}

1437
common/js/uqrCode.js Normal file

File diff suppressed because it is too large Load Diff

148
common/js/websocket.js Normal file
View File

@@ -0,0 +1,148 @@
class webSocketUtils {
constructor(url, time, params) {
this.socketTask = null;
this.is_open_socket = false; //避免重复连接
this.url = url;
this.params = params ? params : null;////是否初始化请求
this.connectNum = 1; // 重连次数
//这个参数是防止重连失败之后onClose方法会重复执行reconnect方法导致重连定时器出问题
//连接并打开之后可重连,且只执行重连方法一次
this.canReconnect = false; // 是否可以重连
//心跳检测
this.timeout = time ? time : 5000; //多少秒执行检测
this.heartbeatInterval = null; //检测服务器端是否还活着
this.reconnectTimeOut = null; //重连之后多久再次重连
try {
return this.connectSocketInit({
data: this.params,
type: 'connectSocketInit',
});
} catch (e) {
console.log('catch');
this.reconnect();
}
}
// 进入这个页面的时候创建websocket连接【整个页面随时使用】
connectSocketInit (data) {
console.log(data,"初始化")
this.data = data;
// console.log('this.url==', this.url);
// console.log('this.params==', this.params);
this.socketTask = uni.connectSocket({
url: this.url,
success: () => {
console.log('正准备建立websocket中...');
uni.hideLoading();
// 返回实例
return this.socketTask;
},
});
this.socketTask.onOpen((res) => {
this.connectNum = 1;
console.log('WebSocket连接正常');
if(this.params){//是否初始化请求
this.send(this.params);
}
clearInterval(this.reconnectTimeOut);
clearInterval(this.heartbeatInterval);
this.is_open_socket = true;
this.canReconnect = true;
this.start();
// 注:只有连接正常打开中 ,才能正常收到消息
this.socketTask.onMessage((e) => {
// 字符串转json
let res = JSON.parse(e.data);
uni.$emit('message', res)
// 普通socket信息处理 TODO
});
});
// 监听连接失败这里代码我注释掉的原因是因为如果服务器关闭后和下面的onclose方法一起发起重连操作这样会导致重复连接
uni.onSocketError((res) => {
console.log('网络断开,请检查!');
this.socketTask = null;
this.is_open_socket = false;
this.canReconnect = true;
clearInterval(this.heartbeatInterval);
clearInterval(this.reconnectTimeOut);
if (this.connectNum <= 10) {
uni.showToast({
title: `网络连接失败,正尝试第${this.connectNum}次连接`,
icon: 'none',
});
this.reconnect();
this.connectNum += 1;
} else {
// uni.$emit('connectError');
uni.showToast({
title: `网络连接失败,请检查网络!`,
icon: 'none',
});
this.connectNum = 1;
this.canReconnect = false;
}
});
// 这里仅是事件监听【如果socket关闭了会执行】
this.socketTask.onClose(() => {
this.socketTask = null;
clearInterval(this.heartbeatInterval);
clearInterval(this.reconnectTimeOut);
this.is_open_socket = false;
if (this.canReconnect) {
this.reconnect();
this.canReconnect = false;
}
});
}
// 主动关闭socket连接
Close () {
this.is_open_socket = true;
this.canReconnect = false;
if(this.socketTask){
this.socketTask.close({
success(res) {
console.log('手动关闭成功');
},
});
}
}
//发送消息
send(data) {
console.log("发送消息---------->", data);
// 注:只有连接正常打开中 ,才能正常成功发送消息
if (this.socketTask) {
this.socketTask.send({
data: JSON.stringify(data),
async success() {
console.log("消息发送成功");
},
});
}
}
//开启心跳检测
start(data) {
console.log('开启心跳检测',data)
// this.heartbeatInterval = setInterval(() => {
// this.send({
// data: '心跳检测',
// type: 'jc',
// });
// }, this.timeout);
}
//重新连接
reconnect() {
//停止发送心跳
clearInterval(this.heartbeatInterval);
//如果不是人为关闭的话,进行重连
if (!this.is_open_socket) {
console.log('进行重连');
// this.canReconnect = true;
this.reconnectTimeOut = setInterval(() => {
this.connectSocketInit(this.data);
}, this.timeout);
}
}
}
module.exports = webSocketUtils;