优化文件结构,将接口分类

This commit is contained in:
2026-09-22 15:00:46 +08:00
parent 1f1164ab69
commit 991993e0c2
3 changed files with 163 additions and 156 deletions
+2
View File
@@ -12,10 +12,12 @@ app.use(express.json());
// 接入路由
const loginRouter = require("./routes/login");
const userRouter = require("./routes/user");
const messageRouter = require("./routes/message");
// 所有接口,都统一加上 /api 前缀
app.use("/api", loginRouter);
app.use("/api", userRouter);
app.use("/api", messageRouter);
// 启动服务器,监听端口
app.listen(3000, () => {
+161
View File
@@ -0,0 +1,161 @@
const express = require("express");
const router = express.Router();
const db = require("../db/mysql");
const authMiddleware = require("../middleware/authMiddleware");
// 获取最近联系人的最后一条聊天消息
router.get(
"/recentChats",
authMiddleware,
(req, res) => {
const currentUserName = req.user.username;
const sql = `
SELECT
contact_name,
content,
created_at
FROM (
SELECT
CASE
WHEN sender_name = ? THEN receiver_name
ELSE sender_name
END AS contact_name,
content,
created_at,
ROW_NUMBER() OVER (
PARTITION BY
CASE
WHEN sender_name = ? THEN receiver_name
ELSE sender_name
END
ORDER BY created_at DESC
) AS rn
FROM chat_mysql.messages
WHERE sender_name = ?
OR receiver_name = ?
) t
WHERE rn = 1
ORDER BY created_at DESC;
`;
db.query(sql, [currentUserName, currentUserName, currentUserName, currentUserName], (error, results) => {
if (error) {
console.error("数据库查询失败:", error);
return res.status(500).json({
code: 500,
message: "查询失败",
});
}
if (results.length > 0) {
res.json({
code: 200,
message: "查询成功",
data: {
recentChats: results.map(message => ({
contactName: message.contact_name,
content: message.content,
createdAt: message.created_at
}))
},
});
} else {
res.json({
code: 401,
message: "未找到联系人消息",
data: {
recentChats: []
}
});
}
});
}
);
// 获取某个联系人的最近n条聊天消息,分页获取
router.post(
"/contactMessagesInfo",
authMiddleware,
(req, res) => {
const currentUserName = req.user.username;
const { contactName, limit, offset } = req.body;
const sql = `
SELECT
id,
sender_name,
receiver_name,
content,
created_at
FROM chat_mysql.messages
WHERE (sender_name = ? OR receiver_name = ?) AND (sender_name = ? OR receiver_name = ?)
ORDER BY created_at DESC LIMIT ? OFFSET ?;
`;
db.query(sql, [currentUserName, currentUserName, contactName, contactName, limit, offset], (error, results) => {
if (error) {
console.error("数据库查询失败:", error);
return res.status(500).json({
code: 500,
message: "查询失败",
});
}
if (results.length > 0) {
res.json({
code: 200,
message: "查询成功",
data: {
messages: results.map(message => ({
messageId: message.id,
senderName: message.sender_name,
receiverName: message.receiver_name,
content: message.content,
createdAt: message.created_at
}))
},
});
} else {
res.json({
code: 401,
message: "未找到联系人消息",
data: {
messages: []
}
});
}
});
}
);
// 写入聊天消息
router.post("/sendMessage", (req, res) => {
const message = req.body;
const sql = `
INSERT INTO messages
(sender_name, receiver_name, content)
VALUES (?, ?, ?)
`;
db.query(sql, [
message.senderName,
message.receiverName,
message.content
], (error, result) => {
if (error) {
console.error(error);
return res.status(500).json({
code: 500,
message: "发送消息失败",
});
}
res.json({
code: 200,
message: "发送消息成功",
data: null
});
});
});
module.exports = router;
-156
View File
@@ -65,160 +65,4 @@ router.get(
}
);
// 获取最近联系人的最后一条聊天消息
router.get(
"/recentChats",
authMiddleware,
(req, res) => {
const currentUserName = req.user.username;
const sql = `
SELECT
contact_name,
content,
created_at
FROM (
SELECT
CASE
WHEN sender_name = ? THEN receiver_name
ELSE sender_name
END AS contact_name,
content,
created_at,
ROW_NUMBER() OVER (
PARTITION BY
CASE
WHEN sender_name = ? THEN receiver_name
ELSE sender_name
END
ORDER BY created_at DESC
) AS rn
FROM chat_mysql.messages
WHERE sender_name = ?
OR receiver_name = ?
) t
WHERE rn = 1
ORDER BY created_at DESC;
`;
db.query(sql, [currentUserName, currentUserName, currentUserName, currentUserName], (error, results) => {
if (error) {
console.error("数据库查询失败:", error);
return res.status(500).json({
code: 500,
message: "查询失败",
});
}
if (results.length > 0) {
res.json({
code: 200,
message: "查询成功",
data: {
recentChats: results.map(message => ({
contactName: message.contact_name,
content: message.content,
createdAt: message.created_at
}))
},
});
} else {
res.json({
code: 401,
message: "未找到联系人消息",
data: {
recentChats: []
}
});
}
});
}
);
// 获取某个联系人的最近n条聊天消息,分页获取
router.post(
"/contactMessagesInfo",
authMiddleware,
(req, res) => {
const currentUserName = req.user.username;
const { contactName, limit, offset } = req.body;
const sql = `
SELECT
id,
sender_name,
receiver_name,
content,
created_at
FROM chat_mysql.messages
WHERE (sender_name = ? OR receiver_name = ?) AND (sender_name = ? OR receiver_name = ?)
ORDER BY created_at DESC LIMIT ? OFFSET ?;
`;
db.query(sql, [currentUserName, currentUserName, contactName, contactName, limit, offset], (error, results) => {
if (error) {
console.error("数据库查询失败:", error);
return res.status(500).json({
code: 500,
message: "查询失败",
});
}
if (results.length > 0) {
res.json({
code: 200,
message: "查询成功",
data: {
messages: results.map(message => ({
messageId: message.id,
senderName: message.sender_name,
receiverName: message.receiver_name,
content: message.content,
createdAt: message.created_at
}))
},
});
} else {
res.json({
code: 401,
message: "未找到联系人消息",
data: {
messages: []
}
});
}
});
}
);
// 写入聊天消息
router.post("/sendMessage", (req, res) => {
const message = req.body;
const sql = `
INSERT INTO messages
(sender_name, receiver_name, content)
VALUES (?, ?, ?)
`;
db.query(sql, [
message.senderName,
message.receiverName,
message.content
], (error, result) => {
if (error) {
console.error(error);
return res.status(500).json({
code: 500,
message: "发送消息失败",
});
}
res.json({
code: 200,
message: "发送消息成功",
data: null
});
});
});
module.exports = router;