Files
wwjcloud-nest-v1/wwjcloud/src/common/sys/controllers/admin/ConfigController.ts

138 lines
4.3 KiB
TypeScript
Raw Normal View History

import { Controller, Get, Post, Body, UseGuards, Req, UnauthorizedException } 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;
};
}
/**
* -
* : /admin/sys/config
*/
@ApiTags('系统配置管理')
@Controller('admin/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;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.getCopyright(siteId);
}
@Post('copyright')
@ApiOperation({ summary: '设置版权信息' })
@ApiResponse({ status: 200, description: '设置成功' })
async setCopyright(
@Body() copyrightDto: CopyrightDto,
@Req() req: AuthenticatedRequest,
) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.setCopyright(siteId, copyrightDto);
}
@Get('website')
@ApiOperation({ summary: '获取网站信息' })
@ApiResponse({ status: 200, description: '获取成功' })
async getWebSite(@Req() req: AuthenticatedRequest) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.getWebSite(siteId);
}
@Post('website')
@ApiOperation({ summary: '设置网站信息' })
@ApiResponse({ status: 200, description: '设置成功' })
async setWebSite(
@Body() websiteDto: WebSiteDto,
@Req() req: AuthenticatedRequest,
) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.setWebSite(siteId, websiteDto);
}
@Get('scene-domain')
@ApiOperation({ summary: '获取场景域名配置' })
@ApiResponse({ status: 200, description: '获取成功' })
async getSceneDomain(@Req() req: AuthenticatedRequest) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.getSceneDomain(siteId);
}
@Post('scene-domain')
@ApiOperation({ summary: '设置场景域名配置' })
@ApiResponse({ status: 200, description: '设置成功' })
async setSceneDomain(
@Body() sceneDomainDto: SceneDomainDto,
@Req() req: AuthenticatedRequest,
) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.setSceneDomain(
siteId,
sceneDomainDto,
);
}
@Get('service')
@ApiOperation({ summary: '获取服务配置' })
@ApiResponse({ status: 200, description: '获取成功' })
async getService(@Req() req: AuthenticatedRequest) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.getService(siteId);
}
@Post('service')
@ApiOperation({ summary: '设置服务配置' })
@ApiResponse({ status: 200, description: '设置成功' })
async setService(
@Body() serviceDto: ServiceDto,
@Req() req: AuthenticatedRequest,
) {
const siteId = req.user?.siteId;
if (!siteId) {
throw new UnauthorizedException('未授权访问:缺少 site_id');
}
return await this.configService.setService(siteId, serviceDto);
}
}