kt-template-online-api/src/modules/blog/contract/blog-term.controller.ts

131 lines
4.0 KiB
TypeScript

import {
Body,
Controller,
Get,
HttpCode,
HttpStatus,
Post,
Query,
Res,
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import type { BlogTermKind } from '../infrastructure/persistence/blog-term.entity';
import {
BlogTermBodyDto,
BlogTermListQueryDto,
BlogTermUpdateBodyDto,
} from './blog-term.dto';
import { BlogTermService } from '../application/blog-term.service';
@ApiTags('Blog - 分类标签')
@Controller('blog')
@UseGuards(JwtAuthGuard)
export class BlogTermController {
constructor(private readonly blogTermService: BlogTermService) {}
@Get('category/list')
@ApiOperation({ summary: '获取本地博客分类分页列表' })
async categoryList(@Res() res, @Query() query: BlogTermListQueryDto) {
const list = await this.blogTermService.page('category', query);
return res.send(vbenSuccess(list));
}
@Get('category/detail')
@ApiOperation({ summary: '获取本地博客分类详情' })
@ApiQuery({ name: 'id', type: String })
async categoryDetail(@Res() res, @Query('id') id: string) {
const detail = await this.blogTermService.detail('category', id);
return res.send(vbenSuccess(detail));
}
@Post('category/save')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '新增本地博客分类' })
async categorySave(@Res() res, @Body() body: BlogTermBodyDto) {
const result = await this.blogTermService.save('category', body);
return res.send(vbenSuccess(result));
}
@Post('category/update')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '编辑本地博客分类' })
async categoryUpdate(@Res() res, @Body() body: BlogTermUpdateBodyDto) {
const result = await this.blogTermService.update('category', body);
return res.send(vbenSuccess(result));
}
@Post('category/remove')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '删除本地博客分类' })
@ApiQuery({ name: 'id', type: String })
async categoryRemove(@Res() res, @Query('id') id: string) {
const result = await this.blogTermService.remove('category', id);
return res.send(vbenSuccess(result));
}
@Get('tag/list')
@ApiOperation({ summary: '获取本地博客标签分页列表' })
async tagList(@Res() res, @Query() query: BlogTermListQueryDto) {
const list = await this.blogTermService.page('tag', query);
return res.send(vbenSuccess(list));
}
@Get('tag/detail')
@ApiOperation({ summary: '获取本地博客标签详情' })
@ApiQuery({ name: 'id', type: String })
async tagDetail(@Res() res, @Query('id') id: string) {
const detail = await this.blogTermService.detail('tag', id);
return res.send(vbenSuccess(detail));
}
@Post('tag/save')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '新增本地博客标签' })
async tagSave(@Res() res, @Body() body: BlogTermBodyDto) {
const result = await this.blogTermService.save('tag', body);
return res.send(vbenSuccess(result));
}
@Post('tag/update')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '编辑本地博客标签' })
async tagUpdate(@Res() res, @Body() body: BlogTermUpdateBodyDto) {
const result = await this.blogTermService.update('tag', body);
return res.send(vbenSuccess(result));
}
@Post('tag/remove')
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: '删除本地博客标签' })
@ApiQuery({ name: 'id', type: String })
async tagRemove(@Res() res, @Query('id') id: string) {
const result = await this.blogTermService.remove('tag', id);
return res.send(vbenSuccess(result));
}
@Get('term/options')
@ApiOperation({ summary: '获取本地博客分类或标签选项' })
async options(
@Res() res,
@Query('kind') kind: BlogTermKind,
@Query() query: BlogTermListQueryDto,
) {
const result = await this.blogTermService.options(kind, query);
return res.send(vbenSuccess(result));
}
}