Browse Source

时间

master
hx 1 week ago
parent
commit
85fe1b001b
  1. 83
      src/utils/queryDayLimit.js

83
src/utils/queryDayLimit.js

@ -0,0 +1,83 @@
import { getConfigKey } from "@/api/system/config";
const QUERY_DAY_LIMIT_CONFIG_KEY = "b_side_query_day_limit_config";
let cachedLimitDays = null;
let loadingPromise = null;
function hasConfigValue(value) {
if (value === undefined || value === null) {
return false;
}
if (typeof value === "string" && !value.trim()) {
return false;
}
return true;
}
function parseLimitDays(configValue) {
if (configValue === undefined || configValue === null || configValue === "") {
return null;
}
let parsedValue = configValue;
// Handle nested JSON strings, e.g. "\"{\\\"limitDays\\\":5}\""
for (let i = 0; i < 2; i += 1) {
if (typeof parsedValue !== "string") {
break;
}
const text = parsedValue.trim();
if (!text) {
return null;
}
try {
parsedValue = JSON.parse(text);
} catch (error) {
// Plain numeric string is also supported.
const numericDays = Number(text);
if (Number.isFinite(numericDays)) {
return numericDays > 0 ? Math.floor(numericDays) : null;
}
return null;
}
}
if (parsedValue && typeof parsedValue === "object" && "configValue" in parsedValue) {
return parseLimitDays(parsedValue.configValue);
}
const days = Number(parsedValue && parsedValue.limitDays);
if (!Number.isFinite(days) || days <= 0) {
return null;
}
return Math.floor(days);
}
export async function getQueryDayLimitDays() {
if (cachedLimitDays !== null) {
return cachedLimitDays;
}
if (loadingPromise) {
return loadingPromise;
}
loadingPromise = getConfigKey(QUERY_DAY_LIMIT_CONFIG_KEY)
.then((response) => {
const configValue = hasConfigValue(response && response.data)
? response.data
: response && response.msg;
const limitDays = parseLimitDays(configValue);
if (Number.isFinite(limitDays) && limitDays > 0) {
cachedLimitDays = limitDays;
}
return limitDays;
})
.catch(() => {
return null;
})
.finally(() => {
loadingPromise = null;
});
return loadingPromise;
}
Loading…
Cancel
Save