53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
|
|
import { Controller, Get, Post, Patch, Delete, Param, Body, Query } from '@nestjs/common';
|
||
|
|
import { ApiTags, ApiBearerAuth, ApiOperation, ApiBody, ApiQuery } from '@nestjs/swagger';
|
||
|
|
import { NotificationsService } from './notifications.service';
|
||
|
|
|
||
|
|
@ApiTags('admin-notifications')
|
||
|
|
@ApiBearerAuth()
|
||
|
|
@Controller('admin-api/notifications')
|
||
|
|
export class AdminNotificationsController {
|
||
|
|
constructor(private readonly service: NotificationsService) {}
|
||
|
|
|
||
|
|
// ═══ Templates ═══
|
||
|
|
|
||
|
|
@Get('templates')
|
||
|
|
@ApiOperation({ summary: '通知模板列表' })
|
||
|
|
async getTemplates() {
|
||
|
|
return this.service.getTemplates();
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('templates')
|
||
|
|
@ApiOperation({ summary: '创建通知模板' })
|
||
|
|
@ApiBody({ schema: { type: 'object', required: ['name', 'type', 'title', 'content'], properties: {
|
||
|
|
name: { type: 'string' },
|
||
|
|
type: { type: 'string' },
|
||
|
|
title: { type: 'string' },
|
||
|
|
content: { type: 'string' },
|
||
|
|
channel: { type: 'string', enum: ['in_app', 'push', 'email'] },
|
||
|
|
} } })
|
||
|
|
async createTemplate(@Body() dto: { name: string; type: string; title: string; content: string; channel?: string }) {
|
||
|
|
return this.service.createTemplate(dto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Patch('templates/:id')
|
||
|
|
@ApiOperation({ summary: '更新通知模板' })
|
||
|
|
async updateTemplate(@Param('id') id: string, @Body() dto: Record<string, any>) {
|
||
|
|
return this.service.updateTemplate(id, dto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Delete('templates/:id')
|
||
|
|
@ApiOperation({ summary: '删除通知模板' })
|
||
|
|
async deleteTemplate(@Param('id') id: string) {
|
||
|
|
return this.service.deleteTemplate(id);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ═══ Send Log ═══
|
||
|
|
|
||
|
|
@Get('send-log')
|
||
|
|
@ApiOperation({ summary: '通知发送日志' })
|
||
|
|
@ApiQuery({ name: 'limit', required: false })
|
||
|
|
async getSendLog(@Query('limit') limit?: string) {
|
||
|
|
return this.service.getSendLogs(Number(limit) || 100);
|
||
|
|
}
|
||
|
|
}
|