123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /**
- * 配置路由模块 - 使用SQLite数据库
- */
- const express = require('express');
- const router = express.Router();
- const logger = require('../logger');
- const { requireLogin } = require('../middleware/auth');
- const configServiceDB = require('../services/configServiceDB');
- // 获取配置
- router.get('/config', async (req, res) => {
- try {
- const config = await configServiceDB.getConfig();
-
- // 如果配置为空,使用默认配置
- if (!config || Object.keys(config).length === 0) {
- const defaultConfig = configServiceDB.getDefaultConfig();
- res.json(defaultConfig);
- } else {
- // 合并默认配置和数据库配置,数据库配置优先
- const defaultConfig = configServiceDB.getDefaultConfig();
- const mergedConfig = { ...defaultConfig, ...config };
- res.json(mergedConfig);
- }
- } catch (error) {
- logger.error('获取配置失败:', error);
- // 只在真正出错时返回默认配置
- const defaultConfig = configServiceDB.getDefaultConfig();
- res.json(defaultConfig);
- }
- });
- // 保存配置
- router.post('/config', async (req, res) => {
- try {
- const newConfig = req.body;
-
- // 验证请求数据
- if (!newConfig || typeof newConfig !== 'object') {
- return res.status(400).json({
- error: '无效的配置数据',
- details: '配置必须是一个对象'
- });
- }
-
- // 保存配置到数据库
- await configServiceDB.saveConfigs(newConfig);
-
- res.json({ success: true, message: '配置已保存' });
- } catch (error) {
- logger.error('保存配置失败:', error);
- res.status(500).json({
- error: '保存配置失败',
- details: error.message
- });
- }
- });
- // 获取配置 - 兼容旧路由
- router.get('/', async (req, res) => {
- try {
- const config = await configServiceDB.getConfig();
- res.json(config);
- } catch (error) {
- logger.error('读取配置失败:', error);
- const defaultConfig = configServiceDB.getDefaultConfig();
- res.json(defaultConfig);
- }
- });
- // 保存配置 - 兼容旧路由
- router.post('/', async (req, res) => {
- try {
- const newConfig = req.body;
-
- if (!newConfig || typeof newConfig !== 'object') {
- return res.status(400).json({
- error: '无效的配置数据',
- details: '配置必须是一个对象'
- });
- }
-
- await configServiceDB.saveConfigs(newConfig);
- res.json({ success: true, message: '配置已保存' });
- } catch (error) {
- logger.error('保存配置失败:', error);
- res.status(500).json({
- error: '保存配置失败',
- details: error.message
- });
- }
- });
- // 获取菜单项配置
- router.get('/menu-items', async (req, res) => {
- try {
- const menuItems = await configServiceDB.getMenuItems();
- res.json(menuItems);
- } catch (error) {
- logger.error('获取菜单项失败:', error);
- res.status(500).json({ error: '获取菜单项失败', details: error.message });
- }
- });
- // 保存菜单项配置
- router.post('/menu-items', requireLogin, async (req, res) => {
- try {
- const { menuItems } = req.body;
-
- if (!Array.isArray(menuItems)) {
- return res.status(400).json({
- error: '无效的菜单项数据',
- details: '菜单项必须是一个数组'
- });
- }
-
- await configServiceDB.saveMenuItems(menuItems);
- res.json({ success: true, message: '菜单项配置已保存' });
- } catch (error) {
- logger.error('保存菜单项失败:', error);
- res.status(500).json({ error: '保存菜单项失败', details: error.message });
- }
- });
- module.exports = router;
|