import { PackageManageService } from './packageManage' import { assertSilenceResponse, validateSilenceExpiryOverride } from '@/utils/business/packageSilence' // 复用既有套餐详情,不假设授权候选已携带新字段;全部校验完成后才写。 export async function ensurePackageSilenceOverrides( items: { packageId: number | undefined; override?: string | null }[] ) { const checks = items.filter((item) => item.override && item.override !== 'default') const packages = new Map< number, Awaited>['data'] >() for (let index = 0; index < checks.length; index += 4) { await Promise.all( checks.slice(index, index + 4).map(async (item) => { if (!Number.isSafeInteger(item.packageId) || Number(item.packageId) < 1) throw new Error('缺少套餐 ID,无法校验生效条件') const id = item.packageId! let pkg = packages.get(id) if (!pkg) { const response = assertSilenceResponse(await PackageManageService.getPackageDetail(id)) pkg = response.data packages.set(id, pkg) } validateSilenceExpiryOverride(pkg, item.override) }) ) } }