Files
wukuang/apps/lcdp/mock/Plugin.mock.ts
T

404 lines
15 KiB
TypeScript
Raw Normal View History

2026-05-23 14:05:22 +08:00
import { delay, http, HttpResponse } from '@lingshu/vite-plugin-msw/msw';
function num(limit: number, base = 1) {
return Math.floor(Math.random() * limit + base);
}
async function getPostParams(req: any) {
const reader = req.request.body.getReader();
let result = '';
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
result += new TextDecoder().decode(value);
}
return JSON.parse(result);
}
let number = 0;
const handlers = [
// 分页获取插件列表
http.post('/api/lcdp/v1/plugin/page', () => {
const records = Array.from({ length: 50 }).map((_, i) => {
return {
id: `1917513599163318273${i}`,
pluginId: `pluginId${i}`,
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${i}`,
semanticVersion: `semanticVersion${i}`,
status: num(3, 0),
fileMd5: `fileMd5${i}`,
description: {
'zh-CN': 'description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001description曾鹏业务流程001n曾鹏业务流程001description曾鹏业务流程001descri',
},
releaseTime: new Date().valueOf() + i * 100000,
releaseBy: 'admin',
};
});
return HttpResponse.json({
code: '0',
message: null,
data: {
current: '1',
size: '99999',
total: records.length,
pages: '2',
records,
},
error: null,
success: true,
});
}),
// 解析插件
http.post('/api/lcdp/v1/plugin/parse', () => {
return HttpResponse.json({
code: '0',
message: '解析失败在当前属性下面提示“解析失败,请重新上传”',
// data:null,
data: {
pluginId: `pluginId-pluginId-pluginIdpluginId-pluginId-pluginId-pluginId${1}`, // 插件ID(插件编码)
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${100}`,
semanticVersion: `semanticVersionstringsemanticVersionstringsemanticVersionstring${1}`, // 插件版本号
fileMd5: `fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5fileMd5${1}`, // 文件md5
extensions: Array.from({ length: 20 }).map((_, index) => {
return {
extensionName: { // 业务模型名称-多语言字段
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
}, // 扩展名称
extensionId: `extensionIdextensionIdextensionIdextensionIdextensionIdextensionIdextensionIdextensionId${index}`, // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: `extensionClassextensionClassextensionClassextensionClassextensionClass${index}`, // 扩展实现类
};
}),
},
error: null,
success: true,
});
}),
// 保存插件
http.post('/api/lcdp/v1/plugin/save', () => {
return HttpResponse.json({
code: '0',
message: null,
data: null,
error: null,
success: true,
});
}),
// 获取插件详情
http.get('/api/lcdp/v1/plugin/detail', () => {
return HttpResponse.json({
code: '0',
message: null,
data: {
jarName: 'jarName', // 插件jar包名称
fileId: '1937473726949945346', // 插件文件ID
createTime: new Date().valueOf() + 60 * 100000, // 创建时间戳
updateTime: new Date().valueOf() + 240 * 100000, // 更新时间戳
createBy: 'createBy', // 创建人
updateBy: 'updateBy', // 更新人
offlineTime: new Date().valueOf() + 20 * 100000, // 下线时间戳
offlineBy: 'offlineBy', // 下线人
extensions: [
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${1}`,
},
extensionId: 'extensionId', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass', // 扩展实现类
},
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
},
extensionId: 'extensionId2', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass2', // 扩展实现类
},
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
},
extensionId: 'extensionId2', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass2', // 扩展实现类
},
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
},
extensionId: 'extensionId2', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass2', // 扩展实现类
},
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
},
extensionId: 'extensionId2', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass2', // 扩展实现类
},
{
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${2}`,
},
extensionId: 'extensionId2', // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass2', // 扩展实现类
},
], // 扩展类列表
extensionRefs: Array.from({ length: 20 }).map((_, index) => {
if (index % 2 === 0) {
return {
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
},
extensionId: 'extensionId', // 扩展编码
extensionType: 1, // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass.extensionClass.extensionClass.extensionClass.extensionClass.extensionClass.extensionClassextensionClassextensionClass.extensionClass', // 扩展实现类
refJumpPath: 'string',
refPath: { // 引用位置(名称路径,用于展示),以 / 分隔
modelName: { // 业务模型名称-多语言字段
'zh-CN': '示例模型',
},
operationName: { // 业务操作名称-多语言字段
'zh-CN': '自定义',
},
action: '自定义(custom)', // 绑定动作
},
/**
* 鼠标悬停显示内容,json字符串,前端直接将json内容展示即可
例:
1、操作
{
"业务模型名称": "示例模型",
"业务模型编码": "example_model",
"业务操作名称": "自定义",
"业务操作编码": "custom",
"绑定动作": "自定义(custom)"
}
2、自定义组件
{
"组件名称": "操作指引组件",
"组件编码": "customop"
}
*/
hoverContent: JSON.stringify({
modelName: { // 业务模型名称-多语言字段
'zh-CN': '示例模型',
},
modelCode: 'example_model',
operationName: { // 业务模型名称-多语言字段
'zh-CN': '自定义',
},
operationCode: 'custom',
action: '自定义(custom)',
}),
operateBy: 'operateBy', // 配置人
operateTime: new Date().valueOf() + 200 * 100000, // 配置时间戳
pluginId: `pluginId${1}`, // 插件ID(插件编码)
pluginClass: `pluginClassstring${1}`, // 插件类
semanticVersion: `semanticVersionstring${1}`, // 插件版本号
fileMd5: `fileMd5${1}`, // 文件md5
extensions: {
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
},
extensionId: `extensionId${1}`, // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: `extensionClass${1}`, // 扩展实现类
},
};
} else {
return {
extensionName: { // 扩展名称
'zh-CN': `extensionNameextensionNameextensionNameextensionNameextensionName${index}`,
},
extensionId: 'extensionId', // 扩展编码
extensionType: 2, // 扩展类型: 1-操作,2-自定义组件
extensionClass: 'extensionClass', // 扩展实现类
refJumpPath: 'string',
refPath: {
componentName: { // 扩展名称
'zh-CN': '操作指引组件',
},
}, // 引用位置(名称路径,用于展示),以 / 分隔
/**
* 鼠标悬停显示内容,json字符串,前端直接将json内容展示即可
例:
1、操作
{
"业务模型名称": "示例模型",
"业务模型编码": "example_model",
"业务操作名称": "自定义",
"业务操作编码": "custom",
"绑定动作": "自定义(custom)"
}
2、自定义组件
{
"组件名称": "操作指引组件",
"组件编码": "customop"
}
*/
hoverContent: JSON.stringify({
componentName: { // 业务模型名称-多语言字段
'zh-CN': '自定义',
},
componentCode: 'customop',
}),
operateBy: 'operateBy', // 配置人
operateTime: new Date().valueOf() + 200 * 100000, // 配置时间戳
pluginId: `pluginId${2}`, // 插件ID(插件编码)
pluginClass: `pluginClassstring${2}`, // 插件类
semanticVersion: `semanticVersionstring${2}`, // 插件版本号
fileMd5: `fileMd5${2}`, // 文件md5
};
}
}),
},
error: null,
success: true,
});
}),
// 编辑/热更新插件
http.post('/api/lcdp/v1/plugin/update', () => {
return HttpResponse.json({
code: '0',
message: null,
data: null,
error: null,
success: true,
});
}),
// 发布插件
http.post('/api/lcdp/v1/plugin/release', () => {
return HttpResponse.json({
code: '0',
message: null,
data: null,
error: null,
success: true,
});
}),
// 下线插件
http.post('/api/lcdp/v1/plugin/offline', () => {
return HttpResponse.json({
code: '0',
message: null,
data: null,
error: null,
success: true,
});
}),
// 删除插件
http.post('/api/lcdp/v1/plugin/delete', () => {
return HttpResponse.json({
code: '0',
message: null,
data: null,
error: null,
success: true,
});
}),
// 应用
http.post('分页获取插件下拉列表', () => {
const records = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => {
return {
pluginId: `pluginId${i}`,
pluginClass: `pluginClass${i}`,
semanticVersion: `semanticVersion${i}`,
status: num(3),
extensions: {
extensionName: `extensionName${1}`, // 扩展名称
extensionId: `extensionId${1}`, // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: `extensionClass${1}`, // 扩展实现类
},
};
});
return HttpResponse.json({
code: '0',
message: null,
data: {
current: '1',
size: '50',
total: '1',
pages: '1',
records,
},
error: null,
success: true,
});
}),
http.post('/api/lcdp/v1/file/meta', () => {
return HttpResponse.json({
code: '0',
message: null,
data: [
{
id: '1942393678339399682',
filename: 'CssImport111.zip',
module: 'component',
key: 'lingshu/lcdp/component/upload/0M8JE93KZ0MKR/CssImport.zip',
contentLength: '32481',
contentType: 'application/x-zip-compressed',
},
],
error: null,
success: true,
});
}),
// 分页获取插件列表
http.post('/api/lcdp/v1/plugin/page-select', async (req: any) => {
const params = await getPostParams(req);
number = params.current;
const records = Array.from({ length: 10 }).map((_, i) => {
const nums = i + 1 + ((number - 1) * 10);
return {
pluginId: i === 1 ? `pluginId.pluginId.pluginId.pluginId.pluginId${nums}` : `pluginId${nums}`,
pluginClass: `cn.cisidigital.lishu.lcdp.plugin.component.cuscaseguide.pluginClass${nums}`,
semanticVersion: `semanticVersion${nums}`,
status: num(3, 0),
extensions: Array.from({ length: 20 }).map((_, index) => {
return {
extensionName: { // 业务模型名称-多语言字段
'zh-CN': `extensionName${nums}-${index}`,
}, // 扩展名称
extensionId: `extensionId${nums}-${index}`, // 扩展编码
extensionType: num(2), // 扩展类型: 1-操作,2-自定义组件
extensionClass: `extensionClassextensionClassextensionClassextensionClassextensionClass${index}`, // 扩展实现类
};
}),
fileMd5: `fileMd5${nums}`,
};
});
await delay(2000);
return HttpResponse.json({
code: '0',
message: null,
data: {
// current: 1,
// size: 50,
// total: 0,
// pages: 0,
// records:[],
current: number,
size: 50,
total: 0,
pages: 5,
records,
},
error: null,
success: true,
});
}),
];
export default handlers;