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;