feat: M0-09 admin files AAPI
Some checks failed
Deploy API Server / build-and-deploy (push) Has been cancelled
Some checks failed
Deploy API Server / build-and-deploy (push) Has been cancelled
This commit is contained in:
parent
d3ec1d52d6
commit
32be0d8831
40
src/modules/files/admin-files.controller.ts
Normal file
40
src/modules/files/admin-files.controller.ts
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import { Controller, Get, Delete, Param, Query, UseGuards } from '@nestjs/common';
|
||||||
|
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
||||||
|
import { PrismaService } from '../../infrastructure/database/prisma.service';
|
||||||
|
import { AdminAuthGuard } from '../../common/guards/admin-auth.guard';
|
||||||
|
import { AdminRolesGuard } from '../../common/guards/admin-roles.guard';
|
||||||
|
import { AdminRoles } from '../../common/decorators/admin-roles.decorator';
|
||||||
|
import type { AdminRole } from '../../common/types/admin-role.enum';
|
||||||
|
|
||||||
|
@ApiTags('admin-files')
|
||||||
|
@Controller('admin-api/files')
|
||||||
|
@UseGuards(AdminAuthGuard, AdminRolesGuard)
|
||||||
|
@ApiBearerAuth()
|
||||||
|
export class AdminFilesController {
|
||||||
|
constructor(private readonly prisma: PrismaService) {}
|
||||||
|
|
||||||
|
@Get()
|
||||||
|
@AdminRoles('SUPER_ADMIN' as AdminRole)
|
||||||
|
@ApiOperation({ summary: '文件列表(管理员)' })
|
||||||
|
async list(@Query('page') page = '1', @Query('limit') limit = '20') {
|
||||||
|
const p = parseInt(page), l = parseInt(limit);
|
||||||
|
const [items, total] = await Promise.all([
|
||||||
|
this.prisma.uploadedFile.findMany({
|
||||||
|
where: { deletedAt: null },
|
||||||
|
orderBy: { createdAt: 'desc' },
|
||||||
|
skip: (p - 1) * l, take: l,
|
||||||
|
include: { user: { select: { nickname: true, email: true } } },
|
||||||
|
}),
|
||||||
|
this.prisma.uploadedFile.count({ where: { deletedAt: null } }),
|
||||||
|
]);
|
||||||
|
return { items, total, page: p, limit: l, totalPages: Math.ceil(total / l) };
|
||||||
|
}
|
||||||
|
|
||||||
|
@Delete(':id')
|
||||||
|
@AdminRoles('SUPER_ADMIN' as AdminRole)
|
||||||
|
@ApiOperation({ summary: '软删除文件' })
|
||||||
|
async remove(@Param('id') id: string) {
|
||||||
|
await this.prisma.uploadedFile.update({ where: { id }, data: { deletedAt: new Date() } });
|
||||||
|
return { success: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,10 +1,11 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { FilesController } from './files.controller';
|
import { FilesController } from './files.controller';
|
||||||
|
import { AdminFilesController } from './admin-files.controller';
|
||||||
import { FilesService } from './files.service';
|
import { FilesService } from './files.service';
|
||||||
import { FilesRepository } from './files.repository';
|
import { FilesRepository } from './files.repository';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
controllers: [FilesController],
|
controllers: [FilesController, AdminFilesController],
|
||||||
providers: [FilesService, FilesRepository],
|
providers: [FilesService, FilesRepository],
|
||||||
exports: [FilesService],
|
exports: [FilesService],
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user