feat: make zero download quota block downloads and use -1 for unlimited
This commit is contained in:
@@ -274,7 +274,7 @@ createApp({
|
||||
oss_quota_unlimited: false, // 兼容旧数据字段(当前固定为有限配额)
|
||||
download_traffic_quota_value: 1, // 下载流量配额数值
|
||||
download_quota_unit: 'GB', // 下载流量单位:MB / GB / TB
|
||||
download_quota_unlimited: true, // 下载流量:true=不限
|
||||
download_quota_unlimited: false, // 下载流量:true=不限(后端值为 -1)
|
||||
download_traffic_used: 0, // 下载流量已使用(字节)
|
||||
download_quota_operation: 'set', // set/increase/decrease
|
||||
download_quota_adjust_value: 1, // 增减额度数值
|
||||
@@ -407,7 +407,8 @@ createApp({
|
||||
if (this.downloadTrafficReport?.quota?.is_unlimited === true) {
|
||||
return true;
|
||||
}
|
||||
return this.downloadTrafficQuotaBytes <= 0;
|
||||
const userQuota = Number(this.user?.download_traffic_quota);
|
||||
return Number.isFinite(userQuota) && userQuota < 0;
|
||||
},
|
||||
|
||||
downloadTrafficRemainingBytes() {
|
||||
@@ -434,7 +435,7 @@ createApp({
|
||||
}
|
||||
|
||||
if (this.downloadTrafficQuotaBytes <= 0) {
|
||||
return 0;
|
||||
return 100;
|
||||
}
|
||||
|
||||
return Math.min(100, Math.round((this.downloadTrafficUsedBytes / this.downloadTrafficQuotaBytes) * 100));
|
||||
@@ -3120,8 +3121,9 @@ handleDragLeave(e) {
|
||||
this.editStorageForm.oss_quota_unit = 'MB';
|
||||
}
|
||||
|
||||
// 下载流量配额(0 表示不限)
|
||||
// 下载流量配额(-1 表示不限,0 表示禁止下载)
|
||||
const downloadQuotaBytes = Number(user.download_traffic_quota || 0);
|
||||
const isDownloadUnlimited = Number.isFinite(downloadQuotaBytes) && downloadQuotaBytes < 0;
|
||||
const effectiveDownloadQuotaBytes = Number.isFinite(downloadQuotaBytes) && downloadQuotaBytes > 0
|
||||
? downloadQuotaBytes
|
||||
: 0;
|
||||
@@ -3137,10 +3139,13 @@ handleDragLeave(e) {
|
||||
this.editStorageForm.download_quota_expires_at = this.toDateTimeLocalInput(user.download_traffic_quota_expires_at);
|
||||
this.editStorageForm.reset_download_used_now = false;
|
||||
|
||||
this.editStorageForm.download_quota_unlimited = effectiveDownloadQuotaBytes <= 0;
|
||||
if (effectiveDownloadQuotaBytes <= 0) {
|
||||
this.editStorageForm.download_quota_unlimited = isDownloadUnlimited;
|
||||
if (isDownloadUnlimited) {
|
||||
this.editStorageForm.download_traffic_quota_value = 1;
|
||||
this.editStorageForm.download_quota_unit = 'GB';
|
||||
} else if (effectiveDownloadQuotaBytes <= 0) {
|
||||
this.editStorageForm.download_traffic_quota_value = 0;
|
||||
this.editStorageForm.download_quota_unit = 'MB';
|
||||
} else if (effectiveDownloadQuotaBytes >= tb && effectiveDownloadQuotaBytes % tb === 0) {
|
||||
this.editStorageForm.download_traffic_quota_value = effectiveDownloadQuotaBytes / tb;
|
||||
this.editStorageForm.download_quota_unit = 'TB';
|
||||
@@ -3196,10 +3201,11 @@ handleDragLeave(e) {
|
||||
let downloadQuotaBytes = null;
|
||||
let downloadTrafficDelta = null;
|
||||
if (this.editStorageForm.download_quota_operation === 'set') {
|
||||
downloadQuotaBytes = 0;
|
||||
if (!this.editStorageForm.download_quota_unlimited) {
|
||||
if (!this.editStorageForm.download_traffic_quota_value || this.editStorageForm.download_traffic_quota_value < 1) {
|
||||
this.showToast('error', '参数错误', '下载流量配额必须大于 0,或选择不限流量');
|
||||
if (this.editStorageForm.download_quota_unlimited) {
|
||||
downloadQuotaBytes = -1;
|
||||
} else {
|
||||
if (this.editStorageForm.download_traffic_quota_value === null || this.editStorageForm.download_traffic_quota_value === undefined || this.editStorageForm.download_traffic_quota_value < 0) {
|
||||
this.showToast('error', '参数错误', '下载流量配额必须大于等于 0,或选择不限流量');
|
||||
return;
|
||||
}
|
||||
downloadQuotaBytes = toBytes(
|
||||
@@ -3287,7 +3293,9 @@ handleDragLeave(e) {
|
||||
getAdminUserDownloadQuotaPercentage(user) {
|
||||
const quota = Number(user?.download_traffic_quota || 0);
|
||||
const used = Number(user?.download_traffic_used || 0);
|
||||
if (!Number.isFinite(quota) || quota <= 0) return 0;
|
||||
if (!Number.isFinite(quota)) return 0;
|
||||
if (quota < 0) return 0;
|
||||
if (quota === 0) return 100;
|
||||
if (!Number.isFinite(used) || used <= 0) return 0;
|
||||
return Math.min(100, Math.round((used / quota) * 100));
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user