From 2877bf29fcc7c51d6ca4ca6d1a4899b166503661 Mon Sep 17 00:00:00 2001 From: luoer <952222@163.com> Date: Fri, 11 Aug 2023 17:35:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/database/db.sqlite | Bin 147456 -> 147456 bytes package.json | 1 - src/common/base/base.service.ts | 19 +++++++++++++++++++ src/common/response/pagination.dto.ts | 10 +++++++++- src/modules/post/post.controller.ts | 20 ++++---------------- src/modules/role/role.controller.ts | 6 +++--- src/modules/upload/upload.controller.ts | 5 ++--- src/modules/user/user.controller.ts | 6 +++--- src/modules/user/user.service.ts | 4 ++-- 9 files changed, 42 insertions(+), 29 deletions(-) diff --git a/content/database/db.sqlite b/content/database/db.sqlite index 9b8165788bf90a1e002e9c4d6361ecaa20b61cca..b9145fb854337b753f95614b8689f29d8f8cbebf 100644 GIT binary patch delta 1021 zcmZva?MqWp9LLW&cka>cs7bKY)YOU|@ZR0K+>T;KK_n6tK`8~TrZmWAP8jw8)^e5- zDvNH~d?*QD*o1Y(Wf>I_Bt+oLAnb+i$v?ms3enki7aPdEaN&E;=llKM`}_6uXnJ}y zLq*U!Tzni_gI8Xa76yS5PXoMx*YOgb#tZlt_DT79_pr}bU1H3^t3a*kXzetpm~u#; z?GBgA;k=2YrRv%|Lymq67(QY<-f6Juw3{ZWlEEi}G~(LQQm3^bZvz8kKJ5^6#nSR(M5CbA@rxHcKhQKXjvzk5#tI6?#~ z5iFU2EJ@$pn~ZKZlmSrX`+27H2f8Vho!VSfQJX^9M!c_rNgvwVL|87bjeQ#psMtECd3h5pp~|f);`Tfo-Rb5^+jhU&p2IOOGcxoNiGh z{wPP~si~O+!tqVE&d%<#^VjL(xZ)$;@IW6Y<$@NG^o&enhVli$Ldk#|DEBp7B9IoydXKp zhhc%Itx!h5K4b6YlSbhCGFqG4 zWv*agW@T((Wn{itW6eEgjxGl7E9~2uyMUT&m^W|R?#02?p~(W(Gr4iI()0`5jNF?K zZvM)==>VGpTR8*wV)k;N>TGtPLJ_FK>3QsoV3l0k*RnH)bFeY;uVvt03skn4zkRJd z6v^J6DwF^I=GvUo3Y2}N#w5+j$&tjsXU@~iwRSt70aHKAW(9$x z%+r%Bm~=qCHMKG}u`;xrE^WzVIsKvq(?2E#hUphAneMPO2aE7e-)P08wfXL>m5iK* e!Z16kY=Cy`>f+kGXHG36vzrkAc56GPql^IHnS_!6 diff --git a/package.json b/package.json index cceb3a8..80562da 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "rxjs": "^7.2.0" }, "devDependencies": { - "@compodoc/compodoc": "^1.1.21", "@nestjs/cache-manager": "^2.1.0", "@nestjs/cli": "^9.0.0", "@nestjs/config": "^2.3.1", diff --git a/src/common/base/base.service.ts b/src/common/base/base.service.ts index 228b742..e6d8aed 100644 --- a/src/common/base/base.service.ts +++ b/src/common/base/base.service.ts @@ -23,4 +23,23 @@ export class BaseService { take: size == 0 ? this.config.defaultPageSize : size, }; } + + paginizate(paging: { page?: number; size?: number; sort?: string }, options: { full?: boolean } = {}) { + const page = paging.page || this.config.defaultPage; + const size = paging.size || this.config.defaultPageSize; + const sort = paging.sort || 'id:desc'; + if (size == 0 && options.full) { + return {}; + } + return { + skip: (page - 1) * size, + take: size == 0 ? this.config.defaultPageSize : size, + order: sort.split(',').map((item) => { + const [field, order] = item.split(':'); + return { + [field]: order, + }; + }), + }; + } } diff --git a/src/common/response/pagination.dto.ts b/src/common/response/pagination.dto.ts index 0dd17b8..2e7a5be 100644 --- a/src/common/response/pagination.dto.ts +++ b/src/common/response/pagination.dto.ts @@ -1,5 +1,5 @@ import { Transform } from 'class-transformer'; -import { IsNumber, IsOptional, Min } from 'class-validator'; +import { IsNumber, IsOptional, IsString, Matches, Min } from 'class-validator'; /** * 分页 DTO @@ -12,6 +12,14 @@ import { IsNumber, IsOptional, Min } from 'class-validator'; * ``` */ export class PaginationDto { + /** + * 排序规则 + * @example 'id:desc' + */ + @IsOptional() + @Matches(/^(\w+:\w+,)*\w+:\w+$/) + sort?: string = 'id:desc'; + /** * 页码 * @example 1 diff --git a/src/modules/post/post.controller.ts b/src/modules/post/post.controller.ts index 8192a84..e703c9e 100644 --- a/src/modules/post/post.controller.ts +++ b/src/modules/post/post.controller.ts @@ -1,16 +1,4 @@ -import { - Body, - Controller, - Delete, - Get, - NotFoundException, - Param, - ParseIntPipe, - Patch, - Post, - Query, - Res, -} from '@nestjs/common'; +import { Body, Controller, Delete, Get, NotFoundException, Param, Patch, Post, Query, Res } from '@nestjs/common'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { CreatePostDto } from './dto/create-post.dto'; import { UpdatePostDto } from './dto/update-post.dto'; @@ -58,19 +46,19 @@ export class PostController extends BaseController { @Get(':id') @ApiOperation({ description: '查询文章', operationId: 'getPost' }) - findOne(@Param('id', ParseIntPipe) id: number) { + findOne(@Param('id') id: number) { return this.postService.findOne(id); } @Patch(':id') @ApiOperation({ description: '更新文章', operationId: 'updatePost' }) - update(@Param('id', ParseIntPipe) id: number, @Body() updatePostDto: UpdatePostDto) { + update(@Param('id') id: number, @Body() updatePostDto: UpdatePostDto) { return this.postService.update(id, updatePostDto); } @Delete(':id') @ApiOperation({ description: '删除文章', operationId: 'delPost' }) - remove(@Param('id', ParseIntPipe) id: number) { + remove(@Param('id') id: number) { return this.postService.remove(+id); } } diff --git a/src/modules/role/role.controller.ts b/src/modules/role/role.controller.ts index 91f0821..2983900 100644 --- a/src/modules/role/role.controller.ts +++ b/src/modules/role/role.controller.ts @@ -25,19 +25,19 @@ export class RoleController { @Get(':id') @ApiOperation({ description: '查询角色', operationId: 'getRole' }) - findOne(@Param('id') id: string) { + findOne(@Param('id') id: number) { return this.roleService.findOne(+id); } @Patch(':id') @ApiOperation({ description: '更新角色', operationId: 'updateRole' }) - update(@Param('id') id: string, @Body() updateRoleDto: UpdateRoleDto) { + update(@Param('id') id: number, @Body() updateRoleDto: UpdateRoleDto) { return this.roleService.update(+id, updateRoleDto); } @Delete(':id') @ApiOperation({ description: '删除角色', operationId: 'delRole' }) - remove(@Param('id') id: string) { + remove(@Param('id') id: number) { return this.roleService.remove(+id); } } diff --git a/src/modules/upload/upload.controller.ts b/src/modules/upload/upload.controller.ts index 977f4c5..95cc64b 100644 --- a/src/modules/upload/upload.controller.ts +++ b/src/modules/upload/upload.controller.ts @@ -17,7 +17,6 @@ export class UploadController { @ApiBody({ description: '要上传的文件', type: CreateUploadDto }) @ApiOperation({ description: '上传文件', operationId: 'addFile' }) create(@UploadedFile() file: Express.Multer.File, @Req() req: Request, @Ip() ip: string) { - console.log(`ip: ${ip}, req: ${JSON.stringify(req.user)}`); return this.uploadService.create(file); } @@ -30,7 +29,7 @@ export class UploadController { @Get(':id') @ApiOperation({ description: '查询', operationId: 'getFile' }) - findOne(@Param('id') id: string) { + findOne(@Param('id') id: number) { return this.uploadService.findOne(+id); } @@ -42,7 +41,7 @@ export class UploadController { @Delete(':id') @ApiOperation({ description: '删除', operationId: 'delFile' }) - remove(@Param('id') id: string) { + remove(@Param('id') id: number) { return this.uploadService.remove(+id); } } diff --git a/src/modules/user/user.controller.ts b/src/modules/user/user.controller.ts index 6016359..3a989f6 100644 --- a/src/modules/user/user.controller.ts +++ b/src/modules/user/user.controller.ts @@ -1,6 +1,6 @@ import { BaseController } from '@/common/base'; import { Respond, RespondType } from '@/common/response'; -import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, Query } from '@nestjs/common'; +import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from '@nestjs/common'; import { ApiOkResponse, ApiTags } from '@nestjs/swagger'; import { CreateUserDto } from './dto/create-user.dto'; import { FindUserDto } from './dto/find-user.dto'; @@ -37,7 +37,7 @@ export class UserController extends BaseController { * 根据ID查询用户 */ @Get(':id') - getUser(@Param('id', ParseIntPipe) id: number): Promise { + getUser(@Param('id') id: number): Promise { return this.userService.findOne(id); } @@ -53,7 +53,7 @@ export class UserController extends BaseController { * 根据ID删除用户 */ @Delete(':id') - delUser(@Param('id', ParseIntPipe) id: number) { + delUser(@Param('id') id: number) { return this.userService.remove(+id); } } diff --git a/src/modules/user/user.service.ts b/src/modules/user/user.service.ts index 9c37696..aea8299 100644 --- a/src/modules/user/user.service.ts +++ b/src/modules/user/user.service.ts @@ -29,9 +29,9 @@ export class UserService extends BaseService { * 查找所有用户 */ async findMany(findUserdto: FindUserDto) { - const { nickname: _nickname, page, size } = findUserdto; + const { nickname: _nickname, } = findUserdto; const nickname = _nickname && Like(`%${_nickname}%`); - const { skip, take } = this.formatPagination(page, size, true); + const { skip, take } = this.paginizate(findUserdto, { full: true }); return this.userRepository.findAndCount({ skip, take, where: { nickname } }); }