import { Request, Response } from "express"; import { buildMockUser, buildYearTrend, buildNameList } from "../services/mock.service"; function toInt(value: unknown, fallback: number): number { if (typeof value === "number" && Number.isFinite(value)) return Math.floor(value); if (typeof value === "string" && value.trim() !== "") { const parsed = Number.parseInt(value, 10); if (Number.isFinite(parsed)) return parsed; } return fallback; } class MockController { getMockUser = (_req: Request, res: Response): void => { res.json({ data: buildMockUser() }); }; getNames = (req: Request, res: Response): void => { const pageSize = Math.max(1, Math.min(200, toInt(req.query.size, 10))); const page = Math.max(1, toInt(req.query.page, 1)); const start = (page - 1) * pageSize; const rows = buildNameList(pageSize, start); const total = 100000; res.json({ data: { total, rows } }); }; getTrend = (req: Request, res: Response): void => { const rawYear = (req.body as { year?: unknown })?.year; const year = typeof rawYear === "string" ? Number.parseInt(rawYear, 10) : typeof rawYear === "number" ? rawYear : NaN; if (!Number.isInteger(year) || year < 1970 || year > 9999) { res.status(400).json({ code: "INVALID_YEAR", message: "year必须是1970-9999之间的整数" }); return; } const fullData = buildYearTrend(year); const now = new Date(); const currentYear = now.getUTCFullYear(); if (year === currentYear) { const y = currentYear; //const m = String(now.getUTCMonth() + 1).padStart(2, "0"); const m = '02' const d = String(now.getUTCDate()).padStart(2, "0"); const today = `${y}-${m}-${d}`; console.log(today); const truncated = fullData.filter((item) => item.label <= today); res.json({ data: truncated }); return; } res.json({ data: fullData }); }; } export default new MockController();