roomController.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const pool = require('../config/db');
  2. const logger = require('../logger');
  3. // 内存缓存
  4. const roomCache = new Map();
  5. // 获取所有房间(支持分页)
  6. const getRooms = async (req, res) => {
  7. const { page = 1, pageSize = 20 } = req.query;
  8. const offset = (page - 1) * pageSize;
  9. logger.info(`开始获取房间信息,页码: ${page}, 每页大小: ${pageSize}`);
  10. try {
  11. // 查询数据库
  12. const query = `
  13. SELECT * FROM rooms
  14. LIMIT ? OFFSET ?
  15. `;
  16. const [results] = await pool.promise().query(query, [parseInt(pageSize), parseInt(offset)]);
  17. logger.info(`成功获取 ${results.length} 个房间信息`);
  18. res.status(200).json(results);
  19. } catch (err) {
  20. logger.error('查询房间失败:', err);
  21. res.status(500).send('Error querying rooms');
  22. }
  23. };
  24. // 新增房间
  25. const addRoom = async (req, res) => {
  26. const { room_name, description, floor, orientation } = req.body;
  27. logger.info(`尝试添加新房间: ${room_name}`);
  28. if (!room_name) {
  29. logger.warn('添加房间失败: 房间名称为空');
  30. return res.status(400).send('房间名称不能为空');
  31. }
  32. try {
  33. const query = 'INSERT INTO rooms (room_name, description, floor, orientation) VALUES (?, ?, ?, ?)';
  34. const [results] = await pool.promise().query(query, [room_name, description, floor, orientation]);
  35. logger.info(`成功添加房间: ${room_name}, ID: ${results.insertId}`);
  36. res.status(201).json({ id: results.insertId, room_name, description, floor, orientation });
  37. } catch (err) {
  38. logger.error('添加房间失败:', err);
  39. res.status(500).send('Error adding room');
  40. }
  41. };
  42. // 删除房间
  43. const deleteRoom = async (req, res) => {
  44. const roomId = req.params.id;
  45. logger.info(`尝试删除房间, ID: ${roomId}`);
  46. try {
  47. const query = 'DELETE FROM rooms WHERE id = ?';
  48. const [results] = await pool.promise().query(query, [roomId]);
  49. logger.info(`成功删除房间, ID: ${roomId}`);
  50. res.status(200).json({ message: '房间删除成功' });
  51. } catch (err) {
  52. logger.error(`删除房间失败, ID: ${roomId}:`, err);
  53. res.status(500).send('Error deleting room');
  54. }
  55. };
  56. // 更新房间信息
  57. const updateRoom = async (req, res) => {
  58. const roomId = req.params.id;
  59. const { room_name, description, floor, orientation } = req.body;
  60. logger.info(`尝试更新房间信息, ID: ${roomId}`);
  61. if (!room_name) {
  62. logger.warn('更新房间失败: 房间名称为空');
  63. return res.status(400).send('房间名称不能为空');
  64. }
  65. try {
  66. const query = 'UPDATE rooms SET room_name = ?, description = ?, floor = ?, orientation = ? WHERE id = ?';
  67. const [results] = await pool.promise().query(query, [room_name, description, floor, orientation, roomId]);
  68. if (results.affectedRows === 0) {
  69. logger.warn(`房间 ${roomId} 不存在`);
  70. return res.status(404).send('房间不存在');
  71. }
  72. logger.info(`成功更新房间信息, ID: ${roomId}`);
  73. res.status(200).json({ message: '房间信息更新成功' });
  74. } catch (err) {
  75. logger.error(`更新房间信息失败, ID: ${roomId}:`, err);
  76. res.status(500).send('Error updating room');
  77. }
  78. };
  79. module.exports = {
  80. getRooms,
  81. addRoom,
  82. deleteRoom,
  83. updateRoom,
  84. };