Files
nxxmdata/government-backend/app.js
2025-10-17 17:29:11 +08:00

84 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 }));
// 数据库连接
const sequelize = require('./config/database');
// 测试数据库连接
sequelize.authenticate()
.then(() => {
console.log('数据库连接成功');
})
.catch(err => {
console.error('数据库连接失败:', err);
});
// 路由
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'));
// 暂时注释掉warehouse路由因为在智能项圈页面不使用且有500错误
// app.use('/api/warehouse', require('./routes/warehouse'));
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'));
app.use('/api/government', require('./routes/government'));
app.use('/api/smart-earmark', require('./routes/smartEarmark'));
app.use('/api/smart-host', require('./routes/smartHost'));
app.use('/api/slaughter', require('./routes/slaughter'));
app.use('/api/harmless', require('./routes/harmless'));
app.use('/api/harmless-place', require('./routes/harmlessPlace'));
app.use('/api/epidemic-record', require('./routes/epidemicRecord'));
app.use('/api/vaccine', require('./routes/vaccine'));
app.use('/api/epidemic-activity', require('./routes/epidemicActivity'));
app.use('/api/production-material-certification', require('./routes/productionMaterialCertification'));
app.use('/api/approval-process', require('./routes/approvalProcess'));
app.use('/api/cattle-academy', require('./routes/cattleAcademy'));
app.use('/api/device-warning', require('./routes/deviceWarning'));
// 健康检查
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;
const HOST = process.env.HOST || '0.0.0.0';
app.listen(PORT, HOST, () => {
console.log(`政府管理系统后端服务已启动,地址: ${HOST}:${PORT}`);
});