| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import {
- Controller,
- Get,
- Post,
- Put,
- Delete,
- Body,
- Param,
- UseGuards,
- Request,
- } from '@nestjs/common';
- import { CombinedAuthGuard } from '../auth/combined-auth.guard';
- import { RolesGuard } from '../auth/roles.guard';
- import { Roles } from '../auth/roles.decorator';
- import { UserRole } from '../user/user-role.enum';
- import { KnowledgeGroupService, CreateGroupDto, UpdateGroupDto } from './knowledge-group.service';
- import { I18nService } from '../i18n/i18n.service';
- import { ApiTags, ApiBearerAuth, ApiOperation, ApiResponse } from '@nestjs/swagger';
- @ApiTags('Knowledge Groups')
- @Controller('knowledge-groups')
- @UseGuards(CombinedAuthGuard, RolesGuard)
- export class KnowledgeGroupController {
- constructor(
- private readonly groupService: KnowledgeGroupService,
- private readonly i18nService: I18nService,
- ) { }
- @Get()
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '获取知识分组列表', description: '返回当前租户的所有知识分组(树形结构)' })
- @ApiResponse({ status: 200, description: '返回分组列表' })
- async findAll(@Request() req) {
- // All users can see all groups for their tenant (returns tree structure)
- return await this.groupService.findAll(req.user.id, req.user.tenantId);
- }
- @Get(':id')
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '获取单个知识分组' })
- @ApiResponse({ status: 200, description: '返回分组详情' })
- async findOne(@Param('id') id: string, @Request() req) {
- return await this.groupService.findOne(id, req.user.id, req.user.tenantId);
- }
- @Post()
- @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '创建知识分组' })
- @ApiResponse({ status: 201, description: '创建成功' })
- async create(@Body() createGroupDto: CreateGroupDto, @Request() req) {
- return await this.groupService.create(req.user.id, req.user.tenantId, createGroupDto);
- }
- @Put(':id')
- @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '更新知识分组' })
- @ApiResponse({ status: 200, description: '更新成功' })
- async update(
- @Param('id') id: string,
- @Body() updateGroupDto: UpdateGroupDto,
- @Request() req,
- ) {
- return await this.groupService.update(id, req.user.id, req.user.tenantId, updateGroupDto);
- }
- @Delete(':id')
- @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '删除知识分组' })
- @ApiResponse({ status: 200, description: '删除成功' })
- async remove(@Param('id') id: string, @Request() req) {
- await this.groupService.remove(id, req.user.id, req.user.tenantId);
- return { message: this.i18nService.getMessage('groupDeleted') };
- }
- @Get(':id/files')
- @ApiBearerAuth('JWT')
- @ApiOperation({ summary: '获取分组内的文件' })
- @ApiResponse({ status: 200, description: '返回文件列表' })
- async getGroupFiles(@Param('id') id: string, @Request() req) {
- const files = await this.groupService.getGroupFiles(id, req.user.id, req.user.tenantId);
- return { files };
- }
- }
|