UNPKG

create-chuntianxiaozhu

Version:

春天小猪模板工具

116 lines (107 loc) 2.76 kB
import { Controller, Get, Render, Req, Res } from '@nestjs/common'; import { CommonService } from './common/common.service'; import { SkipAuth } from './utils/decorator'; import { SkipThrottle } from '@nestjs/throttler'; import { Request, Response } from 'express'; import { isDev } from './utils/common'; const EjsMap = { 'www.chuntianxiaozhu.com': { assetsName: 'contentResource', templateName: 'index', }, 'design.chuntianxiaozhu.com': { assetsName: 'designResource', templateName: 'design', }, 'develop.chuntianxiaozhu.com': { assetsName: 'developResource', templateName: 'develop', }, 'waiter.chuntianxiaozhu.com': { assetsName: 'waiterResource', templateName: 'waiter', }, }; @Controller() export class AppController { constructor(private commonService: CommonService) {} @Get() @SkipAuth() @SkipThrottle() async home(@Req() req: Request, @Res() res: Response) { const ejsInfo = EjsMap[req.hostname] || { assetsName: 'contentResource', templateName: 'index', }; const asset = await this.commonService.findAssets(ejsInfo.assetsName); if (!asset) { return res.render(ejsInfo.templateName, { csrfToken: req.csrfToken && req.csrfToken(), }); } let content: any = {}; try { content = JSON.parse(asset.content); } catch {} if (!isDev()) { return res.render(ejsInfo.templateName, { ...content, csrfToken: req.csrfToken(), }); } return res.render(ejsInfo.templateName, { ...content }); } @Get('/miniprogram') @SkipAuth() @SkipThrottle() async miniProgram(@Req() req: Request) { return { csrfToken: req.csrfToken && req.csrfToken(), }; } @Get('/admin/*') @Render('admin') @SkipAuth() async admin(@Req() req: Request): Promise<Object> { const asset = await this.commonService.findAssets('adminResource'); if (!asset) { return { csrfToken: req.csrfToken && req.csrfToken(), }; } let content: any = {}; try { content = JSON.parse(asset.content); } catch {} if (!isDev()) { return { ...content, csrfToken: req.csrfToken(), }; } return { ...content }; } @Get('/pages/*') @Render('index') @SkipAuth() @SkipThrottle() async pages(@Req() req: Request): Promise<Object> { const asset = await this.commonService.findAssets('contentResource'); if (!asset) { return { csrfToken: req.csrfToken(), }; } let content: any = {}; try { content = JSON.parse(asset.content); } catch {} if (!isDev()) { return { ...content, csrfToken: req.csrfToken(), }; } return { ...content }; } }