import { Controller, Get, Param, Post, Put, Delete, Body, } from '@nestjs/common'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { SysMenuService } from '../../services/admin/sysMenu.service'; import { SysMenu } from '../../entity/sysMenu.entity'; @ApiTags('系统菜单') @Controller('adminapi/sys/menu') export class SysMenuController { constructor(private readonly sysMenuService: SysMenuService) {} @Get(':type') @ApiOperation({ summary: '获取全部菜单(按应用类型)' }) async getMenus(@Param('type') type: string): Promise { return this.sysMenuService.list(type); } @Get(':app_type/info/:menu_key') @ApiOperation({ summary: '获取菜单信息' }) getMenuInfo( @Param('app_type') appType: string, @Param('menu_key') menuKey: string, ): Promise { return this.sysMenuService.findOne(appType, menuKey); } @Post() @ApiOperation({ summary: '添加菜单' }) addMenu(@Body() payload: Partial) { return this.sysMenuService.createByKey(payload); } @Put(':app_type/:menu_key') @ApiOperation({ summary: '更新菜单' }) editMenu( @Param('app_type') appType: string, @Param('menu_key') menuKey: string, @Body() payload: Partial, ) { return this.sysMenuService.updateByKey(appType, menuKey, payload); } @Delete(':app_type/:menu_key') @ApiOperation({ summary: '删除菜单' }) deleteMenu( @Param('app_type') appType: string, @Param('menu_key') menuKey: string, ) { return this.sysMenuService.deleteByKey(appType, menuKey); } @Get('system_menu') @ApiOperation({ summary: '获取系统菜单' }) async getSystemMenu(): Promise { return this.sysMenuService.list('system'); } @Get('addon_menu/:key') @ApiOperation({ summary: '获取应用菜单' }) async getAddonMenu(@Param('key') key: string): Promise { return this.sysMenuService.list(key); } @Get('dir/:key') @ApiOperation({ summary: '获取类型为目录的菜单' }) getDirMenus(@Param('key') key: string): Promise { return this.sysMenuService.listDir(key || 'system'); } // no tree route in contract }