diff --git a/packages/toolkits/pro/template/server/nestJs/.env b/packages/toolkits/pro/template/server/nestJs/.env index f05f0dd9..162f3c24 100644 --- a/packages/toolkits/pro/template/server/nestJs/.env +++ b/packages/toolkits/pro/template/server/nestJs/.env @@ -13,3 +13,6 @@ REDIS_HOST = 'localhost' REDIS_PORT = 6379 EXPIRES_IN = '2h' + +PAGINATION_PAGE = 1 +PAGINATION_LIMIT = 10 diff --git a/packages/toolkits/pro/template/server/nestJs/package.json b/packages/toolkits/pro/template/server/nestJs/package.json index e79d5e6b..94c72c9c 100644 --- a/packages/toolkits/pro/template/server/nestJs/package.json +++ b/packages/toolkits/pro/template/server/nestJs/package.json @@ -33,6 +33,7 @@ "dotenv": "^16.4.5", "ioredis": "^5.4.1", "mysql2": "3.4.3", + "nestjs-typeorm-paginate": "^4.0.4", "redis": "^4.6.15", "reflect-metadata": "0.1.13", "rimraf": "5.0.1", diff --git a/packages/toolkits/pro/template/server/nestJs/src/auth/auth.service.ts b/packages/toolkits/pro/template/server/nestJs/src/auth/auth.service.ts index f9c7d87b..d59a3cad 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/auth/auth.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/auth/auth.service.ts @@ -28,7 +28,7 @@ export class AuthService { async login(dto: CreateAuthDto) { const { email, password } = dto; const userInfo = await this.user.findOne({ where: { email } }); - if (userInfo === null || userInfo.deleteAt !== null) { + if (userInfo === null || userInfo.deleteAt != 0) { throw new HttpException('该用户不存在', HttpStatus.NOT_FOUND); } if (encry(password, userInfo.salt) !== userInfo.password) { diff --git a/packages/toolkits/pro/template/server/nestJs/src/menu/menu.service.ts b/packages/toolkits/pro/template/server/nestJs/src/menu/menu.service.ts index 49e84d6b..8609f651 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/menu/menu.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/menu/menu.service.ts @@ -14,7 +14,9 @@ export interface ITreeNodeData { // 子节点 children?: ITreeNodeData[]; // 链接 - url?: string; + url: string; + //组件 + component: string; } interface MenuMap { @@ -27,6 +29,7 @@ const toNode = (menu: Menu): ITreeNodeData => { id: menu.id, children: [], url: menu.path, + component: menu.component, }; }; diff --git a/packages/toolkits/pro/template/server/nestJs/src/role/role.controller.ts b/packages/toolkits/pro/template/server/nestJs/src/role/role.controller.ts index ce9992b1..b65bd3e4 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/role/role.controller.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/role/role.controller.ts @@ -40,4 +40,10 @@ export class RoleController { deleteRole(@Body() dto: DeleteRoleDto) { return this.roleService.delete(dto); } + + @Permission('role::get') + @Get('/info/:id') + getRoleInfo(@Param('id') id: string) { + return this.roleService.findOne(id); + } } diff --git a/packages/toolkits/pro/template/server/nestJs/src/role/role.service.ts b/packages/toolkits/pro/template/server/nestJs/src/role/role.service.ts index d95cb37e..564c17b9 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/role/role.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/role/role.service.ts @@ -44,6 +44,19 @@ export class RoleService { findAll() { return this.role.find(); } + + async findOne(id: string) { + const roleInfo = await this.role.find({ + where: { + id: parseInt(id), + }, + }); + if (roleInfo.length===0) { + throw new HttpException('角色不存在', HttpStatus.NOT_FOUND); + } + return roleInfo; + } + async update(data: UpdateRoleDto) { const permission = await this.permission.find({ where: { diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/pagination-query.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/pagination-query.dto.ts new file mode 100644 index 00000000..5333b535 --- /dev/null +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/pagination-query.dto.ts @@ -0,0 +1,9 @@ +import { IsOptional } from 'class-validator'; + +export class PaginationQueryDto { + @IsOptional() + page?: number; + + @IsOptional() + limit?: number; +} diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts index 141968ac..6f325945 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts @@ -13,6 +13,7 @@ import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; import { Permission } from '../public/permission.decorator'; import { UpdateUserDto } from './dto/update-user.dto'; +import { PaginationQueryDto } from './dto/pagination-query.dto' @Controller('user') export class UserController { @@ -38,7 +39,9 @@ export class UserController { } @Get() @Permission('user::query') - async getAllUser() { - return this.userService.getAllUser(); + async getAllUser( + @Query() paginationQuery: PaginationQueryDto, + ) { + return this.userService.getAllUser(paginationQuery); } } diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index a9dc2759..5e2de286 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -1,11 +1,14 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; +import { PaginationQueryDto } from "./dto/pagination-query.dto"; import { InjectRepository } from '@nestjs/typeorm'; import { Role, User } from '@app/models'; import { In, Repository } from 'typeorm'; import * as crypto from 'crypto'; import { AuthService } from '../auth/auth.service'; +import { paginate, IPaginationOptions } from 'nestjs-typeorm-paginate'; +import * as process from "process"; @Injectable() export class UserService { @@ -48,9 +51,13 @@ export class UserService { } //获取所有用户信息 - async getAllUser() { - return this.userRep.find({ - where: { deleteAt: 0 }, + async getAllUser(paginationQuery: PaginationQueryDto): Promise { + const { page, limit } = paginationQuery; // 从DTO获取分页参数 + return await paginate(this.userRep, { + page: Number(page) || Number(process.env.PAGITION_PAGE), + limit: Number(limit) || Number(process.env.PAGITION_LIMIT), + },{ + where: {deleteAt: 0}, select: ['id', 'name', 'email', 'createTime', 'updateTime'], }); } @@ -107,7 +114,7 @@ export class UserService { async updateUserPwd(updateUserDto: UpdateUserDto) { const { email, newPassword, oldPassword } = updateUserDto; const user = this.userRep.findOne({ - where: { email, deleteAt: null }, + where: { email, deleteAt: 0 }, select: [ 'id', 'name',