const express = require('express'); const router = express.Router(); const db = require('../db'); const auth = require('../middleware/auth'); router.use(auth); const DEFAULT_CATEGORIES = ['旗舰版PP', '旗舰版ATS', '标品ATS', '标品PP', '国际版ATS']; const DEFAULT_MODULES = ['组织接口', '职位职务接口', '人事接口', '假勤接口', '薪酬接口', '绩效接口', '自定义分组接口', 'BI 报表接口']; async function getSetting(key, defaults) { const [[row]] = await db.query('SELECT value FROM settings WHERE `key` = ?', [key]); if (!row) return defaults; try { const extra = JSON.parse(row.value); // 合并:默认值在前,自定义值去重追加 return [...defaults, ...extra.filter(v => !defaults.includes(v))]; } catch { return defaults; } } // 获取所有设置 router.get('/', async (req, res) => { try { const [categories, modules] = await Promise.all([ getSetting('categories', DEFAULT_CATEGORIES), getSetting('modules', DEFAULT_MODULES), ]); res.json({ categories, modules, defaultCategories: DEFAULT_CATEGORIES, defaultModules: DEFAULT_MODULES, }); } catch (err) { res.status(500).json({ error: err.message }); } }); // 更新分类(仅保存自定义项,默认项不入库) router.put('/categories', async (req, res) => { try { const { items } = req.body; // 完整列表(含默认+自定义) const extra = items.filter(v => !DEFAULT_CATEGORIES.includes(v)); await db.query( 'INSERT INTO settings (`key`, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value = ?', ['categories', JSON.stringify(extra), JSON.stringify(extra)] ); res.json({ message: 'OK' }); } catch (err) { res.status(500).json({ error: err.message }); } }); // 更新业务模块 router.put('/modules', async (req, res) => { try { const { items } = req.body; const extra = items.filter(v => !DEFAULT_MODULES.includes(v)); await db.query( 'INSERT INTO settings (`key`, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value = ?', ['modules', JSON.stringify(extra), JSON.stringify(extra)] ); res.json({ message: 'OK' }); } catch (err) { res.status(500).json({ error: err.message }); } }); module.exports = router; module.exports.DEFAULT_CATEGORIES = DEFAULT_CATEGORIES; module.exports.DEFAULT_MODULES = DEFAULT_MODULES;