|
@@ -2,6 +2,7 @@ import { reactive } from 'vue'
|
|
|
import { getSimCardMonthlyData } from '@/service/simCardManage'
|
|
import { getSimCardMonthlyData } from '@/service/simCardManage'
|
|
|
import { simCardCacheDB } from '@/service/simCardManage/simCardCache'
|
|
import { simCardCacheDB } from '@/service/simCardManage/simCardCache'
|
|
|
import type { SimCardMonthlyData, SimCardInfo } from '@/service/simCardManage/interface'
|
|
import type { SimCardMonthlyData, SimCardInfo } from '@/service/simCardManage/interface'
|
|
|
|
|
+import { getPrevMonth } from './month'
|
|
|
|
|
|
|
|
/** 响应式内存缓存 key: `${giccid}_${month}` */
|
|
/** 响应式内存缓存 key: `${giccid}_${month}` */
|
|
|
const memoryCache = reactive(new Map<string, SimCardMonthlyData>())
|
|
const memoryCache = reactive(new Map<string, SimCardMonthlyData>())
|
|
@@ -26,13 +27,6 @@ export function cacheKey(giccid: string, month: string): string {
|
|
|
return `${giccid}_${month}`
|
|
return `${giccid}_${month}`
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 获取上月 month 字符串 (输入 "2026-08" → 输出 "2026-07") */
|
|
|
|
|
-function getPrevMonth(month: string): string {
|
|
|
|
|
- const [year, mon] = month.split('-').map(Number)
|
|
|
|
|
- const date = new Date(year, mon - 2, 1)
|
|
|
|
|
- return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}`
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// ─── 核心:请求单条数据并写入双层缓存 ───
|
|
// ─── 核心:请求单条数据并写入双层缓存 ───
|
|
|
|
|
|
|
|
function fetchAndCache(giccid: string, month: string): Promise<SimCardMonthlyData> {
|
|
function fetchAndCache(giccid: string, month: string): Promise<SimCardMonthlyData> {
|
|
@@ -157,7 +151,9 @@ function computeDailyIncrement(giccid: string, month: string): number | null {
|
|
|
const data = memoryCache.get(key)
|
|
const data = memoryCache.get(key)
|
|
|
if (!data) return null
|
|
if (!data) return null
|
|
|
|
|
|
|
|
- const days = Object.keys(data.dailyUsage).map(Number).sort((a, b) => a - b)
|
|
|
|
|
|
|
+ const days = Object.keys(data.dailyUsage)
|
|
|
|
|
+ .map(Number)
|
|
|
|
|
+ .sort((a, b) => a - b)
|
|
|
if (days.length === 0) return null
|
|
if (days.length === 0) return null
|
|
|
|
|
|
|
|
const latestDay = days.at(-1)!
|
|
const latestDay = days.at(-1)!
|
|
@@ -170,7 +166,9 @@ function computeDailyIncrement(giccid: string, month: string): number | null {
|
|
|
const prevData = memoryCache.get(prevKey)
|
|
const prevData = memoryCache.get(prevKey)
|
|
|
if (!prevData) return null
|
|
if (!prevData) return null
|
|
|
|
|
|
|
|
- const prevDays = Object.keys(prevData.dailyUsage).map(Number).sort((a, b) => a - b)
|
|
|
|
|
|
|
+ const prevDays = Object.keys(prevData.dailyUsage)
|
|
|
|
|
+ .map(Number)
|
|
|
|
|
+ .sort((a, b) => a - b)
|
|
|
if (prevDays.length === 0) return null
|
|
if (prevDays.length === 0) return null
|
|
|
|
|
|
|
|
const lastDayOfPrevMonth = prevDays.at(-1)!
|
|
const lastDayOfPrevMonth = prevDays.at(-1)!
|