UNPKG

rsshub

Version:
84 lines (83 loc) 2.81 kB
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs"; import { t as parseDate } from "./parse-date-CjhZE69i.mjs"; import { t as cache_default } from "./cache-CiDoUSLo.mjs"; import { t as InvalidParameterError } from "./invalid-parameter-CGxhjomn.mjs"; //#region lib/routes/gov/ccgp-hunan/notice.ts const route = { path: "/notice/:type?", categories: ["government"], example: "/gov/ccgp-hunan/notice/采购公告", parameters: { type: { description: "分类名称", default: "项目信息", options: [ "项目信息", "征求意见", "采购意向公开", "单一来源公示", "采购公告", "中标(成交)公告", "废标(终止)公告", "合同公告", "履约验收公告", "更正公告", "资格预审公告", "框架协议公告", "征集公告", "入围结果公告", "成交结果单笔公告", "成交结果汇总公告", "退出公告" ].map((name) => ({ value: name, label: name })) } }, name: "政府采购网 - 公告", maintainers: ["Jeason0228"], handler }; const rootUrl = "http://www.ccgp-hunan.gov.cn"; const flatten = (nodes) => nodes.flatMap((node) => [{ name: node.name, code: node.code }, ...flatten(node.children)]); async function handler(ctx) { const { type = "项目信息" } = ctx.req.param(); const limit = ctx.req.query("limit") ? Math.trunc(Number(ctx.req.query("limit"))) : 15; const categories = await cache_default.tryGet("ccgp-hunan:categories", async () => { const response = await rofetch(`${rootUrl}/admin/category/home/categoryTreeFind?parentId=622707&siteId=160`); return flatten(response.result.data); }); const category = categories.find((c) => c.name === type); if (!category) throw new InvalidParameterError(`未知的公告类型:${type},可用分类:${categories.map((c) => c.name).join("、")}`); const list = (await rofetch(`${rootUrl}/portal/category`, { method: "POST", body: { pageNo: 1, pageSize: limit, categoryCode: category.code, districtCode: ["430000"], isProvince: true } })).result.data.data.map((row) => ({ title: row.title, link: `${rootUrl}/luban/front/detail?parentId=622707&articleId=${row.articleId}`, author: row.author, guid: row.articleId, category: row.pathName, pubDate: parseDate(row.publishDate) })); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { item.description = (await rofetch(`${rootUrl}/portal/detail?articleId=${encodeURIComponent(item.guid)}`)).result.data.content; return item; }))); return { title: `湖南省政府采购网 - ${category.name}`, link: `${rootUrl}/luban/front/category?districtCode=430000&isProvince=true&parentId=622707`, description: "湖南省政府采购网", item: items }; } //#endregion export { route };