import fs from "fs"; import path from "path"; import type { Banner, Floor, NavItem, Promo, ServiceLink } from "../types"; function readJson(relativePath: string): T { const filePath = path.join(process.cwd(), relativePath); const raw = fs.readFileSync(filePath, "utf-8"); return JSON.parse(raw) as T; } function dataPathFor(locale: string | undefined, filename: string): string { const base = "data"; const candidates = [ locale ? path.join(base, locale, filename) : undefined, path.join(base, filename), ].filter(Boolean) as string[]; for (const p of candidates) { if (fs.existsSync(path.join(process.cwd(), p))) return p; } return path.join(base, filename); } export function getMainNav(locale?: string): NavItem[] { return readJson(dataPathFor(locale, "mainnav.json")); } export function getBanners(locale?: string): Banner[] { return readJson(dataPathFor(locale, "banners.json")); } export function getPromos(locale?: string): Promo[] { return readJson(dataPathFor(locale, "promos.json")); } export function getFloors(locale?: string): Floor[] { return readJson(dataPathFor(locale, "products.json")); } export function getServices(locale?: string): ServiceLink[] { return readJson(dataPathFor(locale, "services.json")); } export function getFloorBySlug(slug: string, locale?: string): Floor | undefined { const floors = getFloors(locale); // 允许 id 带前缀,如 floor-phone,对应 slug phone return floors.find((f) => f.id === slug || f.id === `floor-${slug}`); } export function getProductById(id: string, locale?: string) { const floors = getFloors(locale); for (const f of floors) { const p = f.products.find((x) => x.id === id); if (p) return { product: p, floor: f } as const; } return undefined; } export interface AboutData { banners: { id: string; title: string; image: string; href?: string }[]; intro: { title: string; content: string }; } export function getAbout(locale?: string): AboutData { return readJson(dataPathFor(locale, "about.json")); }