pro-blog/modules/comment.js
2022-05-19 11:52:59 +08:00

63 lines
2.1 KiB
JavaScript

const dayjs = require('dayjs');
const db = require('./db')
const router = require('express').Router();
// 完整的请求接口地址: /api/comment/web/query
router.all('/web/query', async (req, res) => {
let id = req.query['id']; // 获取要查询文章的编号
if (!id || id < 1) {
// 参数不正确 直接返回空数组
res.send([])
} else {
const list = await db.query('select * from comment where article_id =? order by id desc', [id]);
// 循环所有的列表 将ip->address
Array.from(list).forEach(c => {
c.address = getIpAddress(c.ip);
});
res.send(list)
}
});
// 发表评论
router.post('/web/add', async (req, res) => {
let commentData = req.body; // 获取到post的json数据
console.log(commentData)
if (!commentData || !commentData.article_id || !commentData.content) {
res.send({ status: false, message: "参数不对" })
} else {
try {
// 发表时间
commentData.publish_time = dayjs().format("YYYY-MM-DD HH:mm:ss")
// 评论者ip
commentData.ip = getIp(req.ip);
console.log(commentData)
await db.query('insert into comment set ?', commentData);
res.send({ status: true })
} catch (e) {
console.log(e)
res.send({ status: false, message: e.message })
}
}
});
function getIp(ip) {
const ipPatch = ip.match(/\d+\.\d+\.\d+\.\d+/)
if (ipPatch) return ipPatch[0]
return ip;
}
// npm i ip2region
const IP2Region = require("ip2region").default; // 引用依赖库
const query = new IP2Region(); // 实例化库
// 根据ip查询归属地
function getIpAddress(ip) {
const result = query.search(ip);
if (result.isp == '本机地址' || result.isp == '内网IP') {
return '内部网络';
}
if (!result.province) return result.country;
return (result.country != '中国' ? result.country : '') + "-" + result.province + "-" + result.city;
}
router.get('/ip', (req, res) => {
res.send(getIp(req.ip))
})
module.exports = router