feat: 优化部分接口

master
绝弹 2023-08-01 21:07:59 +08:00
parent 7e7b6152f7
commit 8a2a6930ce
8 changed files with 6285 additions and 24 deletions

Binary file not shown.

6255
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ export class PaginationDto {
@IsNumber() @IsNumber()
@Min(1) @Min(1)
@Transform(({ value }) => Number(value)) @Transform(({ value }) => Number(value))
page: number; page?: number;
/** /**
* *
@ -19,5 +19,5 @@ export class PaginationDto {
@IsNumber() @IsNumber()
@Min(1) @Min(1)
@Transform(({ value }) => Number(value)) @Transform(({ value }) => Number(value))
size: number; size?: number;
} }

View File

@ -1,13 +1,22 @@
import { IsOptional, IsString } from 'class-validator'; import { IsOptional, IsString } from 'class-validator';
export class CreatePermissionDto { export class CreatePermissionDto {
/**
*
* @example
*/
@IsString() @IsString()
name: string; name: string;
/**
*
* @example permission:permission
*/
@IsString() @IsString()
slug: string; slug: string;
/**
*
*/
@IsOptional() @IsOptional()
@IsString() @IsString()
description: string; description?: string;
} }

View File

@ -1,9 +1,9 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { CreatePermissionDto } from './dto/create-permission.dto'; import { CreatePermissionDto } from './dto/create-permission.dto';
import { UpdatePermissionDto } from './dto/update-permission.dto'; import { UpdatePermissionDto } from './dto/update-permission.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { Permission } from './entities/permission.entity'; import { Permission } from './entities/permission.entity';
import { Repository } from 'typeorm';
@Injectable() @Injectable()
export class PermissionService { export class PermissionService {
@ -23,8 +23,8 @@ export class PermissionService {
return `This action returns a #${id} permission`; return `This action returns a #${id} permission`;
} }
update(id: number, updatePermissionDto: UpdatePermissionDto) { async update(id: number, updatePermissionDto: UpdatePermissionDto) {
return `This action updates a #${id} permission`; await this.permissionRepository.update(id, updatePermissionDto);
} }
remove(id: number) { remove(id: number) {

View File

@ -1,8 +1,8 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { CreateRoleDto } from './dto/create-role.dto';
import { UpdateRoleDto } from './dto/update-role.dto';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { CreateRoleDto } from './dto/create-role.dto';
import { UpdateRoleDto } from './dto/update-role.dto';
import { Role } from './entities/role.entity'; import { Role } from './entities/role.entity';
@Injectable() @Injectable()
@ -19,17 +19,18 @@ export class RoleService {
} }
findAll() { findAll() {
return this.roleRepository.findAndCount({ return this.roleRepository.findAndCount({ relations: ['permissions'] });
relations: ['permissions'],
});
} }
findOne(id: number) { findOne(id: number) {
return `This action returns a #${id} role`; return `This action returns a #${id} role`;
} }
update(id: number, updateRoleDto: UpdateRoleDto) { async update(id: number, updateRoleDto: UpdateRoleDto) {
return `This action updates a #${id} role`; if (updateRoleDto.permissions) {
delete updateRoleDto.permissions;
}
await this.roleRepository.update(id, updateRoleDto);
} }
remove(id: number) { remove(id: number) {

View File

@ -1,9 +1,9 @@
import { PaginationDto } from '@/features/pagination';
import { IntersectionType } from '@nestjs/swagger'; import { IntersectionType } from '@nestjs/swagger';
import { IsOptional, IsString } from 'class-validator'; import { IsOptional, IsString } from 'class-validator';
import { PaginationDto } from '@/features/pagination';
export class FindUserDto extends IntersectionType(PaginationDto) { export class FindUserDto extends IntersectionType(PaginationDto) {
@IsOptional() @IsOptional()
@IsString() @IsString()
nickname: string; nickname?: string;
} }

View File

@ -1,13 +1,11 @@
import { BaseController } from '@/features/base';
import { Respond } from '@/features/response';
import { Body, Controller, Delete, Get, Param, Patch, Post, Query, Version } from '@nestjs/common'; import { Body, Controller, Delete, Get, Param, Patch, Post, Query, Version } from '@nestjs/common';
import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Respond } from '@/features/response';
import { BaseController } from '@/features/base';
import { CreateUserDto, UpdateUserDto } from './dto'; import { CreateUserDto, UpdateUserDto } from './dto';
import { FindUserDto } from './dto/find-user.dto'; import { FindUserDto } from './dto/find-user.dto';
import { User } from './entities'; import { User } from './entities';
import { UserService } from './user.service'; import { UserService } from './user.service';
import { Permission, PermissionEnum } from '@/features/permission/permission.decorator';
import { Public } from '@/modules/auth/jwt/jwt-decorator';
@ApiTags('user') @ApiTags('user')
@Controller('users') @Controller('users')
@ -23,9 +21,7 @@ export class UserController extends BaseController {
} }
@Get() @Get()
@Public(false)
@Respond(Respond.PAGINATION) @Respond(Respond.PAGINATION)
@Permission(PermissionEnum.READ)
@ApiOkResponse({ isArray: true, type: User }) @ApiOkResponse({ isArray: true, type: User })
@ApiOperation({ summary: '批量查询', operationId: 'getUsers' }) @ApiOperation({ summary: '批量查询', operationId: 'getUsers' })
async findMany(@Query() query: FindUserDto) { async findMany(@Query() query: FindUserDto) {