import { Controller, Get, Post, Body, UseGuards, Req } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; import type { Request } from 'express'; import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard'; import { RolesGuard } from '../../../auth/guards/RolesGuard'; import { Roles } from '../../../auth/decorators/RolesDecorator'; import { ConfigService } from '../../services/admin/ConfigService'; import { CopyrightDto, WebSiteDto, SceneDomainDto, ServiceDto, } from '../../dto/ConfigDto'; interface AuthenticatedRequest extends Request { user?: { uid: number; username: string; siteId: number; userType: string; }; } /** * 系统配置控制器 - 管理端 * 路由前缀: /adminapi/sys/config */ @ApiTags('系统配置管理') @Controller('adminapi/sys/config') @UseGuards(JwtAuthGuard, RolesGuard) @Roles('admin') export class ConfigController { constructor(private readonly configService: ConfigService) {} @Get('copyright') @ApiOperation({ summary: '获取版权信息' }) @ApiResponse({ status: 200, description: '获取成功' }) async getCopyright(@Req() req: AuthenticatedRequest) { const siteId = req.user?.siteId || 0; const data = await this.configService.getCopyright(siteId); return { code: 200, message: '获取成功', data, }; } @Post('copyright') @ApiOperation({ summary: '设置版权信息' }) @ApiResponse({ status: 200, description: '设置成功' }) async setCopyright( @Body() copyrightDto: CopyrightDto, @Req() req: AuthenticatedRequest, ) { const siteId = req.user?.siteId || 0; const result = await this.configService.setCopyright(siteId, copyrightDto); return { code: 200, message: '设置成功', data: result, }; } @Get('website') @ApiOperation({ summary: '获取网站信息' }) @ApiResponse({ status: 200, description: '获取成功' }) async getWebSite(@Req() req: AuthenticatedRequest) { const siteId = req.user?.siteId || 0; const data = await this.configService.getWebSite(siteId); return { code: 200, message: '获取成功', data, }; } @Post('website') @ApiOperation({ summary: '设置网站信息' }) @ApiResponse({ status: 200, description: '设置成功' }) async setWebSite( @Body() websiteDto: WebSiteDto, @Req() req: AuthenticatedRequest, ) { const siteId = req.user?.siteId || 0; const result = await this.configService.setWebSite(siteId, websiteDto); return { code: 200, message: '设置成功', data: result, }; } @Get('scene-domain') @ApiOperation({ summary: '获取场景域名配置' }) @ApiResponse({ status: 200, description: '获取成功' }) async getSceneDomain(@Req() req: AuthenticatedRequest) { const siteId = req.user?.siteId || 0; const data = await this.configService.getSceneDomain(siteId); return { code: 200, message: '获取成功', data, }; } @Post('scene-domain') @ApiOperation({ summary: '设置场景域名配置' }) @ApiResponse({ status: 200, description: '设置成功' }) async setSceneDomain( @Body() sceneDomainDto: SceneDomainDto, @Req() req: AuthenticatedRequest, ) { const siteId = req.user?.siteId || 0; const result = await this.configService.setSceneDomain( siteId, sceneDomainDto, ); return { code: 200, message: '设置成功', data: result, }; } @Get('service') @ApiOperation({ summary: '获取服务配置' }) @ApiResponse({ status: 200, description: '获取成功' }) async getService(@Req() req: AuthenticatedRequest) { const siteId = req.user?.siteId || 0; const data = await this.configService.getService(siteId); return { code: 200, message: '获取成功', data, }; } @Post('service') @ApiOperation({ summary: '设置服务配置' }) @ApiResponse({ status: 200, description: '设置成功' }) async setService( @Body() serviceDto: ServiceDto, @Req() req: AuthenticatedRequest, ) { const siteId = req.user?.siteId || 0; const result = await this.configService.setService(siteId, serviceDto); return { code: 200, message: '设置成功', data: result, }; } }