Files
wwjcloud-nest-v1/wwjcloud/src/common/sys/controllers/adminapi/sysMenu.controller.ts

79 lines
2.2 KiB
TypeScript
Raw Normal View History

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<SysMenu[]> {
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<SysMenu | null> {
return this.sysMenuService.findOne(appType, menuKey);
}
@Post()
@ApiOperation({ summary: '添加菜单' })
addMenu(@Body() payload: Partial<SysMenu>) {
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<SysMenu>,
) {
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<SysMenu[]> {
return this.sysMenuService.list('system');
}
@Get('addon_menu/:key')
@ApiOperation({ summary: '获取应用菜单' })
async getAddonMenu(@Param('key') key: string): Promise<SysMenu[]> {
return this.sysMenuService.list(key);
}
@Get('dir/:key')
@ApiOperation({ summary: '获取类型为目录的菜单' })
getDirMenus(@Param('key') key: string): Promise<SysMenu[]> {
return this.sysMenuService.listDir(key || 'system');
}
// no tree route in contract
}