rsshub
Version:
Make RSS Great Again!
84 lines (83 loc) • 2.81 kB
JavaScript
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 };