const express = require('express'); const cors = require('cors'); const sequelize = require('./config/db'); const { authMiddleware } = require('./middleware/auth'); const { operationLogMiddleware } = require('./utils/logger'); // 加载模型关联关系 require('./models'); // 导入路由 const apartmentRoutes = require('./routes/apartment'); const roomRoutes = require('./routes/room'); const rentalRoutes = require('./routes/rental'); const statisticsRoutes = require('./routes/statistics'); const waterBillRoutes = require('./routes/waterBill'); const electricityBillRoutes = require('./routes/electricityBill'); const authRoutes = require('./routes/auth'); const userRoutes = require('./routes/user'); const roleRoutes = require('./routes/role'); const menuRoutes = require('./routes/menu'); const logRoutes = require('./routes/log'); const expenseRoutes = require('./routes/expense'); const app = express(); const PORT = process.env.PORT || 3000; // 中间件 app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // 公开路由(不需要认证) app.use('/api/auth', authRoutes); // 需要认证的路由 app.use('/api/apartments', authMiddleware, operationLogMiddleware({ module: '公寓管理' }), apartmentRoutes); app.use('/api/rooms', authMiddleware, operationLogMiddleware({ module: '房间管理' }), roomRoutes); app.use('/api/rentals', authMiddleware, operationLogMiddleware({ module: '租房管理' }), rentalRoutes); app.use('/api/statistics', authMiddleware, operationLogMiddleware({ module: '统计分析' }), statisticsRoutes); app.use('/api/water-bills', authMiddleware, operationLogMiddleware({ module: '水费管理' }), waterBillRoutes); app.use('/api/electricity-bills', authMiddleware, operationLogMiddleware({ module: '电费管理' }), electricityBillRoutes); app.use('/api/users', authMiddleware, operationLogMiddleware({ module: '用户管理' }), userRoutes); app.use('/api/roles', authMiddleware, operationLogMiddleware({ module: '角色管理' }), roleRoutes); app.use('/api/menus', authMiddleware, operationLogMiddleware({ module: '菜单管理' }), menuRoutes); app.use('/api/logs', authMiddleware, logRoutes); app.use('/api/expenses', authMiddleware, operationLogMiddleware({ module: '费用支出管理' }), expenseRoutes); // 测试接口 app.get('/', (req, res) => { res.json({ message: 'Rentease API 服务运行正常' }); }); // 启动服务器 console.log('正在启动服务器...'); console.log('使用端口:', PORT); try { const server = app.listen(PORT, '0.0.0.0', () => { console.log(`服务器运行在 http://localhost:${PORT}`); console.log(`服务器PID: ${process.pid}`); console.log('服务器已成功启动,正在监听请求...'); }); // 错误处理 server.on('error', (error) => { console.error('服务器启动错误:', error); process.exit(1); }); // 进程终止处理 process.on('SIGINT', () => { console.log('正在关闭服务器...'); server.close(() => { console.log('服务器已关闭'); process.exit(0); }); }); } catch (error) { console.error('服务器启动异常:', error); process.exit(1); } module.exports = app;