From 6b520924ea5ecb6d03fb5bfb7859c718b0161c75 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Wed, 7 May 2025 23:48:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/admin/admin.controller.spec.ts | 18 +++++++++++ .../src/admin/admin.controller.ts | 4 +++ tone-page-server/src/admin/admin.module.ts | 22 ++++++++++++++ .../admin/controller/admin-user.controller.ts | 18 +++++++++++ .../src/admin/dto/admin-user/list.dto.ts | 5 ++++ .../src/admin/dto/common/pagination.dto.ts | 16 ++++++++++ .../src/admin/service/admin-user.service.ts | 30 +++++++++++++++++++ tone-page-server/src/app.module.ts | 2 ++ 8 files changed, 115 insertions(+) create mode 100644 tone-page-server/src/admin/admin.controller.spec.ts create mode 100644 tone-page-server/src/admin/admin.controller.ts create mode 100644 tone-page-server/src/admin/admin.module.ts create mode 100644 tone-page-server/src/admin/controller/admin-user.controller.ts create mode 100644 tone-page-server/src/admin/dto/admin-user/list.dto.ts create mode 100644 tone-page-server/src/admin/dto/common/pagination.dto.ts create mode 100644 tone-page-server/src/admin/service/admin-user.service.ts diff --git a/tone-page-server/src/admin/admin.controller.spec.ts b/tone-page-server/src/admin/admin.controller.spec.ts new file mode 100644 index 0000000..0b8ca90 --- /dev/null +++ b/tone-page-server/src/admin/admin.controller.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AdminController } from './admin.controller'; + +describe('AdminController', () => { + let controller: AdminController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AdminController], + }).compile(); + + controller = module.get(AdminController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/tone-page-server/src/admin/admin.controller.ts b/tone-page-server/src/admin/admin.controller.ts new file mode 100644 index 0000000..7b5d784 --- /dev/null +++ b/tone-page-server/src/admin/admin.controller.ts @@ -0,0 +1,4 @@ +import { Controller } from '@nestjs/common'; + +@Controller('admin') +export class AdminController {} diff --git a/tone-page-server/src/admin/admin.module.ts b/tone-page-server/src/admin/admin.module.ts new file mode 100644 index 0000000..b25f99a --- /dev/null +++ b/tone-page-server/src/admin/admin.module.ts @@ -0,0 +1,22 @@ +import { Module } from '@nestjs/common'; +import { AdminController } from './admin.controller'; +import { AdminUserController } from './controller/admin-user.controller'; +import { AdminUserService } from './service/admin-user.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { User } from 'src/user/entities/user.entity'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ + User, + ]) + ], + controllers: [ + AdminController, + AdminUserController, + ], + providers: [ + AdminUserService, + ] +}) +export class AdminModule { } diff --git a/tone-page-server/src/admin/controller/admin-user.controller.ts b/tone-page-server/src/admin/controller/admin-user.controller.ts new file mode 100644 index 0000000..bea4368 --- /dev/null +++ b/tone-page-server/src/admin/controller/admin-user.controller.ts @@ -0,0 +1,18 @@ +import { Controller, Get, Query } from "@nestjs/common"; +import { AdminUserService } from "../service/admin-user.service"; +import { ListDto } from "../dto/admin-user/list.dto"; + +@Controller('admin/user') +export class AdminUserController { + + constructor( + private readonly adminUserService: AdminUserService, + ) { } + + @Get() + async list( + @Query() listDto: ListDto + ) { + return this.adminUserService.getUser(listDto.page, listDto.pageSize); + } +} \ No newline at end of file diff --git a/tone-page-server/src/admin/dto/admin-user/list.dto.ts b/tone-page-server/src/admin/dto/admin-user/list.dto.ts new file mode 100644 index 0000000..4ca6179 --- /dev/null +++ b/tone-page-server/src/admin/dto/admin-user/list.dto.ts @@ -0,0 +1,5 @@ +import { PaginationDto } from "../common/pagination.dto"; + +export class ListDto extends PaginationDto { + +} \ No newline at end of file diff --git a/tone-page-server/src/admin/dto/common/pagination.dto.ts b/tone-page-server/src/admin/dto/common/pagination.dto.ts new file mode 100644 index 0000000..be888cb --- /dev/null +++ b/tone-page-server/src/admin/dto/common/pagination.dto.ts @@ -0,0 +1,16 @@ +import { Type } from 'class-transformer'; +import { IsInt, IsOptional, Max, Min } from 'class-validator'; + +export class PaginationDto { + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + page?: number = 1; + + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + pageSize?: number = 20; +} \ No newline at end of file diff --git a/tone-page-server/src/admin/service/admin-user.service.ts b/tone-page-server/src/admin/service/admin-user.service.ts new file mode 100644 index 0000000..1e114df --- /dev/null +++ b/tone-page-server/src/admin/service/admin-user.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { User } from "src/user/entities/user.entity"; +import { Repository } from "typeorm"; + +@Injectable() +export class AdminUserService { + + constructor( + @InjectRepository(User) + private readonly userRepository: Repository, + ) { } + + async getUser(page = 1, pageSize = 20) { + const queryBuilder = this.userRepository.createQueryBuilder('user') + + queryBuilder.orderBy('user.createdAt', 'DESC'); + + queryBuilder.skip((page - 1) * pageSize); + queryBuilder.take(pageSize); + + const [items, total] = await queryBuilder.getManyAndCount(); + return { + items, + total, + page, + pageSize, + } + } +} \ No newline at end of file diff --git a/tone-page-server/src/app.module.ts b/tone-page-server/src/app.module.ts index a28b516..8b0e40e 100644 --- a/tone-page-server/src/app.module.ts +++ b/tone-page-server/src/app.module.ts @@ -11,6 +11,7 @@ import { PassportModule } from '@nestjs/passport'; import { ResourceModule } from './resource/resource.module'; import { BlogModule } from './blog/blog.module'; import { RoleModule } from './role/role.module'; +import { AdminModule } from './admin/admin.module'; @Module({ imports: [ @@ -34,6 +35,7 @@ import { RoleModule } from './role/role.module'; ResourceModule, BlogModule, RoleModule, + AdminModule, ], controllers: [AppController], providers: [AppService],