routes.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. const express = require('express');
  2. const router = express.Router(); // 修复多余的分号
  3. const roomController = require('./controllers/roomController');
  4. const deviceController = require('./controllers/deviceController');
  5. const relayController = require('./controllers/relayController');
  6. const authController = require('./controllers/authController');
  7. const otaController = require('./controllers/otaController');
  8. const logger = require('./logger');
  9. const heaterUsageController = require('./controllers/heaterUsageController');
  10. // 中间件:记录所有API请求
  11. router.use((req, res, next) => {
  12. logger.info(`收到 ${req.method} 请求: ${req.originalUrl}`);
  13. logger.debug('请求体:', req.body);
  14. next();
  15. });
  16. // 注册接口
  17. router.post('/api/register', (req, res, next) => {
  18. logger.info(`新用户注册请求: ${req.body.username}`);
  19. next();
  20. }, authController.register);
  21. // 登录接口
  22. router.post('/api/login', (req, res, next) => {
  23. logger.info(`用户登录请求: ${req.body.username}`);
  24. next();
  25. }, authController.login);
  26. // 房间相关路由
  27. router.get('/api/rooms', (req, res, next) => {
  28. logger.info('获取所有房间列表请求');
  29. next();
  30. }, roomController.getRooms);
  31. router.post('/api/rooms', (req, res, next) => {
  32. logger.info(`创建新房间请求: ${req.body.room_name}`);
  33. next();
  34. }, roomController.addRoom);
  35. router.put('/api/rooms/:id', (req, res, next) => {
  36. logger.info(`更新房间信息请求, ID: ${req.params.id}`);
  37. next();
  38. }, roomController.updateRoom);
  39. router.delete('/api/rooms/:id', (req, res, next) => {
  40. logger.info(`删除房间请求, ID: ${req.params.id}`);
  41. next();
  42. }, roomController.deleteRoom);
  43. // 设备相关路由
  44. router.get('/api/devices', (req, res, next) => {
  45. logger.info('获取所有设备列表请求');
  46. next();
  47. }, deviceController.getDevices);
  48. // 删除重复的路由定义,只保留这个 ▼▼▼
  49. router.get('/firmware-versions', otaController.getFirmwareVersions);
  50. // 修改为正确的控制器方法 ▼▼▼
  51. router.get('/firmware-versions', otaController.getFirmwareVersions || ((req, res) => {
  52. res.status(501).json({ code: 501, message: '功能暂未实现' });
  53. }));
  54. // 新增:获取所有房间及其设备信息
  55. router.get('/api/all-rooms-with-devices', (req, res, next) => {
  56. logger.info('获取所有房间及其设备信息请求');
  57. next();
  58. }, deviceController.getAllRoomsWithDevices);
  59. router.post('/api/devices/bind', (req, res, next) => {
  60. logger.info(`绑定设备请求: 设备ID=${req.body.deviceId}, 房间ID=${req.body.roomId}`);
  61. next();
  62. }, deviceController.bindDeviceToRoom);
  63. router.post('/api/devices/unbind/:deviceId', (req, res, next) => {
  64. logger.info(`解绑设备请求: ${req.params.deviceId}`);
  65. next();
  66. }, deviceController.unbindDevice);
  67. router.delete('/api/devices/:deviceId', (req, res, next) => {
  68. logger.info(`删除设备请求: ${req.params.deviceId}`);
  69. next();
  70. }, deviceController.deleteDevice);
  71. router.post('/api/devices/update', (req, res, next) => {
  72. logger.info(`更新设备信息请求: ${req.body.deviceId}`);
  73. next();
  74. }, deviceController.updateDevice);
  75. router.get('/api/device-status', (req, res, next) => {
  76. logger.info('获取设备状态请求');
  77. next();
  78. }, deviceController.getDeviceStatus);
  79. router.get('/api/device-status-by-room', (req, res, next) => {
  80. logger.info(`获取房间设备状态请求, 房间ID: ${req.query.roomId}`);
  81. next();
  82. }, deviceController.getDeviceStatusByRoom);
  83. router.get('/api/devices-by-room', (req, res, next) => {
  84. logger.info(`获取房间设备列表请求, 房间ID: ${req.query.roomId}`);
  85. next();
  86. }, deviceController.getDevicesByRoom);
  87. router.get('/api/gpio-state', (req, res, next) => {
  88. logger.info(`获取GPIO状态请求, 设备ID: ${req.query.deviceId}`);
  89. next();
  90. }, deviceController.getGpioState);
  91. // 继电器控制路由
  92. router.get('/relay/:state', (req, res, next) => {
  93. logger.info(`继电器控制请求: 状态=${req.params.state}, 房间ID=${req.query.roomId}`);
  94. next();
  95. }, relayController.toggleRelay);
  96. router.post('/send-relay-id-to-sensor/:roomId', (req, res, next) => {
  97. logger.info(`发送继电器ID到传感器请求, 房间ID: ${req.params.roomId}`);
  98. next();
  99. }, relayController.sendRelayIdToSensor);
  100. // 绑定继电器到人体传感器
  101. router.post('/api/devices/bind-relay-to-sensor', (req, res, next) => {
  102. logger.info(`绑定继电器到传感器请求: 传感器ID=${req.body.sensorId}, 房间ID=${req.body.roomId}`);
  103. next();
  104. }, deviceController.bindRelayToSensor);
  105. // 检查更新
  106. // 定义OTA路由
  107. // 取消注释并更新OTA路由
  108. router.post('/check-updates', otaController.checkUpdates);
  109. router.get('/download-firmware', otaController.downloadFirmware);
  110. router.post('/start-upgrade', otaController.startUpgrade);
  111. // 新增固件上传接口
  112. router.post('/upload-firmware',
  113. otaController.uploadFirmware.single('firmware'),
  114. otaController.handleFirmwareUpload
  115. );
  116. // 错误处理中间件
  117. router.use((err, req, res, next) => {
  118. logger.error('路由错误:', err);
  119. res.status(500).json({
  120. success: false,
  121. message: '服务器内部错误'
  122. });
  123. });
  124. router.get('/api/heater-usage', (req, res, next) => {
  125. logger.info('获取电暖器使用数据请求');
  126. next();
  127. }, heaterUsageController.getUsageData);
  128. // 在路由文件中添加(约130行附近)
  129. router.post('/check-device-update', otaController.checkDeviceUpdate);
  130. module.exports = router;