完成管理员获取用户列表
This commit is contained in:
18
tone-page-server/src/admin/admin.controller.spec.ts
Normal file
18
tone-page-server/src/admin/admin.controller.spec.ts
Normal file
@@ -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>(AdminController);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(controller).toBeDefined();
|
||||
});
|
||||
});
|
||||
4
tone-page-server/src/admin/admin.controller.ts
Normal file
4
tone-page-server/src/admin/admin.controller.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import { Controller } from '@nestjs/common';
|
||||
|
||||
@Controller('admin')
|
||||
export class AdminController {}
|
||||
22
tone-page-server/src/admin/admin.module.ts
Normal file
22
tone-page-server/src/admin/admin.module.ts
Normal file
@@ -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 { }
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
5
tone-page-server/src/admin/dto/admin-user/list.dto.ts
Normal file
5
tone-page-server/src/admin/dto/admin-user/list.dto.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { PaginationDto } from "../common/pagination.dto";
|
||||
|
||||
export class ListDto extends PaginationDto {
|
||||
|
||||
}
|
||||
16
tone-page-server/src/admin/dto/common/pagination.dto.ts
Normal file
16
tone-page-server/src/admin/dto/common/pagination.dto.ts
Normal file
@@ -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;
|
||||
}
|
||||
30
tone-page-server/src/admin/service/admin-user.service.ts
Normal file
30
tone-page-server/src/admin/service/admin-user.service.ts
Normal file
@@ -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<User>,
|
||||
) { }
|
||||
|
||||
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,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user