UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

232 lines (231 loc) 11.3 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, }, true); 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); } const vendorsDllJs = path_1.default.resolve(projectRoot, `showcase-components/dist/vendors.dll.js`); const isDllExist = await fs_extra_1.default.pathExists(vendorsDllJs); if (isDllExist) { const jsContentBuffer = await fs_extra_1.default.readFile(vendorsDllJs); const jsContent = jsContentBuffer.toString('utf8'); compsJsContent.unshift(jsContent); } await fs_extra_1.default.writeFile(compJsFile, compsJsContent.join('\n')); localTemplate.jsUrl.compUrl = `/_yzydev_/local/file?filePath=${compJsFile}`; const jsList = correctCompList.map((item) => { const filePath = path_1.default.resolve(projectRoot, `showcase-editor/dist/${item.code}.js`); return `/_yzydev_/local/file?filePath=${filePath}`; }); localTemplate.jsUrl.editor.jsList = localTemplate.jsUrl.editor.jsList.concat(jsList); } const groupInfo = await this.dpRequestService.getAllGroupComponent({ appName: params.appName }); let groupFilter = []; if (Array.isArray(groupInfo) && groupInfo.length) { groupFilter = groupInfo.filter(item => item.visible); groupFilter.forEach(item => { if (Array.isArray(item.children)) { item.children = item.children.filter((v) => v.visible); item.children.forEach((v) => v.type = v.code); } }); } localTemplate.extensionGroupInfo = groupFilter; return localTemplate; } async updateTemplate(ctx) { const { templateId, templateInfo, appName } = ctx.request.body; const extensionKdtId = ctx.cookies.get('kdt_id'); 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); } const vendorsDllJs = path_1.default.resolve(projectRoot, `showcase-components/dist/vendors.dll.js`); const isDllExist = await fs_extra_1.default.pathExists(vendorsDllJs); if (isDllExist) { const jsContentBuffer = await fs_extra_1.default.readFile(vendorsDllJs); const jsContent = jsContentBuffer.toString('utf8'); compsJsContent.unshift(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&extensionKdtId=${extensionKdtId}`; templateDetail.appItemExtension.cAuditViewUrl = `https://h5.youzan.com/wscshop/decorate/extension-preview?templateId=${templateId}&status=testing&cloudType=1&extensionKdtId=${extensionKdtId}`; templateDetail.appItemExtension.bPreviewUrl = `https://www.youzan.com/v4/shop/developer-decorate#/create/${templateId}?status=official&extensionKdtId=${extensionKdtId}`; templateDetail.appItemExtension.cPreviewUrl = `https://h5.youzan.com/wscshop/decorate/extension-preview?templateId=${templateId}&status=official&cloudType=1&extensionKdtId=${extensionKdtId}`; const result = await this.templateManageService.updateTemplate(templateDetail); return result; } async getTestShopList(ctx) { const { appId } = ctx.query; const data = await this.shopService.getTestShopList({ appId, env: 0 }); return data; } }; 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.Resource() ], TemplateManageController.prototype, "shopService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], TemplateManageController.prototype, "dpRequestService", 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); tslib_1.__decorate([ spring4js_nodejs_1.Path("template/test-shop", spring4js_nodejs_1.HttpMethod.GET) ], TemplateManageController.prototype, "getTestShopList", null); TemplateManageController = tslib_1.__decorate([ spring4js_nodejs_1.Controller("/api/design-platform") ], TemplateManageController); exports.default = TemplateManageController;