const pool = require('../config/db'); const logger = require('../logger'); // 内存缓存 const roomCache = new Map(); // 获取所有房间(支持分页) const getRooms = async (req, res) => { const { page = 1, pageSize = 20 } = req.query; const offset = (page - 1) * pageSize; logger.info(`开始获取房间信息,页码: ${page}, 每页大小: ${pageSize}`); try { // 查询数据库 const query = ` SELECT * FROM rooms LIMIT ? OFFSET ? `; const [results] = await pool.promise().query(query, [parseInt(pageSize), parseInt(offset)]); logger.info(`成功获取 ${results.length} 个房间信息`); res.status(200).json(results); } catch (err) { logger.error('查询房间失败:', err); res.status(500).send('Error querying rooms'); } }; // 新增房间 const addRoom = async (req, res) => { const { room_name, description, floor, orientation } = req.body; logger.info(`尝试添加新房间: ${room_name}`); if (!room_name) { logger.warn('添加房间失败: 房间名称为空'); return res.status(400).send('房间名称不能为空'); } try { const query = 'INSERT INTO rooms (room_name, description, floor, orientation) VALUES (?, ?, ?, ?)'; const [results] = await pool.promise().query(query, [room_name, description, floor, orientation]); logger.info(`成功添加房间: ${room_name}, ID: ${results.insertId}`); res.status(201).json({ id: results.insertId, room_name, description, floor, orientation }); } catch (err) { logger.error('添加房间失败:', err); res.status(500).send('Error adding room'); } }; // 删除房间 const deleteRoom = async (req, res) => { const roomId = req.params.id; logger.info(`尝试删除房间, ID: ${roomId}`); try { const query = 'DELETE FROM rooms WHERE id = ?'; const [results] = await pool.promise().query(query, [roomId]); logger.info(`成功删除房间, ID: ${roomId}`); res.status(200).json({ message: '房间删除成功' }); } catch (err) { logger.error(`删除房间失败, ID: ${roomId}:`, err); res.status(500).send('Error deleting room'); } }; // 更新房间信息 const updateRoom = async (req, res) => { const roomId = req.params.id; const { room_name, description, floor, orientation } = req.body; logger.info(`尝试更新房间信息, ID: ${roomId}`); if (!room_name) { logger.warn('更新房间失败: 房间名称为空'); return res.status(400).send('房间名称不能为空'); } try { const query = 'UPDATE rooms SET room_name = ?, description = ?, floor = ?, orientation = ? WHERE id = ?'; const [results] = await pool.promise().query(query, [room_name, description, floor, orientation, roomId]); if (results.affectedRows === 0) { logger.warn(`房间 ${roomId} 不存在`); return res.status(404).send('房间不存在'); } logger.info(`成功更新房间信息, ID: ${roomId}`); res.status(200).json({ message: '房间信息更新成功' }); } catch (err) { logger.error(`更新房间信息失败, ID: ${roomId}:`, err); res.status(500).send('Error updating room'); } }; module.exports = { getRooms, addRoom, deleteRoom, updateRoom, };