UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

191 lines (190 loc) 9.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const uniq_1 = tslib_1.__importDefault(require("lodash/uniq")); const path_1 = tslib_1.__importDefault(require("path")); const spring4js_nodejs_1 = require("spring4js-nodejs"); const BaseController_1 = tslib_1.__importDefault(require("../BaseController")); let TemplateManageController = class TemplateManageController extends BaseController_1.default { async getTemplates(ctx) { const params = ctx.query; const result = await this.templateManageService.getTemplates(params); return result; } async saveTemplate(ctx) { const params = ctx.request.body; const result = await this.templateManageService.saveTemplate(params); return result; } async deleteTemplate(ctx) { const params = ctx.query; const result = await this.templateManageService.deleteTemplate(params); return result; } async getLocalTemplate(ctx) { const params = ctx.query; const templateDetail = await this.templateManageService.getTemplateDetail({ appId: params.templateId, appName: params.appName, }); const appList = await this.projectService.getProjectsByProName({ proName: params.appName }); const projectRoot = appList[0].proPath; const result = await this.customCompsService.getCompsByAppName({ appName: params.appName, pageNo: 1, pageSize: 1000, }); const localTemplate = { appId: params.templateId, }; if (templateDetail.appItemExtension && templateDetail.appItemExtension.componentData) { localTemplate.components = JSON.parse(templateDetail.appItemExtension.componentData); } if (!localTemplate.components) { localTemplate.components = [ { type: "config", title: "微页面标题" }, ]; } if (!localTemplate.jsUrl) { localTemplate.jsUrl = { compUrl: "", editor: { jsList: [], cssList: [] } }; } const correctCompList = result.compList ? result.compList.filter((item) => item.visible) : null; if (correctCompList && correctCompList.length > 0) { const components = correctCompList.map((item) => item.code); const compJsFile = this.configService.getDpCompJsFile(); await fs_extra_1.default.ensureFile(compJsFile); const compsJsContent = []; for (let i = 0; i < components.length; i++) { const jsContentBuffer = await fs_extra_1.default.readFile(path_1.default.resolve(projectRoot, `showcase-components/dist/${components[i]}.js`)); const jsContent = jsContentBuffer.toString('utf8'); compsJsContent.push(jsContent); } await fs_extra_1.default.writeFile(compJsFile, compsJsContent.join('\n')); localTemplate.jsUrl.compUrl = `http://127.0.0.1:31250/_yzydev_/local/file?filePath=${compJsFile}`; const jsList = correctCompList.map((item) => { const filePath = path_1.default.resolve(projectRoot, `showcase-editor/dist/${item.code}.js`); return `http://127.0.0.1:31250/_yzydev_/local/file?filePath=${filePath}`; }); localTemplate.jsUrl.editor.jsList = localTemplate.jsUrl.editor.jsList.concat(jsList); } return localTemplate; } async updateTemplate(ctx) { const { templateId, templateInfo, appName } = ctx.request.body; const appList = await this.projectService.getProjectsByProName({ proName: appName }); const projectRoot = appList[0].proPath; const templateDetail = await this.templateManageService.getTemplateDetail({ appId: templateId, appName, }); templateDetail.appName = appName; const templateScript = { compUrl: '', editor: { jsList: [], cssList: [] } }; const templateCompTypes = templateInfo.map((item) => item.type).filter((item) => item.startsWith(`extension-${appName}`)) || []; if (templateCompTypes.length > 0) { const compTypes = uniq_1.default(templateCompTypes); const compJsFile = this.configService.getDpCompJsFile(); await fs_extra_1.default.ensureFile(compJsFile); const compsJsContent = []; for (let i = 0; i < compTypes.length; i++) { const jsContentBuffer = await fs_extra_1.default.readFile(path_1.default.resolve(projectRoot, `showcase-components/dist/${compTypes[i]}.js`)); const jsContent = jsContentBuffer.toString('utf8'); compsJsContent.push(jsContent); } await fs_extra_1.default.writeFile(compJsFile, compsJsContent.join('\n')); const localJsList = compTypes.map(item => { return path_1.default.resolve(projectRoot, `showcase-editor/dist/${item}.js`); }); let compUploadRes = []; let editorUploadRes = []; try { compUploadRes = await this.cdnService.uploadFileToCdn({ projectName: appName, pageName: 'template-component', fileList: [compJsFile], addHash: true, }); editorUploadRes = await this.cdnService.uploadFileToCdn({ projectName: appName, pageName: 'template-editor', fileList: [...localJsList], addHash: true, }); } catch (err) { ctx.body = { code: -1, message: '保存上传失败' }; return; } templateScript.compUrl = compUploadRes[0].url; const jsList = editorUploadRes.map(item => item.url); templateScript.editor.jsList = jsList; } if (!templateDetail.appItemExtension) { templateDetail.appItemExtension = {}; } templateDetail.appItemExtension.componentData = templateInfo; templateDetail.appItemExtension.templateScript = JSON.stringify(templateScript); templateDetail.appItemExtension.bAuditViewUrl = `https://www.youzan.com/v4/shop/developer-decorate#/create/${templateId}?status=testing`; templateDetail.appItemExtension.cAuditViewUrl = `https://h5.youzan.com/wscshop/decorate/extension-preview?templateId=${templateId}&status=testing&cloudType=1`; templateDetail.appItemExtension.bPreviewUrl = `https://www.youzan.com/v4/shop/developer-decorate#/create/${templateId}?status=official`; templateDetail.appItemExtension.cPreviewUrl = `https://h5.youzan.com/wscshop/decorate/extension-preview?templateId=${templateId}&status=official&cloudType=1`; const result = await this.templateManageService.updateTemplate(templateDetail); return result; } }; tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "configService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "userService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "projectService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "cdnService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "customCompsService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "templateManageService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Path("template/list", spring4js_nodejs_1.HttpMethod.GET) ], TemplateManageController.prototype, "getTemplates", null); tslib_1.__decorate([ spring4js_nodejs_1.Path("template/save", spring4js_nodejs_1.HttpMethod.POST) ], TemplateManageController.prototype, "saveTemplate", null); tslib_1.__decorate([ spring4js_nodejs_1.Path("template/delete", spring4js_nodejs_1.HttpMethod.DELETE) ], TemplateManageController.prototype, "deleteTemplate", null); tslib_1.__decorate([ spring4js_nodejs_1.Path("local/template/detail", spring4js_nodejs_1.HttpMethod.GET) ], TemplateManageController.prototype, "getLocalTemplate", null); tslib_1.__decorate([ spring4js_nodejs_1.Path("template/update", spring4js_nodejs_1.HttpMethod.POST) ], TemplateManageController.prototype, "updateTemplate", null); TemplateManageController = tslib_1.__decorate([ spring4js_nodejs_1.Controller("/api/design-platform") ], TemplateManageController); exports.default = TemplateManageController;