diff --git a/backend/db.js b/backend/db.js index 11c8455..acffed1 100644 --- a/backend/db.js +++ b/backend/db.js @@ -5,6 +5,7 @@ const DB_TYPE = process.env.DB_TYPE || 'sqlite'; // 数据库类型:sqlite 或 // 根据数据库类型创建连接 let sequelize; +let dbDialect = 'sqlite'; // 实际使用的数据库类型 if (DB_TYPE === 'mysql') { // MySQL 配置 @@ -19,6 +20,7 @@ if (DB_TYPE === 'mysql') { logging: process.env.NODE_ENV === 'development' ? console.log : false } ); + dbDialect = 'mysql'; } else { // SQLite 配置(默认) sequelize = new Sequelize({ @@ -28,7 +30,8 @@ if (DB_TYPE === 'mysql') { dialectOptions: { charset: 'utf8mb4' } - }); + ); + dbDialect = 'sqlite'; } -module.exports = { sequelize, DB_TYPE }; \ No newline at end of file +module.exports = { sequelize, DB_TYPE, dbDialect }; \ No newline at end of file diff --git a/backend/routes/tickets.js b/backend/routes/tickets.js index 8fc8738..220009f 100644 --- a/backend/routes/tickets.js +++ b/backend/routes/tickets.js @@ -5,7 +5,7 @@ const { v4: uuidv4 } = require('uuid'); const { Ticket, TicketOperationRecord } = require('../models/ticketIndex'); const Device = require('../models/Device'); const User = require('../models/User'); -const { DB_TYPE } = require('../db'); +const { dbDialect } = require('../db'); // 获取工单统计 (必须定义在 /:ticketId 之前) router.get('/stats', async (req, res) => { @@ -51,7 +51,7 @@ router.get('/stats', async (req, res) => { const monthlyStats = await Ticket.findAll({ where, attributes: [ - [DB_TYPE === 'mysql' + [dbDialect === 'mysql' ? require('sequelize').fn('DATE_FORMAT', require('sequelize').col('createdAt'), '%Y-%m') : require('sequelize').fn('strftime', '%Y-%m', require('sequelize').col('createdAt')), 'month'],