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