XNSim/XNSimHtml/routes/service-dev.js

108 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;