55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
const express = require('express');
|
|
const mongoose = require('mongoose');
|
|
const cors = require('cors');
|
|
require('dotenv').config();
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
// 中间件
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
// 连接 MongoDB
|
|
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/e-scooter-rental')
|
|
.then(() => console.log('✅ MongoDB 连接成功'))
|
|
.catch(err => console.error('❌ MongoDB 连接失败:', err.message));
|
|
|
|
// 路由
|
|
app.use('/api/vehicles', require('./routes/vehicles'));
|
|
app.use('/api/orders', require('./routes/orders'));
|
|
app.use('/api/customers', require('./routes/customers'));
|
|
app.use('/api/finance', require('./routes/finance'));
|
|
app.use('/api/stores', require('./routes/stores'));
|
|
app.use('/api/complaints', require('./routes/complaints'));
|
|
app.use('/api/approvals', require('./routes/approvals'));
|
|
app.use('/api/payments', require('./routes/payments'));
|
|
app.use('/api/conflicts', require('./routes/conflicts'));
|
|
app.use('/api/applications', require('./routes/applications'));
|
|
app.use('/api/disputes', require('./routes/disputes'));
|
|
app.use('/api/riders', require('./routes/riders'));
|
|
app.use('/api/vehicle-types', require('./routes/vehicleTypes'));
|
|
|
|
// 健康检查
|
|
app.get('/health', (req, res) => {
|
|
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
});
|
|
|
|
// 404 处理
|
|
app.use((req, res) => {
|
|
res.status(404).json({
|
|
success: false,
|
|
message: '接口不存在',
|
|
path: req.path
|
|
});
|
|
});
|
|
|
|
// 错误处理中间件
|
|
const errorHandler = require('./middleware/errorHandler');
|
|
app.use(errorHandler);
|
|
|
|
// 启动服务器
|
|
app.listen(PORT, () => {
|
|
console.log(`🚀 服务器运行在 http://localhost:${PORT}`);
|
|
});
|