2025-09-17 18:04:28 +08:00
|
|
|
|
require('dotenv').config();
|
|
|
|
|
|
const express = require('express');
|
|
|
|
|
|
const cors = require('cors');
|
|
|
|
|
|
const bodyParser = require('body-parser');
|
|
|
|
|
|
const helmet = require('helmet');
|
|
|
|
|
|
const morgan = require('morgan');
|
|
|
|
|
|
const path = require('path');
|
|
|
|
|
|
const fs = require('fs');
|
|
|
|
|
|
|
|
|
|
|
|
// 创建Express应用
|
|
|
|
|
|
const app = express();
|
|
|
|
|
|
|
|
|
|
|
|
// 中间件
|
|
|
|
|
|
app.use(cors());
|
|
|
|
|
|
app.use(helmet());
|
|
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
|
|
app.use(bodyParser.urlencoded({ extended: true }));
|
|
|
|
|
|
|
|
|
|
|
|
// 日志配置
|
|
|
|
|
|
const accessLogStream = fs.createWriteStream(
|
|
|
|
|
|
path.join(__dirname, 'logs', 'access.log'),
|
|
|
|
|
|
{ flags: 'a' }
|
|
|
|
|
|
);
|
|
|
|
|
|
app.use(morgan('combined', { stream: accessLogStream }));
|
|
|
|
|
|
|
2025-09-25 17:43:54 +08:00
|
|
|
|
// 数据库连接
|
|
|
|
|
|
const sequelize = require('./config/database');
|
|
|
|
|
|
|
|
|
|
|
|
// 测试数据库连接
|
|
|
|
|
|
sequelize.authenticate()
|
|
|
|
|
|
.then(() => {
|
|
|
|
|
|
console.log('数据库连接成功');
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(err => {
|
|
|
|
|
|
console.error('数据库连接失败:', err);
|
|
|
|
|
|
});
|
2025-09-17 18:04:28 +08:00
|
|
|
|
|
|
|
|
|
|
// 路由
|
|
|
|
|
|
app.use('/api/auth', require('./routes/auth'));
|
|
|
|
|
|
app.use('/api/supervision', require('./routes/supervision'));
|
|
|
|
|
|
app.use('/api/approval', require('./routes/approval'));
|
|
|
|
|
|
app.use('/api/personnel', require('./routes/personnel'));
|
2025-09-26 17:52:50 +08:00
|
|
|
|
// 暂时注释掉warehouse路由,因为在智能项圈页面不使用,且有500错误
|
|
|
|
|
|
// app.use('/api/warehouse', require('./routes/warehouse'));
|
2025-09-17 18:04:28 +08:00
|
|
|
|
app.use('/api/epidemic', require('./routes/epidemic'));
|
|
|
|
|
|
app.use('/api/service', require('./routes/service'));
|
|
|
|
|
|
app.use('/api/visualization', require('./routes/visualization'));
|
|
|
|
|
|
app.use('/api/system', require('./routes/system'));
|
|
|
|
|
|
app.use('/api/files', require('./routes/files'));
|
2025-09-25 15:53:44 +08:00
|
|
|
|
app.use('/api/government', require('./routes/government'));
|
2025-09-26 17:52:50 +08:00
|
|
|
|
app.use('/api/smart-earmark', require('./routes/smartEarmark'));
|
|
|
|
|
|
app.use('/api/smart-host', require('./routes/smartHost'));
|
2025-09-17 18:04:28 +08:00
|
|
|
|
|
|
|
|
|
|
// 健康检查
|
|
|
|
|
|
app.get('/health', (req, res) => {
|
|
|
|
|
|
res.json({ status: 'ok', timestamp: new Date() });
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 错误处理
|
|
|
|
|
|
app.use((err, req, res, next) => {
|
|
|
|
|
|
console.error(err.stack);
|
|
|
|
|
|
res.status(500).json({
|
|
|
|
|
|
code: 500,
|
|
|
|
|
|
message: 'Internal Server Error',
|
|
|
|
|
|
error: process.env.NODE_ENV === 'development' ? err.message : undefined
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 启动服务器
|
|
|
|
|
|
const PORT = process.env.PORT || 5352;
|
|
|
|
|
|
app.listen(PORT, () => {
|
|
|
|
|
|
console.log(`政府管理系统后端服务已启动,端口: ${PORT}`);
|
|
|
|
|
|
});
|