优化接口,实现分页查询
This commit is contained in:
+75
-5
@@ -65,12 +65,82 @@ router.get(
|
||||
}
|
||||
);
|
||||
|
||||
// 获取所有聊天消息
|
||||
// 获取最近联系人的最后一条聊天消息
|
||||
router.get(
|
||||
"/messagesInfo",
|
||||
"/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 } = req.body;
|
||||
const sql = `
|
||||
SELECT
|
||||
id,
|
||||
@@ -79,10 +149,10 @@ router.get(
|
||||
content,
|
||||
created_at
|
||||
FROM chat_mysql.messages
|
||||
WHERE sender_name = ? OR receiver_name = ?
|
||||
ORDER BY created_at ASC;
|
||||
WHERE (sender_name = ? OR receiver_name = ?) AND (sender_name = ? OR receiver_name = ?)
|
||||
ORDER BY created_at ASC LIMIT ? ;
|
||||
`;
|
||||
db.query(sql, [currentUserName, currentUserName], (error, results) => {
|
||||
db.query(sql, [currentUserName, currentUserName, contactName, contactName, limit], (error, results) => {
|
||||
if (error) {
|
||||
console.error("数据库查询失败:", error);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user