- 新增存储空间管理:会员套餐配置、用户容量/到期管理、后台支付记录查询 - 接入个人主体小程序虚拟支付:下单/发货推送/兜底查单(query_order) - 修复 adminStorageUsers 等接口鉴权、out_trade_no 长度、前端 requestVirtualPayment 参数 - 前端上传前容量预检,超容引导升级无限空间 - 我的页会员卡片展示「无限空间」与已用容量/到期时间 - 后台「存储空间管理」新增支付记录标签页
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
// utils/storage-guard.js
|
|
// 存储空间统一拦截:上传照片/图片前检查剩余空间,超出时在按钮处直接阻止上传。
|
|
const { api } = require('./request');
|
|
|
|
// 判断是否超出配额(会员无限空间,不拦截)
|
|
function quotaExceeded(d, extraBytes) {
|
|
if (!d) return false;
|
|
const isVip = d.is_vip || d.isVip;
|
|
if (isVip) return false;
|
|
const free = d.free_bytes || d.freeBytes || 0;
|
|
const used = d.used_bytes || d.usedBytes || 0;
|
|
return used + (extraBytes || 0) > free;
|
|
}
|
|
|
|
// 空间不足时的统一提示
|
|
function showQuotaBlocked() {
|
|
wx.showModal({
|
|
title: '存储空间不足',
|
|
content: '当前存储空间已满,请升级为无限空间会员后再上传照片。',
|
|
confirmText: '去升级',
|
|
cancelText: '取消',
|
|
success: function (res) {
|
|
if (res.confirm) wx.navigateTo({ url: '/pages/storage/storage' });
|
|
}
|
|
});
|
|
}
|
|
|
|
// 上传前检查:空间充足 resolve(true);不足则弹窗提示并 resolve(false);查询失败不阻断上传(由服务端二次校验兜底)。
|
|
function guardStorageSpace(extraBytes) {
|
|
return api.storageInfo()
|
|
.then(function (d) {
|
|
if (quotaExceeded(d, extraBytes || 0)) {
|
|
showQuotaBlocked();
|
|
return false;
|
|
}
|
|
return true;
|
|
})
|
|
.catch(function () {
|
|
return true;
|
|
});
|
|
}
|
|
|
|
module.exports = { guardStorageSpace, quotaExceeded, showQuotaBlocked };
|