2025-12-20 09:37:43 +08:00
|
|
|
require('dotenv').config();
|
2025-12-18 10:45:13 +08:00
|
|
|
const express = require('express');
|
|
|
|
|
const cors = require('cors');
|
2025-12-18 19:11:56 +08:00
|
|
|
const fileUpload = require('express-fileupload');
|
2025-12-18 10:45:13 +08:00
|
|
|
const { sequelize } = require('./db');
|
|
|
|
|
|
|
|
|
|
// 创建Express应用
|
|
|
|
|
const app = express();
|
2025-12-20 08:20:51 +08:00
|
|
|
const PORT = process.env.PORT || 8000;
|
2025-12-18 10:45:13 +08:00
|
|
|
|
|
|
|
|
// 中间件
|
|
|
|
|
app.use(cors());
|
|
|
|
|
app.use(express.json());
|
2025-12-18 19:11:56 +08:00
|
|
|
app.use(fileUpload({ limits: { fileSize: 50 * 1024 * 1024 } }));
|
|
|
|
|
app.use('/temp', express.static('temp'));
|
2025-12-18 10:45:13 +08:00
|
|
|
|
|
|
|
|
// 数据库连接已从db.js导入
|
|
|
|
|
|
|
|
|
|
// 测试数据库连接并同步表结构
|
|
|
|
|
sequelize.authenticate()
|
|
|
|
|
.then(() => {
|
|
|
|
|
console.log('数据库连接成功');
|
|
|
|
|
// 自动同步表结构,不再强制删除表
|
|
|
|
|
return sequelize.sync({
|
|
|
|
|
force: false, // 改为false,避免每次启动都删除表结构
|
|
|
|
|
alter: false // SQLite不支持复杂的表结构修改
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.then(() => {
|
|
|
|
|
console.log('数据库表结构同步完成');
|
|
|
|
|
// 同步完成后初始化设备字段
|
|
|
|
|
return require('./initDeviceFields')();
|
|
|
|
|
})
|
2025-12-29 08:40:08 +08:00
|
|
|
.then(() => {
|
|
|
|
|
// 初始化工单字段
|
|
|
|
|
return require('./initTicketFields')();
|
|
|
|
|
})
|
2025-12-25 16:49:00 +08:00
|
|
|
.then(() => {
|
|
|
|
|
// 初始化工单模型关联
|
|
|
|
|
return require('./models/ticketIndex').initializeModels();
|
|
|
|
|
})
|
2025-12-29 16:10:42 +08:00
|
|
|
.then(() => {
|
|
|
|
|
// 同步系统设置模型
|
|
|
|
|
const SystemSetting = require('./models/SystemSetting');
|
|
|
|
|
return SystemSetting.sync();
|
|
|
|
|
})
|
2025-12-18 10:45:13 +08:00
|
|
|
.catch(err => console.error('数据库操作失败:', err));
|
|
|
|
|
|
|
|
|
|
// 导入路由
|
|
|
|
|
const deviceRoutes = require('./routes/devices');
|
|
|
|
|
const rackRoutes = require('./routes/racks');
|
|
|
|
|
const roomRoutes = require('./routes/rooms');
|
|
|
|
|
const deviceFieldRoutes = require('./routes/deviceFields');
|
2025-12-20 17:43:50 +08:00
|
|
|
const backgroundRoutes = require('./routes/background');
|
2025-12-24 16:44:27 +08:00
|
|
|
const consumableRoutes = require('./routes/consumables');
|
|
|
|
|
const consumableRecordRoutes = require('./routes/consumableRecords');
|
|
|
|
|
const consumableCategoryRoutes = require('./routes/consumableCategories');
|
2025-12-25 10:48:35 +08:00
|
|
|
const authRoutes = require('./routes/auth');
|
|
|
|
|
const usersRoutes = require('./routes/users');
|
|
|
|
|
const rolesRoutes = require('./routes/roles');
|
2025-12-25 16:49:00 +08:00
|
|
|
const ticketRoutes = require('./routes/tickets');
|
|
|
|
|
const ticketCategoryRoutes = require('./routes/ticketCategories');
|
2025-12-29 08:40:08 +08:00
|
|
|
const ticketFieldRoutes = require('./routes/ticketFields');
|
2025-12-29 16:10:42 +08:00
|
|
|
const systemSettingsRoutes = require('./routes/systemSettings');
|
2025-12-18 10:45:13 +08:00
|
|
|
|
|
|
|
|
// 使用路由
|
|
|
|
|
app.use('/api/devices', deviceRoutes);
|
|
|
|
|
app.use('/api/racks', rackRoutes);
|
|
|
|
|
app.use('/api/rooms', roomRoutes);
|
|
|
|
|
app.use('/api/deviceFields', deviceFieldRoutes);
|
2025-12-20 17:43:50 +08:00
|
|
|
app.use('/api/background', backgroundRoutes);
|
2025-12-24 16:44:27 +08:00
|
|
|
app.use('/api/consumables', consumableRoutes);
|
|
|
|
|
app.use('/api/consumable-records', consumableRecordRoutes);
|
|
|
|
|
app.use('/api/consumable-categories', consumableCategoryRoutes);
|
2025-12-25 10:48:35 +08:00
|
|
|
app.use('/api/auth', authRoutes);
|
|
|
|
|
app.use('/api/users', usersRoutes);
|
|
|
|
|
app.use('/api/roles', rolesRoutes);
|
2025-12-25 16:49:00 +08:00
|
|
|
app.use('/api/tickets', ticketRoutes);
|
|
|
|
|
app.use('/api/ticket-categories', ticketCategoryRoutes);
|
2025-12-29 08:40:08 +08:00
|
|
|
app.use('/api/ticket-fields', ticketFieldRoutes);
|
2025-12-29 16:10:42 +08:00
|
|
|
app.use('/api/system-settings', systemSettingsRoutes);
|
2025-12-20 17:43:50 +08:00
|
|
|
|
|
|
|
|
// 静态文件服务
|
|
|
|
|
app.use('/uploads', express.static('uploads'));
|
2025-12-18 10:45:13 +08:00
|
|
|
|
|
|
|
|
// 健康检查
|
|
|
|
|
app.get('/health', (req, res) => {
|
|
|
|
|
res.json({ status: 'ok', message: 'IDC设备管理系统后端服务正常运行' });
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 启动服务器
|
|
|
|
|
app.listen(PORT, () => {
|
|
|
|
|
console.log(`服务器运行在 http://localhost:${PORT}`);
|
|
|
|
|
});
|