完成管理员获取用户列表
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 { ResourceModule } from './resource/resource.module';
|
||||||
import { BlogModule } from './blog/blog.module';
|
import { BlogModule } from './blog/blog.module';
|
||||||
import { RoleModule } from './role/role.module';
|
import { RoleModule } from './role/role.module';
|
||||||
|
import { AdminModule } from './admin/admin.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -34,6 +35,7 @@ import { RoleModule } from './role/role.module';
|
|||||||
ResourceModule,
|
ResourceModule,
|
||||||
BlogModule,
|
BlogModule,
|
||||||
RoleModule,
|
RoleModule,
|
||||||
|
AdminModule,
|
||||||
],
|
],
|
||||||
controllers: [AppController],
|
controllers: [AppController],
|
||||||
providers: [AppService],
|
providers: [AppService],
|
||||||
|
|||||||
Reference in New Issue
Block a user