import { Inject, Controller, Get, Post, Put, Del, Body, Param, Query } from '@midwayjs/core'; import { TemplateService } from '../service/template.service'; import { successResponse, errorResponse } from '../utils/response.util'; import { CreateTemplateDTO, UpdateTemplateDTO } from '../dto/template.dto'; import { ApiOkResponse, ApiTags } from '@midwayjs/swagger'; import { Template } from '../entity/template.entity'; import { BooleanRes } from '../dto/reponse.dto'; /** * @controller TemplateController 模板管理 */ @ApiTags('Template') @Controller('/template') export class TemplateController { @Inject() templateService: TemplateService; /** * @summary 获取模板列表 * @description 获取所有可用模板的列表 */ @ApiOkResponse({ type: [Template], description: '成功获取模板列表' }) @Get('/list') async getTemplateList(@Query() params: any) { // 调用服务层获取列表 return this.templateService.getTemplateList(params); } /** * @summary 根据名称获取模板 * @description 通过模板的唯一名称查找特定模板 * @param name 模板名称 */ @ApiOkResponse({ type: Template, description: '成功获取模板' }) @Get('/:name') async getTemplateByName(@Param('name') name: string) { try { // 调用服务层获取单个模板 const data = await this.templateService.getTemplateByName(name); // 返回成功响应 return successResponse(data); } catch (error) { // 返回错误响应 return errorResponse(error.message); } } /** * @summary 创建新模板 * @description 创建一个新的模板,用于后续的字符串生成 * @param templateData 模板数据 */ @ApiOkResponse({ type: Template, description: '成功创建模板' }) @Post('/') async createTemplate(@Body() templateData: CreateTemplateDTO) { try { // 调用服务层创建模板 const data = await this.templateService.createTemplate(templateData); // 返回成功响应 return successResponse(data); } catch (error) { // 返回错误响应 return errorResponse(error.message); } } /** * @summary 更新现有模板 * @description 根据模板 ID 更新一个现有模板的内容 * @param id 模板 ID * @param templateData 模板数据 */ @ApiOkResponse({ type: Template, description: '成功更新模板' }) @Put('/:id') async updateTemplate( @Param('id') id: number, @Body() templateData: UpdateTemplateDTO ) { try { // 调用服务层更新模板 const data = await this.templateService.updateTemplate(id, templateData); // 返回成功响应 return successResponse(data); } catch (error) { // 返回错误响应 return errorResponse(error.message); } } /** * @summary 删除模板 * @description 根据模板 ID 删除一个模板 * @param id 模板 ID */ @ApiOkResponse({ type: BooleanRes, description: '成功删除模板' }) @Del('/:id') async deleteTemplate(@Param('id') id: number) { try { // 调用服务层删除模板 const data = await this.templateService.deleteTemplate(id); // 返回成功响应 return successResponse(data); } catch (error) { // 返回错误响应 return errorResponse(error.message); } } /** * @summary 渲染模板 * @description 根据模板名称和输入的数据渲染最终字符串 * @param name 模板名称 * @param data 渲染数据 */ @ApiOkResponse({ type: String, description: '成功渲染模板' }) @Post('/render/:name') async renderTemplate( @Param('name') name: string, @Body() data: Record ) { try { // 调用服务层渲染模板 const renderedString = await this.templateService.render(name, data); // 返回成功响应 return successResponse(renderedString); } catch (error) { // 返回错误响应 return errorResponse(error.message); } } }