|
|
@@ -7,12 +7,15 @@ import {
|
|
|
Param,
|
|
|
Post,
|
|
|
Put,
|
|
|
+ Query,
|
|
|
Req,
|
|
|
+ UseGuards,
|
|
|
} from '@nestjs/common';
|
|
|
import {
|
|
|
ApiBody,
|
|
|
ApiConsumes,
|
|
|
ApiOperation,
|
|
|
+ ApiQuery,
|
|
|
ApiResponse,
|
|
|
ApiTags,
|
|
|
} from '@nestjs/swagger';
|
|
|
@@ -20,12 +23,27 @@ import type { FastifyRequest } from 'fastify';
|
|
|
import { CreateAdsDto, ListAdsDto, UpdateAdsDto, AdsDto } from './ads.dto';
|
|
|
import { AdsService } from './ads.service';
|
|
|
import { MongoIdParamDto } from '../common/mongo-id.dto';
|
|
|
+import { AdminSecretGuard } from './admin-secret.guard';
|
|
|
+import { Public } from '../../core/auth/decorators/public.decorator';
|
|
|
|
|
|
@ApiTags('营销管理 - 广告')
|
|
|
@Controller('ads')
|
|
|
export class AdsController {
|
|
|
constructor(private readonly service: AdsService) {}
|
|
|
|
|
|
+ @Post('backfill-adid')
|
|
|
+ @Public()
|
|
|
+ @UseGuards(AdminSecretGuard)
|
|
|
+ @ApiOperation({ summary: '[TEMP] Backfill Ads.adId for existing docs' })
|
|
|
+ @ApiQuery({ name: 'batchSize', required: false, description: 'Default 200' })
|
|
|
+ async backfillAdId(@Query('batchSize') batchSize?: string) {
|
|
|
+ const size = Number(batchSize ?? 200);
|
|
|
+ const safeSize =
|
|
|
+ Number.isFinite(size) && size > 0 && size <= 1000 ? size : 200;
|
|
|
+
|
|
|
+ return this.service.backfillAdIds(safeSize);
|
|
|
+ }
|
|
|
+
|
|
|
@Post('list')
|
|
|
@ApiOperation({ summary: 'List ads (pagination + filters)' })
|
|
|
@ApiBody({ type: ListAdsDto })
|