const express = require('express'); const router = express.Router(); // 修复多余的分号 const roomController = require('./controllers/roomController'); const deviceController = require('./controllers/deviceController'); const relayController = require('./controllers/relayController'); const authController = require('./controllers/authController'); const otaController = require('./controllers/otaController'); const logger = require('./logger'); const heaterUsageController = require('./controllers/heaterUsageController'); // 中间件:记录所有API请求 router.use((req, res, next) => { logger.info(`收到 ${req.method} 请求: ${req.originalUrl}`); logger.debug('请求体:', req.body); next(); }); // 注册接口 router.post('/api/register', (req, res, next) => { logger.info(`新用户注册请求: ${req.body.username}`); next(); }, authController.register); // 登录接口 router.post('/api/login', (req, res, next) => { logger.info(`用户登录请求: ${req.body.username}`); next(); }, authController.login); // 房间相关路由 router.get('/api/rooms', (req, res, next) => { logger.info('获取所有房间列表请求'); next(); }, roomController.getRooms); router.post('/api/rooms', (req, res, next) => { logger.info(`创建新房间请求: ${req.body.room_name}`); next(); }, roomController.addRoom); router.put('/api/rooms/:id', (req, res, next) => { logger.info(`更新房间信息请求, ID: ${req.params.id}`); next(); }, roomController.updateRoom); router.delete('/api/rooms/:id', (req, res, next) => { logger.info(`删除房间请求, ID: ${req.params.id}`); next(); }, roomController.deleteRoom); // 设备相关路由 router.get('/api/devices', (req, res, next) => { logger.info('获取所有设备列表请求'); next(); }, deviceController.getDevices); // 删除重复的路由定义,只保留这个 ▼▼▼ router.get('/firmware-versions', otaController.getFirmwareVersions); // 修改为正确的控制器方法 ▼▼▼ router.get('/firmware-versions', otaController.getFirmwareVersions || ((req, res) => { res.status(501).json({ code: 501, message: '功能暂未实现' }); })); // 新增:获取所有房间及其设备信息 router.get('/api/all-rooms-with-devices', (req, res, next) => { logger.info('获取所有房间及其设备信息请求'); next(); }, deviceController.getAllRoomsWithDevices); router.post('/api/devices/bind', (req, res, next) => { logger.info(`绑定设备请求: 设备ID=${req.body.deviceId}, 房间ID=${req.body.roomId}`); next(); }, deviceController.bindDeviceToRoom); router.post('/api/devices/unbind/:deviceId', (req, res, next) => { logger.info(`解绑设备请求: ${req.params.deviceId}`); next(); }, deviceController.unbindDevice); router.delete('/api/devices/:deviceId', (req, res, next) => { logger.info(`删除设备请求: ${req.params.deviceId}`); next(); }, deviceController.deleteDevice); router.post('/api/devices/update', (req, res, next) => { logger.info(`更新设备信息请求: ${req.body.deviceId}`); next(); }, deviceController.updateDevice); router.get('/api/device-status', (req, res, next) => { logger.info('获取设备状态请求'); next(); }, deviceController.getDeviceStatus); router.get('/api/device-status-by-room', (req, res, next) => { logger.info(`获取房间设备状态请求, 房间ID: ${req.query.roomId}`); next(); }, deviceController.getDeviceStatusByRoom); router.get('/api/devices-by-room', (req, res, next) => { logger.info(`获取房间设备列表请求, 房间ID: ${req.query.roomId}`); next(); }, deviceController.getDevicesByRoom); router.get('/api/gpio-state', (req, res, next) => { logger.info(`获取GPIO状态请求, 设备ID: ${req.query.deviceId}`); next(); }, deviceController.getGpioState); // 继电器控制路由 router.get('/relay/:state', (req, res, next) => { logger.info(`继电器控制请求: 状态=${req.params.state}, 房间ID=${req.query.roomId}`); next(); }, relayController.toggleRelay); router.post('/send-relay-id-to-sensor/:roomId', (req, res, next) => { logger.info(`发送继电器ID到传感器请求, 房间ID: ${req.params.roomId}`); next(); }, relayController.sendRelayIdToSensor); // 绑定继电器到人体传感器 router.post('/api/devices/bind-relay-to-sensor', (req, res, next) => { logger.info(`绑定继电器到传感器请求: 传感器ID=${req.body.sensorId}, 房间ID=${req.body.roomId}`); next(); }, deviceController.bindRelayToSensor); // 检查更新 // 定义OTA路由 // 取消注释并更新OTA路由 router.post('/check-updates', otaController.checkUpdates); router.get('/download-firmware', otaController.downloadFirmware); router.post('/start-upgrade', otaController.startUpgrade); // 新增固件上传接口 router.post('/upload-firmware', otaController.uploadFirmware.single('firmware'), otaController.handleFirmwareUpload ); // 错误处理中间件 router.use((err, req, res, next) => { logger.error('路由错误:', err); res.status(500).json({ success: false, message: '服务器内部错误' }); }); router.get('/api/heater-usage', (req, res, next) => { logger.info('获取电暖器使用数据请求'); next(); }, heaterUsageController.getUsageData); // 在路由文件中添加(约130行附近) router.post('/check-device-update', otaController.checkDeviceUpdate); module.exports = router;