123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- const path = require('path')
- const fs = require('fs')
- module.exports = app => ({
- /**
- * 我的页面列表
- * @returns {Promise<void>}
- */
- async myPages() {
- const { ctx, $service, $helper } = app;
- let { pageMode, type } = ctx.request.query;
- const pages = await $service.page.getMyPages(pageMode, type);
- const myPageCount = await $service.page.getMyPagesCount(pageMode);
- const myCooperationPageCount = await $service.page.getCooperationPagesCount(pageMode);
- $helper.returnBody(true, {
- pages: pages.reverse(),
- myPageCount: myPageCount,
- myCooperationPageCount: myCooperationPageCount
- })
- },
- /**
- * 获取我的模板列表
- * @returns {Promise<void>}
- */
- async getMyTemplates() {
- const { ctx, $service, $helper } = app;
- let { pageMode } = ctx.request.query;
- const pages = await $service.page.getMyTemplates(pageMode);
- $helper.returnBody(true, pages)
- },
- /**
- * 创建页面
- * @returns {Promise<void>}
- */
- async create(data) {
- const { ctx, $service, $helper } = app;
- let newPageData = ctx.request.body;
- const page = await $service.page.create(newPageData);
- $helper.returnBody(true, page)
- },
- /**
- * 修改更新页面
- * @returns {Promise<void>}
- */
- async updatePage() {
- const { ctx, $service, $helper } = app;
- let { pageData } = ctx.request.body;
- await $service.page.update(pageData);
- $helper.returnBody(true)
- },
- /**
- * 删除页面
- */
- async deletePage() {
- const { ctx, $service, $helper } = app;
- let { id } = ctx.request.body;
- await $service.page.deletePage(id);
- $helper.returnBody(true)
- },
- /**
- * 复制页面
- * @returns {Promise<void>}
- isPublish: false,
- isTemplate: false,
- members: [],
- author: author,
- */
- async copyPage() {
- const { ctx, $service, $helper } = app;
- let { id } = ctx.request.body;
- let page = await $service.page.getPageDetail(id);
- page._id = undefined;
- page.isPublish = false;
- page.isTemplate = false;
- page.members = [];
- let newPage = await $service.page.create(page);
- $helper.returnBody(true, { _id: newPage._id });
- },
- /**
- * 发布页面
- * @returns {Promise<void>}
- */
- async publish() {
- const { ctx, $service, $helper } = app;
- let { id } = ctx.request.body;
- await $service.page.setPublish(id);
- $helper.returnBody(true);
- },
- /**
- * 设为我的模板
- * @returns {Promise<void>}
- */
- async setTemplate() {
- const { ctx, $service, $helper } = app;
- let userData = ctx.userData
- let { id } = ctx.request.body;
- let page = await $service.page.getPageDetail(id);
- page = page.toObject();
- page._id = undefined;
- page.isPublish = false;
- page.isTemplate = true;
- page.members = [];
- page.author = userData._id;
- let newPage = await $service.page.create({...page });
- $helper.returnBody(true, { _id: newPage._id });
- },
- /**
- * 获取模板市场所有模板
- * @returns {Promise<void>}
- */
- async getPublishTemplates() {
- const { ctx, $service, $helper } = app;
- let { pageMode } = ctx.request.query;
- const pages = await $service.page.getPublishTemplates(pageMode);
- $helper.returnBody(true, pages)
- },
- /**
- * 获取页面详情
- * @returns {Promise<void>}
- */
- async pageDetail(ctx) {
- let { pageId } = ctx.request.query;
- const { $service, $helper } = app;
- if (!pageId) {
- // 如果 pageId 不存在,返回 404 错误
- ctx.status = 404;
- ctx.body = {
- status: false,
- body: {},
- msg: 'Page not found',
- code: 404
- };
- return;
- }
- try {
- const pageData = await $service.page.getPageDetail(pageId);
- if (!pageData) {
- // 如果没有找到页面数据,返回 404 错误
- ctx.status = 404;
- ctx.body = {
- status: false,
- body: {},
- msg: 'Page not found',
- code: 404
- };
- return;
- }
- $helper.returnContentBody(ctx, { body: pageData })
- } catch (error) {
- // 处理异常情况
- ctx.status = 500;
- ctx.body = {
- status: false,
- body: {},
- msg: 'Internal Server Error',
- code: 500
- };
- }
- },
- /**
- * 渲染页面
- * @returns {Promise<void>}
- */
- async view() {
- const { ctx, $service } = app;
- let pageId = ctx.params._id;
- const pageData = await $service.page.getPageDetail(pageId);
- let pageMode = {
- 'h5': 'h5-swiper',
- 'longPage': 'h5-long',
- 'relativePage': 'h5-relative',
- 'pc': 'pc'
- };
- ctx.status = 200;
- await ctx.render(pageMode[pageData.pageMode], { pageData: pageData })
- },
- /**
- * 下载页面数据为JSON
- */
- async jsonDownload() {
- const { ctx, $service, $helper } = app;
- let { pageId } = ctx.request.query;
- const pageData = await $service.page.getPageDetail(pageId);
- let userID = pageData.author
- let currentPathDir = `/resource/Output/${userID}`
- // 判断文件夹是否存在不存在则新建一个
- await $helper.dirExists(path.join(__dirname, '../public' + currentPathDir));
- await fs.writeFile(path.join(__dirname, '../public' + currentPathDir + `/${pageId}.json`), JSON.stringify(pageData), error => {
- if (error) return console.log("写入文件失败:" + error.message);
- console.log("写入成功");
- })
- $helper.returnBody(true, { outputDir: currentPathDir + `/${pageId}.json` })
- }
- })
|