const express = require('express'); const router = express.Router(); const { getServices, getServiceVersionsByClassName, saveServiceVersion, createService } = require('../utils/service-utils'); // 获取所有服务列表 router.get('/services', (req, res) => { try { const services = getServices(); res.json(services); } catch (error) { console.error('获取服务列表失败:', error); res.status(500).json({ error: '获取服务列表失败', details: error.message }); } }); // 获取指定ClassName的服务版本 router.get('/service-versions/:className', (req, res) => { try { const className = req.params.className; if (!className) { return res.status(400).json({ error: '服务类名不能为空' }); } const versions = getServiceVersionsByClassName(className); // 确保版本列表每项都有Name属性,如果没有则使用列名一致性处理 const processedVersions = versions.map(version => { // 如果没有Name属性(可能是表结构原因),则使用与前端组件兼容的方式 if (version.Name === undefined && version.ServiceName) { version.Name = version.ServiceName; } return version; }); res.json(processedVersions); } catch (error) { console.error(`获取服务版本失败: ${error.message}`); res.status(500).json({ error: '获取服务版本失败', details: error.message }); } }); // 保存服务版本信息 router.post('/service-versions', (req, res) => { try { const versionData = req.body; if (!versionData || !versionData.ClassName) { return res.status(400).json({ error: '缺少必要的服务版本数据' }); } // 确保数据字段一致性 if (versionData.ServiceName === undefined && versionData.Name) { versionData.ServiceName = versionData.Name; } // 验证 CmdList 和 OtherParam 是否为有效的 JSON 字符串 if (versionData.CmdList !== undefined) { try { JSON.parse(versionData.CmdList); } catch (e) { return res.status(400).json({ error: 'CmdList 必须是有效的 JSON 字符串' }); } } if (versionData.OtherParam !== undefined) { try { JSON.parse(versionData.OtherParam); } catch (e) { return res.status(400).json({ error: 'OtherParam 必须是有效的 JSON 字符串' }); } } const result = saveServiceVersion(versionData); res.json(result); } catch (error) { console.error(`保存服务版本失败: ${error.message}`); res.status(500).json({ error: '保存服务版本失败', details: error.message }); } }); // 创建新服务 router.post('/services', (req, res) => { try { const serviceData = req.body; if (!serviceData || !serviceData.ClassName || !serviceData.ServiceName || !serviceData.ServiceName_CN) { return res.status(400).json({ error: '缺少必要的服务数据' }); } // 验证类名是否以XN开头 if (!serviceData.ClassName.startsWith('XN')) { return res.status(400).json({ error: '服务类名必须以XN开头' }); } const result = createService(serviceData); res.json(result); } catch (error) { console.error(`创建服务失败: ${error.message}`); res.status(500).json({ error: '创建服务失败', details: error.message }); } }); module.exports = router;