import { CacheInterceptor, CacheKey, CacheTTL } from '@nestjs/cache-manager' import { Controller, Get, UseInterceptors, } from '@nestjs/common' import { ApiOkResponse, ApiOperation, ApiTags, } from '@nestjs/swagger' import { Perm, definePermission } from '~/modules/auth/decorators/permission.decorator' import { OverviewSpaceInfo } from './overview.dto' import { NetDiskOverviewService } from './overview.service' export const permissions = definePermission('netdisk:overview', { DESC: 'desc', } as const) @ApiTags('NetDiskOverview - 网盘概览模块') @Controller('overview') export class NetDiskOverviewController { constructor(private overviewService: NetDiskOverviewService) {} @Get('desc') @CacheKey('netdisk_overview_desc') @CacheTTL(3600) @UseInterceptors(CacheInterceptor) @ApiOperation({ summary: '获取网盘空间数据统计' }) @ApiOkResponse({ type: OverviewSpaceInfo }) @Perm(permissions.DESC) async space(): Promise { const date = this.overviewService.getZeroHourAnd1Day(new Date()) const hit = await this.overviewService.getHit(date) const flow = await this.overviewService.getFlow(date) const space = await this.overviewService.getSpace(date) const count = await this.overviewService.getCount(date) return { fileSize: count.datas[count.datas.length - 1], flowSize: flow.datas[flow.datas.length - 1], hitSize: hit.datas[hit.datas.length - 1], spaceSize: space.datas[space.datas.length - 1], flowTrend: flow, sizeTrend: space, } } }