diff --git a/docs/university.md b/docs/university.md
index bd0a3a88c..3b929a1f7 100644
--- a/docs/university.md
+++ b/docs/university.md
@@ -164,7 +164,7 @@ pageClass: routes
| 绿色要闻 | 校园动态 | 教学科研 | 党建思政 | 一周排行 |
| -------- | -------- | -------- | -------- | -------- |
-| lsyw | lsxy | jxky | djsz | yzph |
+| lsyw | xydt | jxky | djsz | yzph |
@@ -172,6 +172,10 @@ pageClass: routes
+### 科技处通知公告
+
+
+
### 教务处通知公告
diff --git a/lib/router.js b/lib/router.js
index 3b93dd6ef..52b3efdf3 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -559,6 +559,7 @@ router.get('/zdfx', require('./routes/galgame/zdfx'));
// 北京林业大学
router.get('/bjfu/grs', require('./routes/universities/bjfu/grs'));
+router.get('/bjfu/kjc', require('./routes/universities/bjfu/kjc'));
router.get('/bjfu/jwc/:type', require('./routes/universities/bjfu/jwc/index'));
router.get('/bjfu/news/:type', require('./routes/universities/bjfu/news/index'));
diff --git a/lib/routes/universities/bjfu/kjc.js b/lib/routes/universities/bjfu/kjc.js
new file mode 100644
index 000000000..84af81e0f
--- /dev/null
+++ b/lib/routes/universities/bjfu/kjc.js
@@ -0,0 +1,65 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const iconv = require('iconv-lite');
+
+module.exports = async (ctx) => {
+ const url = 'http://kyc.bjfu.edu.cn/tztg/index.html';
+ const response = await got.get(url, {
+ responseType: 'buffer',
+ });
+ const data = iconv.decode(response.data, 'gb2312');
+ const $ = cheerio.load(data);
+ const list = $('.ll_con_r_b li')
+ .slice(0, 10)
+ .map((i, e) => {
+ const element = $(e);
+ const title = element.find('.ll_con_r_b_title a').text();
+ const link = element.find('a').attr('href');
+ const date = new Date(
+ element
+ .find('.ll_con_r_b_time')
+ .text()
+ .match(/\d{4}-\d{2}-\d{2}/)
+ );
+ const timeZone = 8;
+ const serverOffset = date.getTimezoneOffset() / 60;
+ const pubDate = new Date(date.getTime() - 60 * 60 * 1000 * (timeZone + serverOffset)).toUTCString();
+
+ return {
+ title: title,
+ description: '',
+ link: 'http://kyc.bjfu.edu.cn/tztg/' + link,
+ author: '北京林业大学科技处通知公告',
+ pubDate: pubDate,
+ };
+ })
+ .get();
+
+ const result = await Promise.all(
+ list.map(async (item) => {
+ const link = item.link;
+
+ const cache = await ctx.cache.get(link);
+ if (cache) {
+ return Promise.resolve(JSON.parse(cache));
+ }
+
+ const itemReponse = await got.get(link, {
+ responseType: 'buffer',
+ });
+ const data = iconv.decode(itemReponse.data, 'gb2312');
+ const itemElement = cheerio.load(data);
+
+ item.description = itemElement('#a_con_l_con').html();
+
+ ctx.cache.set(link, JSON.stringify(item));
+ return Promise.resolve(item);
+ })
+ );
+
+ ctx.state.data = {
+ title: '北林科技处通知',
+ link: url,
+ item: result,
+ };
+};