import { Controller, Get, Post, Put, Delete, Body, Param, ParseIntPipe, UseGuards, } from '@nestjs/common'; import { DepartmentsService } from './departments.service'; import { CreateDepartmentDto, UpdateDepartmentDto, AssignUserDto, } from './dto/department.dto'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RequirePermission } from '../auth/decorators/permission.decorator'; @UseGuards(JwtAuthGuard) @Controller('departments') export class DepartmentsController { constructor(private readonly departmentsService: DepartmentsService) {} @Get() @RequirePermission('department:view') findAll() { return this.departmentsService.findAll(); } @Get('tree') @RequirePermission('department:view') findTree() { return this.departmentsService.findTree(); } /** 获取钉钉同步的部门树,供"从部门创建班级"使用 */ @Get('synced') @RequirePermission('department:view') findSyncedTree() { return this.departmentsService.findSyncedTree(); } @Get(':id') @RequirePermission('department:view') findOne(@Param('id', ParseIntPipe) id: number) { return this.departmentsService.findOne(id); } @Post() @RequirePermission('department:edit') create(@Body() dto: CreateDepartmentDto) { return this.departmentsService.create(dto); } @Put(':id') @RequirePermission('department:edit') update( @Param('id', ParseIntPipe) id: number, @Body() dto: UpdateDepartmentDto, ) { return this.departmentsService.update(id, dto); } @Delete(':id') @RequirePermission('department:delete') remove(@Param('id', ParseIntPipe) id: number) { return this.departmentsService.remove(id); } @Get(':id/users') @RequirePermission('department:view') getUsers(@Param('id', ParseIntPipe) id: number) { return this.departmentsService.getUsers(id); } @Post(':id/users') @RequirePermission('department:edit') assignUser( @Param('id', ParseIntPipe) id: number, @Body() dto: AssignUserDto, ) { return this.departmentsService.assignUser(id, dto); } @Delete(':id/users/:userId') @RequirePermission('department:delete') removeUser( @Param('id', ParseIntPipe) id: number, @Param('userId', ParseIntPipe) userId: number, ) { return this.departmentsService.removeUser(id, userId); } }